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 が Ethereum クライアントと対話するときに 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 に答える