【问题标题】:Solidity TronIDE - Revert opcode executed on return valueSolidity TronIDE - 恢复在返回值上执行的操作码
【发布时间】:2021-11-15 21:59:02
【问题描述】:

我正在为 TRON 制定新的智能合约。 我需要总结每笔支付的金额。但是当我得到值时,我得到了一个 REVERT 错误:

pragma solidity ^0.8.0;

contract Test {

    uint counter = 0;


    function add() public payable {
        counter += msg.value;
    }


    function getCounter() public view returns(uint){
        return counter;
    }

}

“getCounter”返回 REVERT 错误。为什么?如何管理 msg.value 的总和?

【问题讨论】:

  • 您是否在发送任何value 以及执行getCounter() 函数的事务?
  • 当然,使用 TronIDE.io 我发送 100 TRX,而不是 sun。交易正确,我的Testnet TRX地址余额支付了100 TRX。
  • 我看到的tronscan.org,txnID交易:26f39a8cf32e17ab808fbd939e6a0adf768876ca7aff2f11c2a2ce9db2352a2b - 我见过的沙斯塔网络合同TC2w4X2AmSrpphp2xPHorCGF8ywTHwuKeL,读合同法getCounter()返回我root:"100000000"。所以问题出在 TRON-IDE 接口上。

标签: solidity revert contract


【解决方案1】:

当您执行add() 函数发送非零value 时,它会正确执行,因为该函数是payable

但是getCounter() 不是payable,所以你需要用零value 执行它(或者在函数中添加payable 修饰符)。

【讨论】:

  • 你是对的。非常感谢。
猜你喜欢
  • 2019-05-04
  • 1970-01-01
  • 2014-05-08
  • 2021-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 2021-12-08
相关资源
最近更新 更多