以太坊机制详解:Gas与Gas Prices深度解析 您所在的位置:网站首页 price与prices 以太坊机制详解:Gas与Gas Prices深度解析

以太坊机制详解:Gas与Gas Prices深度解析

2024-07-06 04:17| 来源: 网络整理| 查看: 265

概述

读者可以前往我的博客获得更好的阅读体验。

在以太坊London升级后,以太坊启用了EIP1559进行gas计算。由于EIP1559引入的新的gas机制较为复杂,所以我写了此文介绍了以太坊的gas机制。

本文主要涉及以下内容:

EIP1559引入的新的gas price设置方式 交易花费的具体计算方式

另,此文写作日期在以太坊即将进行合并时,所以我们在后文依旧使用了矿工这一称谓。

概念辨析

由于此篇是解析以太坊GAS机制的第一篇,所以我们首先在此处介绍gas与gas price的区别。

前者是以太坊转账或者合约操作的基准价值。你可以在此网站查询到每一个操作码的最小GAS消费。如下图:

OpCode GAS

理论上,我们可以通过合约字节码判断出合约操作所需要的gas值。当然,如果读者使用了Foundry作为智能合约开发工具链,可以在合约代码根目录运行forge test --gas-report获得gas报告,如下图:

Foundry Gas Report

上述表格也显示了合约部署消耗的gas值。当然,以太坊中也有一种不需要与智能合约交互的但非常重要的操作就是ETH转账,此操作被规定为21,000。可以参考此交易,如下图:

Transfer Gas

如果你自定义交易的gas最大限额,但设置的数量小于合约操作所需要的gas,就会出现错误。比如这个交易,如下图:

Gas Small Fail

上图由红框框出的部分就是此交易的gas限制和gas实际用量。此操作实际的gas用量为160,596,此处的最大限额小于合约操作的用量,所以出现了错误。正常的合约操作可以参考此交易。当然此交易虽然失败了,但仍打包到区块内并收取交易手续费并奖励矿工。因为矿工在接受交易时并不清楚交易的gas用量,矿工会运行交易直至gas耗尽,此部分需要补偿矿工。

当Gas的实际用量小于Gas Limit时,剩余部分会退还给用户。

但gas并不代表着进行这一操作所消耗的ETH数量。以太坊中存在大量的交易,我们需要根据网络情况调整手续费,为了有效调整手续费,以太坊引入了gas price价值作为计算手续费的单位,具体计算公式为 Transaction Fee = Gas * Gas Price,其中Transaction Fee就是交易手续费的意思。在后文中,我们会详细分析gas price的计算方法。

Gas Limit 的获取

对于Gas Limit的获取,以太坊客户端给出了一个专用的RPC API,被称为eth_estimateGas。

此API调用所需要的参数其实就是交易所需要的参数,我们在此处直接给出两个示例帮助大家使用。

在后文中,我们主要使用Cloudflare提供的公用以太坊网关作为RPC API服务商,其地址为https://cloudflare-eth.com/v1/mainnet。

为了方便读者学习,此处我们使用以太坊官方文档提供的线上测试功能。读者可以通过以下方法打开测试功能:

Test Console

首先,我们尝试获取转账交易的Gas消耗,在上图给出的测试栏的的左侧输入以下内容:

{ "jsonrpc": "2.0", "method": "eth_estimateGas", "params": [ { "from": "0x8D97689C9818892B700e27F316cc3E41e17fBeb9", "to": "0xd3CdA913deB6f67967B99D67aCDFa1712C293601", "value": "0x186a0" } ], "id": 0 }

输入完成后点击运行按钮,我们可以在右侧获得以下返回:

{ "jsonrpc": "2.0", "result": "0x5208", "id": 0 }

其中,result就是此交易的gas,将其转为十进制,结果恰好为21000,与上文给出的结果相符。

当然,更常见的Gas估计是估计合约操作所消耗的Gas值,我们在此处以WETH合约(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)为例获取存储deposit()操作的Gas消耗。

使用此API的具体参数可以参考以下

{ "jsonrpc": "2.0", "method": "eth_estimateGas", "params": [ {


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有