2017-07-19 4 views
0

go-ethereumライブラリを使用してモバイル(アンドロイド)経由でスマートな契約を交わそうとしています。Go-Ethereum:Android Smart Contract Interactionの問題

アンドロイド

final String address_string = "0x8607e627604495ae9812c22bb1c98bdcba581978"; 
String abi = "[{\"constant\":false,\"inputs\":[],\"name\":\"get_s\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"new_s\",\"type\":\"string\"}],\"name\":\"set_s\",\"outputs\":[],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"d_s\",\"type\":\"string\"}],\"payable\":false,\"type\":\"constructor\"}]"; 
Address address = Geth.newAddressFromHex(address_string); 
BoundContract contract = Geth.bindContract(address, abi, ec); 
CallOpts callOpts = Geth.newCallOpts(); 
callOpts.setContext(ctx); 
callOpts.setGasLimit(31500); 
System.out.println("OUTPUT: " + getString(contract, callOpts)); 

//Setter String to Test Contract 
Interfaces params = Geth.newInterfaces(1); 
Interface anInterface = Geth.newInterface(); 
anInterface.setString(teststring); 
params.set(0,anInterface); 
return contract.transact(opts, "set_s", params); 

//Getter String from Test Contract 
Interfaces args = Geth.newInterfaces(0); 
Interfaces results = Geth.newInterfaces(1); 
Interface result = Geth.newInterface(); 
result.setDefaultString(); 
results.set(0, result); 
contract.call(opts, results, "get_s", args); 
String string = results.get(0).getString(); 
return string; 

契約Rinkebyのblockchainに展開スマート契約に

pragma solidity ^0.4.9; 

contract echo { 
    string s; 

    function echo(string d_s) { 
      s = d_s; 
    } 

    function set_s(string new_s) { 
      s = new_s; 
    } 

    function get_s() returns (string) { 
      return s; 
    } 
} 

期待される動作

成功の相互作用。 (契約上の)セッターについては

実際の行動

: 'ABI:引数として文字列型としてスライスを使用することはできません'(契約上の)ゲッターについて

を: 「ABI:することはできませんアンマーシャリング文字列[]インターフェイス{}」の挙動を再現する

ステップ

1で。)モバイル経由スマート契約/ wをやり取りするようにしてください)デスクトップ

4を介してスマート契約を配備)携帯

3を介してアカウントを作成します)モバイル

2を介してRinkeby Testnetへの接続誰が行く-イーサリアムアンドロイドを通じてスマート契約と対話することができた場合

ボトムライン

、 私はいくつかのassistancをお願い申し上げますe。

答えて