元宇宙是上层建筑,Web3.0是基础设施,元宇宙和Web3.0均代表互联网的未来,Web3.0是技术发展方向的未来,元宇宙是应用场景和生活方式的未来,二者之间是相辅相成、一体两面的依存关系。Web3.0技术方向包含了区块链、人工智能、大数据等技术创新和DAO(即用户共识社区)网络组织模式创新。在元宇宙中,AR/VR解决元宇宙前端的技术需要,而Web3.0在后端提供强有力的技术支撑。
使用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[-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的位置