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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM