2

我的坚固合同如下:

contract SimpleStorage {
uint storedData;

function set(uint x) {
    storedData = x;
}

function get() constant returns (uint retVal) {
    return storedData;
}}

并生成 abi 如下:

[ { "constant": false, "inputs": [ { "name": "x", "type": "uint256" } ], "name": "set", "outputs": [], "type": "function" }, { "constant": true, "inputs": [], "name": "get", "outputs": [ { "name": "retVal", "type": "uint256", "value": "0" } ], "type": "function" } ]

并被https://github.com/ethereum/wiki/wiki/JSON-RPC引用,

如何 使用java(不是js)调用get函数并获取值?

4

2 回答 2

2

web3j非常适合这个用例。它从 Solidity 编译的二进制和 ABI 文件生成 Java 中的智能合约包装器。

使用 web3j 生成包装器代码后,您将能够部署,然后调用上述合约示例中的方法,如下所示:

SimpleStorage simpleStorage = SimpleStorage.deploy(
    <web3j>, <credentials>, GAS_PRICE, GAS_LIMIT,
    BigInteger.ZERO);  // ether value of contract

TransactionReceipt transactionReceipt = simpleStorage.set(
        new Uint256(BigInteger.valueOf(1000))),
        .get();

Uint256 result = simpleStorage.get()
        .get();

注意:额外get()是因为 web3j 在与以太坊客户端交互时返回 Java Futures。

有关更多信息,请参阅文档

于 2016-11-19T05:18:24.700 回答
0

这是Java中的一个例子(在Spring Boot下)祝你好运 http://blockchainers.org/index.php/2016/09/22/static-type-safety-for-dapps-without-javascript/

于 2016-10-06T15:14:45.303 回答