1

我正在研究以太坊智能合约。我通过 Mist 浏览器部署了我的 greeter 合约,它在 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() 函数只返回一些十六进制字符串。如何通过 _changeMsg() 函数更改问候语?

谢谢你。

4

1 回答 1

1

你会发现消息确实更新了:_greet()再打电话试试。

返回的十六进制_changeMsg()是事务哈希,它总是由状态更改方法(事务)返回。

有关更多信息,请参阅:

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

于 2016-05-29T11:11:23.717 回答