1

イーサリアムのスマートコントラクトを勉強しています。Mist ブラウザーを介してグリーター コントラクトを展開したところ、Mist でうまく機能しました。

そこで、デプロイされたグリーター コントラクトを使用してシンプルな Dapp を作成したいと思います。

Solidity での私の契約コード:

contract mortal {
  address owner;
  function mortal() { owner = msg.sender; }
  function kill() { if (msg.sender == owner) suicide(owner); }
}

contract greeter is mortal {
  string greeting;

  function greeter(string _greeting) public {
    greeting = _greeting;
  }

  function greet() constant returns (string) {
    return greeting;
  }

  function changeMsg(string msg) {
    greeting = msg;
  }
}

Javascript での私の Dapp コード:

_connect() {

  /* ... */

  contract = web3.eth.contract(CONTRACT_ABI);
  instance = contract.at(CONTRACT_ADDRESS);

}

_greet() {
  console.log(instance.greet());
}

_changeMsg(msg) {
  console.log(instance.changeMsg(msg));
}

_greet() 関数はうまく機能し、挨拶メッセージを返します。

ただし、_changeMsg() 関数は 16 進文字列のみを返します。_changeMsg() 関数を使用してグリーティング メッセージを変更するにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1

1

You'll find that the message is indeed updated: try calling _greet() again.

The hex that _changeMsg() is returning is the transaction hash, which is what's always returned by state changing methods (transactions).

For more information see:

https://ethereum.stackexchange.com/questions/765/what-is-the-difference-between-a-transaction-and-a-call

于 2016-05-29T11:11:23.717 に答える