如何在javascript中使用以太坊合约的状态改变方法?
How to use ethereum contract's state changing method in javascript?
我正在研究以太坊智能合约。我通过 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;
}
}
我的 Dapp 代码在 Javascript:
_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() 函数运行良好,它 returns 我的问候语。
但是 _changeMsg() 函数 returns 只有一些六进制字符串。
如何通过 _changeMsg() 函数更改问候语?
谢谢。
您会发现消息确实已更新:请尝试再次调用 _greet()
。
_changeMsg()
返回的十六进制是交易哈希,它总是由状态更改方法(交易)返回。
有关详细信息,请参阅:
我正在研究以太坊智能合约。我通过 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;
}
}
我的 Dapp 代码在 Javascript:
_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() 函数运行良好,它 returns 我的问候语。
但是 _changeMsg() 函数 returns 只有一些六进制字符串。 如何通过 _changeMsg() 函数更改问候语?
谢谢。
您会发现消息确实已更新:请尝试再次调用 _greet()
。
_changeMsg()
返回的十六进制是交易哈希,它总是由状态更改方法(交易)返回。
有关详细信息,请参阅: