java使用web3j调用部署在以太坊上solidity编写的智

2019-02-21  本文已影响0人  小吖么小一郎

第一步:安装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();

上一篇下一篇

猜你喜欢

热点阅读