Out of gas的解决方案 Although one or more Error Occurred [out of gas] Contract Execution Completed

简介: 该文章分析了以太坊交易中出现"Out of Gas"错误的原因,并提供了通过MetaMask客户端设置更高的Gas Limit来解决这一问题的详细步骤和建议。

问题表现和分析

https://goerli.etherscan.io/tx/0x108fc2846950d188829c25bccbbdca5e844b42f5426d9b9bbc8ca77ab13f9d98

上图的绿框提示了out of gas错误,并且Gas Limit & Usage by Txn已经达到了设置100%,说明小狐狸设置的Gas Limit不够了。

解决方案

客户端对小狐狸进行设置,具体步骤如下:

  1. 在发送交易时弹出上点击【建议的网站】

  1. 在建议的网站页面,点击【高级】

  1. 在高级的弹出窗中,点击【燃料限制】进行编辑

  1. 编辑【燃料限制】后进行保存即可

注意⚠️:这样的修改仅仅适用于本次的交易提交,要修改为默认需从 高级 进行设置。

此时,再进行提交发现成功了,scan页面如下:

可以看到提交之后Gas Limit & Usage by Txn实际需要 67,827 (18.18%),此时仅仅使用了Gas Limit的18.18%

问题和解决方案分析

先理解Gas Price和Gas limit。

  1. Gas Price是指,Gas的单价,即每个Gas值多少Ether。单价越高,矿工们就会越优先打包你的交易,你的交易完成的速度就会越快。但是调高Gas price并不能解决OOG(Out of Gas 下同)的问题。
  1. Gas limit是指,本次交易最多可花费多少Gas的上限。调高它就可以解决大部分的OOG问题,并且,调高它并不会提高你的Gas花费,剩余的Gas会重新返还到你的账户当中的。

但是也不能太高,高过创世节点配置的最大值,否则就会出现这样的错误:

{"code":-32000,"message":"exceeds block gas limit"}

Out of gas同类错误提示

Warning! Error encountered during contract execution [**Out of gas**]
或者是
Although one or More Error Occured [**Out of gas**] Contract Execution Completed

相关文章
|
机器学习/深度学习 算法 Python
LightGBM中的特征选择与重要性评估
LightGBM中的特征选择与重要性评估【2月更文挑战第1天】
2528 0
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之录入租户管理员密码时,提示密码检验失败如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
5月前
|
人工智能 安全 Linux
Alpine Linux设定指定的软件包安装源
以上就是如何为Alpine Linux设置特定的软件包的安装源的全部流程。这个过程非常简洁、明了,希望你在使用过程中能够找到乐趣。这个过程不仅可以提供你需要的软件,还可以根据你的网络条件和地域性需求进行调整,使你的Alpine Linux系统达到最佳性能。
538 24
|
前端开发 JavaScript 关系型数据库
如何开发一个ERP系统:从零开始构建
【9月更文第4天】企业资源计划(ERP)系统是现代企业管理不可或缺的一部分,它集成了公司的关键业务流程,并提供了统一的数据管理平台。本文将探讨如何从零开始构建一个简单的ERP系统,并提供一些基本的代码示例来演示关键组件的开发过程。
1993 3
|
分布式计算 Hadoop Shell
Hadoop修改bashrc或profile文件
【7月更文挑战第16天】
387 2
|
JSON 关系型数据库 MySQL
MySQL 5.x和8.0区别
性能:8.0的速度要比5.7快2倍,8.0在以下方面带来了更好的性能:读/写负载、IO密集型工作负载、高竞争("hot spot"热点竞争问题)工作负载。
406 3
|
JSON JavaScript 前端开发
以太坊 – 部署智能合约到Ganache
将编译好的智能合约部署到本地的Ganache区块链网络。步骤如下:更新项目的配置文件,修改网络配置连接到本地区块链网络(Ganache)。创建迁移脚本,告诉Truffle如何部署智能合约。运行新创建的迁移脚本,部署智能合约。...
2162 0
以太坊 – 部署智能合约到Ganache
|
数据可视化 应用服务中间件 nginx
如何查看docker 项目的配置文件
【2月更文挑战第21天】
2712 1
|
存储 调度 数据库
Quartz.NET开源作业调度框架系列(三):IJobExecutionContext 参数传递
在Quartz.NET中可以用JobDataMap进行参数传递。本例用Quartz.NET的任务来定期轮询数据库表,当数据库的条目达到一定的数目后,进行预警。
1311 0
Quartz.NET开源作业调度框架系列(三):IJobExecutionContext 参数传递
|
Python
Pandas进阶--map映射,分组聚合和透视pivot_table详解
Pandas进阶--map映射,分组聚合和透视pivot_table详解
370 0