remix Gas estimation failed

2020更新

更新下帖子... 之前刚学碰到的问题, 现总接下

 

只要出现类似的错误(括号中的数字可能不一样), 就表示该笔交易无法成功, 强制发送出去也是失败的;

如果是自己开发的合约,在require(xx,"tips"),不满足xx的条件就会提示 tips;

两种情况

在remix中,发交易,是会提示上面写的tips,

如果是dapp web端,可以将交易发送出去,然后在区块浏览器中可以看到自己定义的tips (注意:tips需要英文!,以太坊会显示,波场不显示...)

 

下面中的情况就是因为require不满足,所以有该问题,下面的require没有写第二个参数tips,所以交易发出去只会提示fail

对于开发合约碰到这类问题,一般都是require不满足,或者是其他条件不满足, 

比如:转币的时候,实际没有代币, 或者输入金额过大,执行减法报错了等

 

 

使用remix调用合约的approve方法给予授权,第一次没啥问题,之后都提示Gas estimation failed,以为gas给少了。 搞了一下午,后面注意到还有两个方法decreaseApproval,increaseApproval,发现使用后授权量有改变... 

这个帖子给了点提示【Solidity】Gas estimation failed-Gas estimation errored with the following message 

是不是代码有问题。。。

然后去看合约代码(都是网上直接复制的合约代码...)

  function approve(address _spender, uint256 _value) public returns (bool) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    require((_value == 0) || (allowed[msg.sender][_spender] == 0));

    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

solidity语言还不是很懂,上面的require 猜测是value等于0或者是该sender没有设置过授权额度。

测试效果是也确实是这样, 要么调用另外两个方法去增加减少,否则就调用一次(addr,0)进行复位, 然后再次设置所想要的值!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
引用\[1\]: "Classification, parameter estimation, and state estimation: an engineering approach using MATLAB" 是一本关于使用MATLAB进行分类、参数估计和状态估计的工程方法的书籍标题。引用\[3\]: "Classification, Parameter Estimation and State Estimation" 是一本实用指南,适用于数据分析师、测量系统设计师和对使用MATLAB进行高级测量系统感兴趣的研究生学生。该书介绍了一个名为"Prtools"的强大MATLAB工具箱,用于模式识别,该工具箱由合著者之一、代尔夫特理工大学的B. Duin编写和拥有。 问题: Parameter Estimation Toolbox是什么? 回答: "Parameter Estimation Toolbox" 是一个MATLAB工具箱,用于参数估计。它提供了一套工具和函数,用于处理参数估计问题,包括设置参数初值、确定参数范围、进行参数估计和验证模型精度。这个工具箱可以帮助数据分析师和测量系统设计师进行参数估计和模型验证的工作。 #### 引用[.reference_title] - *1* *3* [分类、参数估计和状态估计:基于MATLAB的工程方法-Classification, parameter estimation, and state ...](https://blog.csdn.net/weixin_42392054/article/details/115924568)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [电池SOC仿真系列-基于Parameter Estimation Toolbox的电池参数辨识](https://blog.csdn.net/c85759351/article/details/112822098)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值