赞
踩
本文章讲述了如何在合约已经部署并且能拿到合约abi文件的情况下,用java代码去进行调用合约
- <dependency>
- <groupId>org.web3j</groupId>
- <artifactId>core</artifactId>
- <version>${web3j.version}</version>
- </dependency>
- <build>
- <plugins>
- <plugin>
- <groupId>org.web3j</groupId>
- <artifactId>web3j-maven-plugin</artifactId>
- <version>4.8.7</version>
- <configuration>
- <packageName>bandex.exchange.entity</packageName>
- <nativeJavaType>true</nativeJavaType>
- <outputFormat>java</outputFormat>
- <abiSourceFiles>
- <directory>src/main/java/bandex/exchange</directory>
- <includes>
- <include>CowbitDex.json</include>
- </includes>
- </abiSourceFiles>
- <outputDirectory>
- <java>src/main/java</java>
- </outputDirectory>
- </configuration>
- </plugin>
- </plugins>
- </build>
然后我们来讲下上面的各个参数所对应的含义
packageName 对应的是生成文件后java文件存放的包名,就是类的包名
nativeJavaType 对应的是本机类型是否是JAVA类型
outputFormat 对应的是生成文件后的文件类型
abiSourceFiles
directory 对应的是生成java文件的所需abi的目录
include 对应的abi的文件名
outputDirectory 对应的是java文件生成后存放的路径
以上做完后 就可以通过插件生成一个java文件了,这个文件就是跟合约对接的关键文件
首先我们需要将生成的这个java类通过下面的方法进行实例化
- // webUrl 参数是节点路径 这个可以通过infura去创建账号并生成自己的节点获取路径
- // https://infura.io/ infura官网 如果不会的可以百度去查询下教程
- Web3j web3j = Web3j.build(new HttpService(webUrl));
- // 创建证书 operatePrivateKey 操作合约者的私钥 填写了这个私钥后 后面对合约的相关操作 产生的费用都由这个地址来承担 一般都是设置为合约的部署者
- Credentials credentials = Credentials.create(operatePrivateKey);
- // contractAddress 参数就是我们部署的合约地址
- CowbitDex cowbitDex = CowbitDex.load(contractAddress,web3j,credentials,new DefaultGasProvider());
实例完之后 就可以直接使用cowbitDex这个类进行调用合约了,合约所定义的方法和事件都能在这个类里面能调用到
以上就是java对接合约的详细过程,如果有什么问题可以在文章下留言.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。