建设和部署

本文介绍了如何使用Web3j构建和部署智能合约,包括使用deploy方法创建新实例和加载已有合约地址。Web3j提供了Solidity智能合约包装器,简化了与合约的交互。此外,还详细阐述了如何通过命令行工具生成Java智能合约函数包装器,并支持从Truffle合约输出生成包装器。智能合约包装器支持事务调用、常量方法调用以及事件处理,所有底层RPC调用返回Future以避免阻塞。
摘要由CSDN通过智能技术生成

建设和部署¶
使用deploy方法构建和部署智能合约:

YourSmartContract contract = YourSmartContract.deploy(
        <web3j>, <credentials>, GAS_PRICE, GAS_LIMIT,
        [<initialValue>,]
        <param1>, ..., <paramN>).send();

这将使用提供的凭证和构造函数参数值在以太坊区块链上创建智能合约的新实例。

参数仅在您的智能合约在构建时接受 Ether 时才需要。这需要在合同中出现Solidity应付修改器。

它返回一个新的智能合约包装实例,其中包含智能合约的底层地址。如果您希望使用现有智能合约构建智能合约包装器的实例,只需传入它的地址:

YourSmartContract contract = YourSmartContract.load(
        "0x<address>|<ensName>", web3j, credentials, GAS_PRICE, GAS_LIMIT);

部署智能合约并与之交互¶
如果您想避免使用智能合约的底层实现细节,Web3j 提供了 Solidity智能合约包装器,使您能够通过生成的包装器对象直接与智能合约的所有方法进行交互。

或者,如果您希望发送常规交易或更好地控制您与智能合约的交互,请参阅Solidity 智能合约包装器、与智能合约进行交易和查询智能合约状态以了解详细信息。

Solidity 智能合约包装器¶
Web3j 支持从 Solidity ABI 文件自动生成 Java 中的智能合约函数包装器。

Web3j命令行工具工具附带一个命令行实用程序,用于生成智能合约函数包装器:

$ web3j generate solidity [-hV] [-jt] [-st] -a=<abiFile> [-b=<binFile>] -o=<destinationFileDir> -p=<packageName>

   -h, --help                        Show this help message and exit.
   -V, --version                     Print version information and exit.
   -jt, --javaTypes                  use native java types. Default: true
   -st, --solidityTypes              use solidity types.
   -a, --abiFile=<abiFile>           abi file with contract definition.
   -b, --binFile=<binFile>           optional bin file with contract compiled code in order to generate deploy methods.
   -o, --outputDir=<destinationFileDir> destination base directory.
   -p, --package=<packageName>       base package name.

是合同有效性所必需的

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

从 Web3j 版本 4.6.x 开始,生成器支持 ABIv2 用于使用 Solidity 编译器版本 0.6.x 编译的合约。这意味着您可以在智能合约中将结构作为输入/输出/事件参数。

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

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

根据编译 Solidity 源代码获得bin和abi的位置

使用的本机 Java 到 Solidity 类型转换在应用程序二进制接口部分中有详细说明。

智能合约包装器支持使用智能合约的所有常见操作:

建设和部署
调用事务和事件
调用常量方法
合同有效期
任何需要进行底层 JSON-RPC 调用的方法调用都将返回 Future 以避免阻塞。

Web3j 还支持通过命令行工具实用程序直接从Truffle 的 Contract Schema生成 Java 智能合约函数包装器。

$ web3j generate truffle [--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

以这种方式生成的包装器被“增强”以公开合约的每个网络部署的地址。这些地址来自生成包装器时的松露部署。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值