主页 > imtoken国际版 > 科普:以太坊gas费为何突然暴跌?
科普:以太坊gas费为何突然暴跌?
当 Uniswap 资助了超过 200,000 个用户地址时,很多人可能会高兴地认为,“这 gas 费太高了”。
那一天是以太坊历史上值得纪念的一天。 最高的天然气提案达到了 1000 吉瓦,创下了当时的历史新高。
在我们见证历史,全民领投空投的那天早上,很多人遇到了gas费的问题。 高昂的天然气成本不再是问题。 问题是,提议的 GAS FEE 上限无法在预定时间内关闭。 metamask 上的每个人都显示它正在挂起,转身很烦人。
为什么用了默认的gas费还是不能即时交易? 本文将详细阐述以太坊的交易费率机制以及在以太坊上进行交易遇到的问题。
气体逻辑
我们应该从以太坊账户开始。
以太坊网络中有两类账户:外部自有账户和合约账户。
外部账户是指用户使用的账户,由私钥持有者控制。 合约账户是具有应用逻辑的智能合约,由合约代码控制(通常为项目方所有)。 当用户使用 DeFi 应用程序时,他们只是使用他们的帐户与 DeFi 项目的智能合约进行交互。
各种账户可以随意交互,钱包可以转移,合约之间也可以对话。 链上的每一次交互都需要一定的计算量,这是由计算的难易程度决定的,gas是计量单位。 比如加法运算比较简单,需要3种气体,而除法运算比较复杂以太坊的计量单位,需要5种气体。
每单位gas都有其对应的价格,即gas price,gas price以wei为单位。 用户需要购买 ETH 来支付 gas 费。 1 ETH=1e18 Wei以太坊的计量单位,我们通常把单位Gwei看做1e9 Wei。 通常,钱包软件使用历史 gas 价格来估算用户发起交易的成本。
为了避免所有节点的中心化,去中心化的区块链会严格限制每个区块的容量。 比如比特币的区块大小限制和以太坊的区块gas限制。 在写节奏blockbeats的时候,以太坊有一个区块gas limit,每个区块大约12,000,000 gas,这是每个区块总计算量的上限。 平均每 15 秒一次。 当交易需求超过区块容量时,用户需要在各个区块中争夺资源,以尽快在链上确认自己的交易。 这时候用户会竞价gas,矿工会优先进行gas价格高的交易。
通常,用户会看到钱包在调整 gas limit 时会添加转账选项。 与区块gas limit不同,gas limit是指用户在交易中可以接受的gas消耗上限。 因为有时候合约可能会出现漏洞,一笔交易会被重复统计。 如果没有 gas limit,这笔交易将耗尽用户钱包中的所有 ETH。 矿工费通常根据交易使用的gas进行结算,剩余的gas limit会返还至用户账户。
因此,我们可以得出结论:消耗的ETH数量(以太坊成本)= GAS FEE / 交易费)= 交易使用的gas * gas price。
了解了以太坊的手续费机制和账户类别后,我们来看看用户在交易中经常遇到的问题。
待定/加速交易?
每次用户开始交易时,交易都会被放入交易池中。 如上所述,矿工将优先处理池中 gas 价格最高的交易。 因此,用户设定的gas价格决定了交易打包执行的速度。 在网络拥堵期间,由于油价飙升,用户交易可能需要长时间等待确认。 为了尽快发送待处理的交易,用户可以选择支付更多的 gas 价格来加快交易速度。
加速交易如何运作? 为了更详细地理解加速交易的逻辑,我们需要了解另一个参数:nonce。 账户发送的每笔交易都有一个交易号——按顺序排列的随机数。 从 0 开始,每次发起转账时,账户的 nonce 值都会加 1。
当用户想要加速交易时,在以太坊钱包中,用户可以选择加速交易的选项。 此时,用户将需要支付更高的GAS FEE。 用户同意后,相当于发起了一笔新的交易,新交易的nonce值与待确认交易的nonce值相同。
由于以太坊网络规定nonce值是连续的,不能跳转,同一地址的每笔交易的nonce值不能重复,所以矿工会对新产生的交易进行打包。 一旦新交易被打包并确认,先前具有较低 gas 价格的交易将被丢弃。
如果用户不想加速交易,用户可以随时选择取消交易,只要交易没有被打包进交易池即可。 取消交易的逻辑与加速交易的逻辑相同。 用户发起的 gas price 较高的交易与临时交易待确认相同,但交易金额变为零。 因此,从本质上讲,取消交易的成本与加快交易的成本相同。
需要注意的是,后续的所有交易都需要排队,直到完成待处理交易的确认,因此用户不能因为等待时间长而重复发起多笔交易。
交易失败
律动区块链发现,目前交易失败最常见的原因是缺乏gas。 也就是说,这笔交易的计算量超过了用户设定的gas limit。 一般这种情况下,交易状态会显示为失败,gas已经用完,已支付的gas不会返还。
可能有用户认为这不公平,但本质上矿工已经在做功课计算了,只有一半的gas是不够的,所以矿工只能放弃工作,之前的工作需要发“工资” , 所以没有退款 Gas bills 也可以入账。 在这种情况下,用户只能开始另一笔交易并提高该笔交易的 gas limit。
交易失败的另一种情况是,当用户向智能合约发起交易转账时,由于某些错误导致合约无法执行,交易会返回错误命令。
例如,当用户参与类似众筹的活动时,可能会出现以下情况:
名额已满;
或者用户不在白名单中;