合约接口
获取合约Service
方法原型
public static ContractService getContractService(ProviderManager providerManager)
参数说明
参数名 | 参数描述 | |
---|---|---|
providerManager | ProviderManager | Provider管理器 |
返回值:ContractService
接口
使用示例
ProviderManager providerManager = ProviderManager.createManager(defaultHttpProvider);
ContractService contractService = ServiceManager.getContractService(providerManager);
部署合约
方法原型
Request<TxHashResponse> deploy(Transaction transaction, int... nodeIds)
参数说明
参数名 | 参数描述 | |
---|---|---|
transaction | Transaction | 部署交易 |
nodeIds | int[] | 限制请求节点id,空则为随机节点 |
返回值:绑定TxHashResponse
的Request
,调用发送接口后获取到TxHashResponse
TxHashResponse
拥有结构如下:
- txHash: 交易哈希值
使用示例
TxHashResponse txHashResponse = contractService.deploy(transaction).send();
ReceiptResponse receiptResponse = txHashResponse.polling();
System.out.println("合约地址: " + receiptResponse.getContractAddress());
说明:TxHashResponse可以获取交易的哈希值,通过polling()轮询获取交易回执Receipt
调用合约
方法原型
Request<TxHashResponse> invoke(Transaction transaction, int... nodeIds)
参数说明
参数名 | 参数描述 | |
---|---|---|
transaction | Transaction | 调用交易 |
nodeIds | int[] | 限制请求节点id,空则为随机节点 |
返回值:绑定TxHashResponse
的Request
,调用发送接口后获取到TxHashResponse
TxHashResponse
拥有结构如下:
- txHash: 交易哈希值
使用示例
TxHashResponse txHashResponse = contractService.invoke(transaction1).send();
ReceiptResponse receiptResponse = txHashResponse.polling();
System.out.println("调用返回(未解码): " + receiptResponse.getRet());
System.out.println("调用返回(解码):" + Decoder.decodeHVM(receiptResponse.getRet(), String.class));
说明:TxHashResponse可以获取交易的哈希值,通过polling()轮询获取交易回执Receipt
查询回执
方法原型
Request<ReceiptResponse> getReceipt(String txHash, int... nodeIds)
参数说明
参数名 | 参数描述 | |
---|---|---|
txHash | String | 交易哈希 |
nodeIds | int[] | 限制请求节点id,空则为随机节点 |
返回值:绑定ReceiptResponse
的Request
,调用发送接口后获取到ReceiptResponse
TxHashResponse
拥有结构如下:
- txHash: 交易哈希值
- ret: 交易执行结果
- log: 交易日志
- VMType: 虚拟机类型
- gasUsed: 消耗的
gas
使用示例
TxHashResponse txHashResponse = contractService.invoke(transaction1).send();
ReceiptResponse receiptResponse1 = txHashResponse.polling(); // 获取回执方式1
ReceiptResponse receiptResponse2 = contractService.getReceipt(txHashResponse.getTxHash()); // 获取回执方式1
System.out.println("调用返回(未解码): " + receiptResponse2.getRet());
System.out.println("调用返回(解码):" + Decoder.decodeHVM(receiptResponse2.getRet(), String.class));
说明:获取回执可以通过TxHashResponse获取的txHash值调用接口获取,也可以TxHashResponse的polling()函数轮询获取交易回执Receipt