java使用web3j调用部署在以太坊上solidity编写的智
第一步:安装web3j和solidity
1. npm install -g solc
2. pom.xml文件引入依赖:
<dependency>
<groupId>org.web3j</groupId>
<artifactId>core</artifactId>
<version>3.4.0</version>
</dependency>
第二步:web3j生成java文件:
1. 下载web3j包:
https://github.com/web3j/web3j/releases
2. 进入到web3j-3.3.1/bin目录下,创建 aa.abi 和 aa.bin文件
3. 进入到cmd, 输入:
web3j solidity generate aa.bin aa.abi -o /c:/Users/ib/Desktop/web3j/web3j-3.3.1/bin -p com.your
4. 再com.your目录下会生成一个Aa.java文件,将此文件拷贝到项目中去
第三步:java使用web3j调用合约里面方法
1. 创建web3j对象:
Web3j web3j = Web3j.build(new org.web3j.protocol.http.HttpService(合约地址));
2. 获取当前gas价格:
BigInteger gasPrice = web3j.ethGasPrice().sendAsync().get().getGasPrice();
3. 设置自己的账户:
3.1 随便找个生成钱包网站,然后创建钱包,设置密码和keystore
3.2 设置keystore文件路劲:
String filePath = "keystore/keystore";
本地的话,这样设置需要将keystore存放在:/target/class/
String proPath = ResourceUtils.getURL("classpath:").getPath() + filePath;
3.3 对keystore进行操作:
Credentials credentials = WalletUtils.loadCredentials("密码",proPath.substring(1));
3.4 创建合约对象:
Aa aa= Aa.load("合约地址",web3j,credentials, gasPrice,BigInteger.valueOf(3000000));
3.5 调用合约方法:
String str= mapContract.checkAddress("1").sendAsync().get();