web3j 部署合约


环境:mac os & android studio

官网:here

以太坊 web3j for java 配置和使用<1>: here

以太坊 web3j for java 使用 - 为用户创建凭证credentials <2>:here

零、书写合约

本文还是使用MetaCoin.sol

pragma solidity ^0.4.2;contract MetaCoin {mapping (address => uint) balances;event Transfer(address indexed _from, address indexed _to, uint256 _value);function MetaCoin() {balances[tx.origin] = 10000;}function sendCoin(address receiver, uint amount) returns(bool sufficient) {if (balances[msg.sender] < amount) return false;balances[msg.sender] -= amount;balances[receiver] += amount;Transfer(msg.sender, receiver, amount);return true;}function getBalance(address addr) returns(uint) {return balances[addr];}
}

一、编译合约

solc <contract>.sol --bin --abi --optimize -o <output-dir>/

====>生产 .abi 和 .bin 文件

例如,在MetaCoin.sol文件目录下输入:
solc MetaCoin.sol --bin --abi --optimize -o /Users/pro/Desktop

二、生成 .java文件

web3j solidity generate [--javaTypes|--solidityTypes] /path/to/<smart-contract>.bin /path/to/<smart-contract>.abi -o /path/to/src/main/java -p com.your.organisation.name

例如:

然后将生成的 .java文件导入到安卓项目中。

三、部署合约

YourSmartContract contract = YourSmartContract.deploy(<web3j>, <credentials>, GAS_PRICE, GAS_LIMIT,[<initialValue>,]<param1>, ..., <paramN>).send();

例如:

MetaCoin contract = MetaCoin.deploy(web3, credentials, GAS_PRICE, GAS_LIMIT).send();
System.out.println(contract.getContractAddress());

或者可以加载已经部署在私有链上面的合约:

YourSmartContract contract = YourSmartContract.load("0x<address>|<ensName>", web3j, credentials, GAS_PRICE, GAS_LIMIT);

例如:

AllBikeShared contract = AllBikeShared.load("0x055a864a5f39f9eecd17e729e2cfc4fb6b12c19b", web3, credentials, GAS_PRICE, GAS_LIMIT);

四、调用合约

1.call 的方式,不改变智能合约的状态

    Type result = contract.someMethod(<param1>, ...).send();

例如:

    BigInteger result = contract.getUserCount().send();

【区块链】以太坊 web3j for java 使用 - 部署和调用合约 3相关推荐

  1. 带你玩转区块链--以太坊基础、发币、基于智能合约实现彩票项目-第二章-第一节【以太坊篇】

    意义: 在上一节知识学习中,我们已经了解如何实现一个基础区块链,并重构了BTC关键代码.对比传统的中心化项目,区块链项目拥有很多优势,如:追溯性.不可传篡改性.在中心化项目中的网络协议是:[数据层-- ...

  2. 【区块链】以太坊 web3j for java 配置和使用 1

    以太坊 web3j for java 配置和使用 <1> 官网:here 环境: mac & android studio 一. 导入包 在app/build.gradle中:co ...

  3. 8支团队正在努力构建下一代区块链以太坊Ethereum 2.0

    2019独角兽企业重金招聘Python工程师标准>>> "我们不想在构建 Ethereum 2.0时重新造轮子." 谈到开发人员为 Ethereum 区块链进行两 ...

  4. 可编程区块链以太坊的未来

    区块链的火热就不用说了,回看一下Vinay Gupta 2015年发表的文章<内容可编程的区块链:以太坊的未来>,感受一下先行者的思想. 到本文结束时,你将了解一般的区块链(特别是下一代区 ...

  5. 回看2015年是如何描述区块链以太坊的未来

    区块链的火热就不用说了,回看一下Vinay Gupta 2015年发表的文章<内容可编程的区块链:以太坊的未来>,感受一下先行者的思想. 到本文结束时,你将了解一般的区块链(特别是下一代区 ...

  6. 回望Vinay2015年的文章:内容可编程的区块链——以太坊的未来

    2019独角兽企业重金招聘Python工程师标准>>> 区块链的火热就不用说了,回看一下Vinay Gupta 2015年发表的文章<内容可编程的区块链:以太坊的未来>, ...

  7. 上下文可编程区块链——以太坊的未来

    区块链的火热就不用说了,回看一下Vinay Gupta 2015年发表的文章<内容可编程的区块链:以太坊的未来>,感受一下先行者的思想. 到本文结束时,你将了解一般的区块链(特别是下一代区 ...

  8. 【区块链-以太坊】5 Ubuntu下truffle ganache安装及使用

    [区块链-以太坊]5 Ubuntu下truffle & ganache安装及使用 1 truffle安装 1)输入sudo npm install -g truffle 2)将truffle复 ...

  9. 区块链-以太坊学习资料汇总

    最近一段时间以来,对区块链的底层研究和基于区块链的应用开发已经越来越火热了.机缘巧合,目前我也在进行区块链方面的开发,在之后的博客中,我会和大家一起分享区块链开发中的酸甜苦辣.今天我先来对收藏区块链- ...

最新文章

  1. python趣味编程10例-达人迷 Python趣味编程10例
  2. 数字转化成时分秒(二)
  3. Airflow的SimpleHttpOperator不支持https问题解决
  4. postfix文档修正
  5. ps -ef 两个pid_ps -ef 与 aux
  6. DM6467T开发板领航——开发环境
  7. GRIB格式转换心得(转自博客:http://windforestwing.blog.163.com/blog/static/19545412007103084743804/)...
  8. 【CAD技巧】CAD字体文字乱码(回复“CAD字体大全”)
  9. 2018最新的Java黑马视频教程,包含十次方和乐优商城项目
  10. 久处不厌,闲谈不烦。从不敷衍,绝不怠慢
  11. 熔断机制什么意思_熔断机制是什么意思
  12. IR PC IP 之义
  13. 2021年安全员-B证最新解析及安全员-B证考试平台
  14. 用HTML+CSS+JS制作一个让女朋友无法抗拒的表白烟花网站
  15. 错误: 找不到符号 符号: 类 DaggerActivityComponent错误解决
  16. 微机原理知识点总结9(8255A+8251A)
  17. 微信小程序(三)分类界面
  18. 2023电工杯数学建模A题思路
  19. android 手电筒开关,Android实现手电筒电源键关闭功能
  20. 【计算机网络:自顶向下方法】期末复习总结(USTC 2020秋 zq班)

热门文章

  1. STM32F103ZET6驱动TOF250激光测距传感器
  2. SQL Server研习录(23)——RAISERROR()函数
  3. WPF限制文本框只能输入数字
  4. Synergy安装及生成密钥破解
  5. 线性规划部分概念及重要性质(运筹学导论笔记)
  6. java华南理工大学出版_Java程序设计实验实训教程
  7. java实现军旗游戏(附完整源码)
  8. 一网友在上海的感受,太惊人的了,也太现实了,不得不看......
  9. iptables目标TEE
  10. QTableWidget内存释放问题