【区块链】以太坊 web3j for java 使用 - 部署和调用合约 - Go语言中文社区

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


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();
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/loy_184548/article/details/78668180
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-05-07 22:01:49
  • 阅读 ( 2548 )
  • 分类:区块链

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢