java 调用区块链 发布和调用智能合约

java连接区块链 很简单 ,调用智能合约要麻烦一些.

 

 

先说连接 区块链查询数据. 

1 maven 项目导入 web3j 的依赖.

 

	<dependency>
		    <groupId>org.web3j</groupId>
		    <artifactId>core</artifactId>
		    <version>4.5.0</version>
		</dependency>

  

2 需要 链上开启 rpc 端口 . 不开启 本地可以通过 指定  geth.ipc 连接. 

package com.cxygg.testweb3j;

import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameterName;
import org.web3j.protocol.core.methods.response.EthGetBalance;
import org.web3j.protocol.http.HttpService;
import org.web3j.utils.Convert;

public class Web3jDemo2 {

	private static final String RPC_URL = "http://192.168.1.199:9001";
	private static final Web3j web3j = Web3j.build(new HttpService(RPC_URL));

	public static void main(String[] args) throws Exception {

		getAge();

	}

	public static void getAge() throws Exception {
		// 这里要填写真实的钱包地址
		EthGetBalance ethGetBalance = web3j
				.ethGetBalance("0xbcbbd4e9bbf41a149652da55c42a4b28b6e39599", DefaultBlockParameterName.LATEST).send();

		if (ethGetBalance != null) {
			System.out.println("余额:" + Convert.fromWei(ethGetBalance.getBalance().toString(), Convert.Unit.ETHER));
		}

	}

}

  

 

 

 

 

 

发布和调用智能合约部分

 

调用智能合约通过 abi 文件  和  合约二进制文件生成 java的 代理类,然后调用。

 

truffle   和 zeppelin-solidity  的使用

truffle是一个基于Javascript开发的一套智能合约开发框架,使用Solidity语言编写合约。truffle有一套自动的项目构建机制

 

1 安装  npm 

  brew install npm 

2 安装 truffle   

   npm install -g truffle

 

3 下载 zeppelin-solidity 包

   npm install zeppelin-solidity

 

4 编写合约

   建立项目 truffle unbox 项目名  ,编写合约

  

 

5 得到bin 文件和 abi 文件。

 

 

6 使用 bin文件 和 abi 文件生成Java 对象.(  需要安装 web3j )

web3j solidity generate -b <编译的bin文件地址> -a <编译的abi文件地址> -o <输出目录> -p <java包名>
   web3j solidity generate -b ./tokenExchange.bin -a .\tokenExchange.abi -o ./ -p data

 

 

生成了 Java对象 ,结合  Web3j  就可以发布合约和调用合约了。  

 

 

 

备注:我使用的版本: 版本不同可能有奇怪的问题

appledeMacBook-Pro:~ apple$ truffle version

Truffle v5.0.36 (core: 5.0.36)

Solidity v0.5.8 (solc-js)

Node v12.10.0

Web3.js v1.2.1

posted on 2019-09-11 17:08  zhangyukun  阅读(4074)  评论(0编辑  收藏  举报

导航