合同合同无效

时间:2018-03-06 03:20:17

标签: solidity web3js remix

我无法在混合以太坊和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);}});

2 个答案:

答案 0 :(得分:0)

除非您需要维护跨多个地址的余额映射,否则没有理由存储状态变量中发送的以太网。总余额保存在合同中,可通过this.balance访问。

此外,后备功能仅限于2300气体。您无法在该限制内写入存储(即更新状态变量)。您的变量未更新,因为它失败了。有关详细信息,请参阅第二个项目符号here

答案 1 :(得分:0)

在可靠性合同中,您可以通过调用字段作为方法来读取公共字段的值。在这里,aaa()

我已在私有网络下部署了雾浏览器,并成功向此合同发送了10以太。

deployed contract with 10 ehter