zoukankan      html  css  js  c++  java
  • 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 .	okenExchange.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

  • 相关阅读:
    vim/vi——\n只能被替换或删除 \r只能用来插入或替换
    程序算法与人生选择【转】
    【R】大型机Linux系统安装R及bsub提交R任务
    Mothur 命令手册Mothur命令中文解释(一)
    集群与分布式的区别
    【R】Linux安装R语言包(Installing R packages on Linux)
    Android TableLayout 常用的属性介绍及演示
    handler.obtainMessage()理解
    利用sax处理xml(推荐)
    Android 的权限设置大全3
  • 原文地址:https://www.cnblogs.com/cxygg/p/11507354.html
Copyright © 2011-2022 走看看