智能合约封装包

优质
小牛编辑
130浏览
2023-12-01

智能合约封装包

web3j支持java从ABI文件中自动生成智能合约函数封装包。

web3j还可以使用命令行工具来生成智能合约函数封装包:

$ web3j solidity generate [--javaTypes|--solidityTypes] /path/to/<smart-contract>.bin /path/to/<smart-contract>.abi -o /path/to/src/main/java -p com.your.organisation.name

在web3j的3.x之前的版本中,生成的智能合约封装包使用原生Solidity类型。从web3j 3.x开始,默认会采用Java类型。可以使用–solidityTypes命令行参数创建solidity类型。

还可以通过直接调用Java类来生成封装包:

org.web3j.codegen.SolidityFunctionWrapperGenerator /path/to/<smart-contract>.bin /path/to/<smart-contract>.abi -o /path/to/src/main/java -p com.your.organisation.name

其中bin和abi是根据本文中编译solidity源代码章节的方法获得的。

在应用程序二进制接口ABI的官方文档中详细说明了原生Java到solidity类型如何转换。

智能合约封装包支持所有与智能合约一起工作的通用操作:

  • 构建与部署
  • 调用交易和事件
  • 调用参数方法
  • 确定合约有效性

任何需要底层JSON-RPC调用的方法调用都会有一个返回以避免阻塞。

web3还支持通过命令行工具直接从Tunffle的合约模式生成Java智能合约功能封装包。

$ web3j truffle generate [--javaTypes|--solidityTypes] /path/to/<truffle-smart-contract-output>.json -o /path/to/src/main/java -p com.your.organisation.name

这也可以通过调用Java类来调用:

org.web3j.codegen.TruffleJsonFunctionWrapperGenerator /path/to/<truffle-smart-contract-output>.json -o /path/to/src/main/java -p com.your.organisation.name

以这种方式生成的"增强型"的封装包会暴露合约的每个网络部署地址。这些地址来自于发布Truffle部署时的封装包。