我无法在混合以太坊和web3中运行我的第一份合作合同,所以我猜我的合同代码有问题:
pragma solidity ^0.4.0;
contract cntrct
{
uint public aaa;
function() payable public
{
create(msg.value);
}
function create(uint _value) internal
{
require(_value>0);
aaa = _value;
}
function reader() view public returns(uint)
{
return aaa;
}
}
我在remix和web3中成功部署了合同。但是,在向合同发送交易后,aaa
变量仍为0
。我希望此代码执行的操作是将aaa
变量更新为最后存放的数量,以便稍后通过调用reader
函数进行阅读。在混音中,它不显示aaa
变量的任何输入字段。此外,在MetaMask中,发送到合同的交易即使已经完成也会处于待处理状态(在remix中更新余额,在testRPC中更新tx。)
在节点中,我使用以下行尝试执行reader
函数,但我不确定这是否有效。
contract.methods.reader().call(0, (error, result) => { if(!error){console.log(result);}});
答案 0 :(得分:0)
除非您需要维护跨多个地址的余额映射,否则没有理由存储状态变量中发送的以太网。总余额保存在合同中,可通过this.balance
访问。
此外,后备功能仅限于2300气体。您无法在该限制内写入存储(即更新状态变量)。您的变量未更新,因为它失败了。有关详细信息,请参阅第二个项目符号here。
答案 1 :(得分:0)