调用chain33 rpc接口的java客户端;
放弃原有sdk的alibaba.fastjson, 改用google.gson;
在获取大量区块的时候性能提升了几倍;
代码优化.
注:本项目仅为学习和参考需要, 不涉及任何商业目的, 作者不承担代码使用后风险.
1.添加依赖
<dependency>
<groupId>cn.chain33</groupId>
<artifactId>rpc-client</artifactId>
<version>1.1.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
如果直接使用jar包,需要自己导入依赖的包
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
2.使用RpcClient调用接口
初始化,设置Ip端口
RpcClient client = new RpcClient("x.x.x.x",8801);
调用接口
client.接口();
下面罗列的是java sdk提供的接口,具体调用可以参考测试代码里的例子
- isSync() 查询节点同步状态
- submitTransaction(txhash) 提交交易
- queryTransaction(txhash) 根据哈希查询交易信息
- getTxByHashes(hashlist) 根据哈希数组批量获取交易信息
- getHexTxByHash(hash) 根据哈希获取交易的hex字符串
- getBlocks(start,end,isdetail) 获取区间区块
- getLastHeader() 获取最新的区块头
- getHeaders(start,end,isdetail) 获取区间区块头
- getBlockHash(height) 获取区块的 hash 值
- getBlockOverview(hash) 获取区块的详细信息
- getPeerInfo() 获取远程节点列表
- getTxByHashes() 根据哈希数组批量获取交易信息
- getWalletStatus() 获取钱包状态
- lock() 钱包上锁
- unlock(passwd,walletorticket,timeout) 钱包解锁
- newAccount(label) 创建账户
- seedGen() 生成随机的seed
- seedSave(seed,password) 保存seed并用密码加密
- seedGet(passwd) 通过钱包密码获取钱包的seed原文
- setlabel(addr,label) 设置标签
- getAccountList() 获取账户列表
- createRawTokenPreCreateTx(参数) 生成预创建token的交易
- createRawTokenFinishTx(参数) 生成完成创建token 的交易(未签名)
- createRawTransaction(参数) 构造交易
- signRawTx(参数) 交易签名
- getTokenBalance(参数) 查询地址token余额
- getTxByAddr(参数) 根据地址获取交易信息
- queryCreateTokens(参数) 查询token列表
- queryAccountBalance(参数) 查询地址下的token/trace合约下的token资产
- queryBtyBalance(参数) 查询bty余额
- submitRawTransaction(参数) 发送签名后的交易
- sendToAddress(参数) 交易
- createTransaction(参数) 创建合约交易
- CreateNoBalanceTransaction(参数) 创建代扣手续费合约交易
- convertExectoAddr(参数) 将合约地址转换为实际地址
- importPrivkey(参数) 导入私钥