当前位置: 首页 > news >正文

遵义做网站的网络公司asp网站建设运用的技术

遵义做网站的网络公司,asp网站建设运用的技术,品牌的五个维度分析,网站建设德语目录 一、什么是solanaj? 二、Pom依赖 三、主要类 3.1 RpcClient 3.2 PublicKey 3.3 Transaction 3.4 TransactionInstruction 四、示例代码 Welcome to Code Blocks blog 本篇文章主要介绍了 [小试牛刀-SpringBoot集成SOL链] ❤博主广交技术好友,喜欢文章的…

目录

一、什么是solanaj?

二、Pom依赖

三、主要类

3.1 RpcClient

3.2 PublicKey

3.3 Transaction

3.4 TransactionInstruction

四、示例代码


Welcome to Code Block's blog

本篇文章主要介绍了

[小试牛刀-SpringBoot集成SOL链]
❤博主广交技术好友,喜欢文章的可以关注一下❤

一、什么是solanaj?

        Solanaj 是一个用于与 Solana 区块链交互的 Java 库。它为 Java 开发者提供了一套功能丰富的 API,使得在 Java 环境中可以轻松构建与 Solana 区块链交互的应用程序,例如钱包、交易、账户管理以及智能合约调用等功能。

二、Pom依赖

        solanaj可以很方便的通过pom文件进行导入,这样我们就可以将其集成到Spring/Boot程序中了.Pom依赖如下:

    <dependency><groupId>com.mmorrell</groupId><artifactId>solanaj</artifactId><version>1.19.2</version></dependency>

三、主要类

3.1 RpcClient

        RpcClient为调用节点的主要类,该节点在创建时需要设置是在主网、测试网、开发网进行调用,创建方法如下:

RpcClient client = new RpcClient("https://palpable-fittest-shadow.solana-devnet.quiknode.pro/ce7fe4c5d9d1dd80eb5aafa6a965af0957526ad4");

 使用client.getApi()可以快速的调用相关远程方法,主要使用sendTransaction()向节点发送事务方法.使用方法如下:

String tx = client.getApi().sendTransaction(transaction, sendWallet);

3.2 PublicKey

        在 Solanaj 中,PublicKey 类是一个核心类,用于表示 Solana 区块链中的公钥。公钥是 Solana 系统中的一个基础元素,用于标识账户、程序以及其他资源。主要用法如下:

PublicKey destWallet=new PublicKey("B2NmFbKEvEc8nZXzYdCnkrWKXQuTSr6GmWt8jPeaX2zf");

在上述代码中,功能为将字符串地址转换为在代码中可用的公钥账户类.

        PublicKey destAccount = PublicKey.findProgramAddress(Arrays.asList(destWallet.toByteArray(), TokenProgram.PROGRAM_ID.toByteArray(), mintKey.toByteArray()),AssociatedTokenProgram.PROGRAM_ID).getAddress();

在上述代码中,findProgramAddress为查找PDA账户的功能,但上述为特殊的PDA账户,该账户根据官方的ATA账户计算方法生成,所以生成的账户为一个ATA账户.该账户用于存储非原生的代币。

注:ATA账户={
        seeds={拥有者地址,TokenProgram地址,铸造地址},
        AssociatedTokenProgram地址
}

3.3 Transaction

        Transaction为调用时的发送对象,该类可理解为操作的集合,该类中主要有三部分,即:

TransactionInstruction:一个或多个,每个TransactionInstruction为一个操作,可使用addInstruction进行添加.

transaction.addInstruction(transactionInstruction);

sign签名:一个或多个,该签名数量需要看资源变动的主体是否需要多个签名.可使用以下方法添加:

transaction.sign();

RecentBlockHash:最近的的区块hash.该设置为了保证链上数据的有效性.可以使用以下方法添加:

transaction.setRecentBlockHash();

3.4 TransactionInstruction

TransactionInstruction为一个单独的链上操作.其结构如下:

    private final PublicKey programId; //调用的programIdprivate final List<AccountMeta> keys; //需要的Accountprivate final byte[] data;  //数据

可通过查阅官方programId和调用参数等进行功能调用.也可以通过以下已封装的类进行合约调用:

SystemProgram:该类可以方便的生成与原生代币有关的TransactionInstruction,如:要实现转移SOL操作可以用以下实现:

TransactionInstruction transactionInstruction = SystemProgram.transfer(account.getPublicKey(),//源地址new PublicKey("B2NmFbKEvEc8nZXzYdCnkrWKXQuTSr6GmWt8jPeaX2zf"), //目的地址1000000); //数量

TokenProgram:该类可以方便生成与非原生代币(自定义)有关的TransactionInstruction,如:要转移自定义的代币可以用以下实现:

        TransactionInstruction transactionInstruction = TokenProgram.transfer(sendAccount, //发送方 destAccount, //接收方10000000,  //数量sendWallet.getPublicKey() //发送者);

注:这里的sendAccount为ATA账户,因为非原生代币只能通过ATA Account接收。

四、示例代码

使用以下代码实现从非原生代币到B2NmFbKEvEc8nZXzYdCnkrWKXQuTSr6GmWt8jPeaX2zf的转移操作:

       String privateKey="私钥";//代币mint地址PublicKey mintKey=new PublicKey("3ufbMZs57L1qfNPXTR6Nn7WA5pDzPEaLzcFo1aUpj6KE");//接收方地址PublicKey destWallet=new PublicKey("B2NmFbKEvEc8nZXzYdCnkrWKXQuTSr6GmWt8jPeaX2zf");//发送方地址Account sendWallet = Account.fromBase58PrivateKey(privateKey);//如果接收方没有ATA账号,创建ATA账号TransactionInstruction idempotent = AssociatedTokenProgram.createIdempotent(sendWallet.getPublicKey(),destWallet,mintKey);//---------------------计算ATA账号地址---------------------List<byte[]> seeds=new ArrayList<>();seeds.add(sendWallet.getPublicKey().toByteArray());seeds.add(TokenProgram.PROGRAM_ID.toByteArray());seeds.add(mintKey.toByteArray());PublicKey sendAccount = PublicKey.findProgramAddress(seeds,AssociatedTokenProgram.PROGRAM_ID).getAddress();PublicKey destAccount = PublicKey.findProgramAddress(Arrays.asList(destWallet.toByteArray(), TokenProgram.PROGRAM_ID.toByteArray(), mintKey.toByteArray()),AssociatedTokenProgram.PROGRAM_ID).getAddress();//--------------------------------------------------//获取TransactionInstructionTransactionInstruction transactionInstruction =TokenProgram.transfer(sendAccount,destAccount,10000000,sendWallet.getPublicKey());//添加到TransactionTransaction transaction=new Transaction();transaction.addInstruction(idempotent);transaction.addInstruction(transactionInstruction);//初始化调用环境RpcClient client = new RpcClient("https://palpable-fittest-shadow.solana-devnet.quiknode.pro/ce7fe4c5d9d1dd80eb5aafa6a965af0957526ad4");//发送调用并且进行签名String tx = client.getApi().sendTransaction(transaction, sendWallet);System.err.println(tx);

 社区:区块链社区


 相关推荐:

  • 小试牛刀-SOL链swap程序

  • 小试牛刀-SOL链创建Token

  • 小试牛刀-区块链Solana多签账户


在实验环境下进行,不涉及任何投资方面的建议~

感谢您的关注和收藏!!!!!! 

http://www.yayakq.cn/news/905205/

相关文章:

  • 建设银行长春网站商业论坛网
  • 甘肃省建设厅执业资格注册网站dw做网站环境配置
  • 不用服务器做视频网站吗电信cn2线路
  • 网络营销效果好的网站书籍类wordpress主题
  • 正规的高端网站制作公司山东平台网站建设方案
  • 深圳建站公司兴田德润官网多少制作一个网站需要多少小时
  • 网站设计一个月多少钱汽车网站排行榜前十名
  • 团购网站单页模板wordpress xmlrpc api
  • 网站一直百度上搜不到是怎么回事啊杭州建筑设计公司排名
  • 网站如何快速备案ppt模板免费素材
  • 北京网站优化推广收集wordpress 无边栏 模板
  • 网站建设 推广人员网站制作软件排行榜
  • 创建个人网站多少钱网页美工设计培训学校哪家好
  • 深圳的网站建设公司有哪些网站建设的六个步骤
  • 网站建设系统课程暴雪要倒闭了
  • 网站开发费用算无形资产么和县网站建设
  • 网站网页设计的意义国家开放大学网站的作业怎么做
  • 有没有做网站的博士专业wordpress 教育 主题
  • pc端网站开发总结软件开发全过程
  • 网站开发需要网站备案格式
  • 购买了网站空间如何进入河北沧州市网络公司
  • 重庆网站APP中医诊所引流推广方法
  • 技术支持海安网站建设网站推广书
  • 网站进度条什么是电商?电商怎么做
  • 网站如何做ins链接分享综合购物网站建站
  • 2017自己做网站的趋势重庆app软件制作公司
  • 中英切换的网站咋做统一开发平台
  • 建设一个网站首先需要什么问题企业门户网站开发
  • 手机免费自助建站系统做彩票网站能挣到钱吗?
  • 网站工作沟通及建设win10 wordpress安装教程视频