主页 > imtoken如何转账 > 为什么我的钱包里还有ETH,但是交易无法确认?

为什么我的钱包里还有ETH,但是交易无法确认?

imtoken如何转账 2023-01-16 21:00:32

当 Uniswap 向超过 200,000 个用户地址分发资金时,也许很多人认为,“这 gas 费太高了”。

那一天是以太坊历史上值得纪念的一天。 gas提案最高达到1000 GWEI,为历史最高点。

在见证历史和全民空投的上午,很多人都遇到了gas费的问题。 昂贵的汽油费不再是问题。 问题是 gas 费给钱包建议的最大值不能在计划时间内卖出。 大家的Metamask显示都是pending,绕圈子很烦。

为什么不能使用默认的gas fee金额,还是不能即时交易? . 本文将详细讲解以太坊的交易费率机制以及在以太坊上发起交易遇到的问题。

气体逻辑

这件事首先要从以太坊账户说起。

以太坊网络中有两种类型的账户,外部账户和合约账户。

外部账户是用户使用的账户,由私钥持有者控制。 合约账户是指具有应用逻辑的智能合约,由合约代码控制(通常为项目方所有)。 用户在使用 DeFi 应用时,是在使用自己的账户与 DeFi 项目的智能合约进行交互。

各种账户可以随意交互,钱包之间可以转账,合约也可以互相调用。 链上的每一次交互都需要消耗一定的计算量。 消耗的计算量由计算难度决定,Gas是计算量的计量单位。 比如加法运算比较简单,需要3个Gas,而除法运算比较复杂,需要5个Gas。

每单位的Gas都有其对应的价格,即Gas Price(天然气价格),Gas价格以Wei为单位。 用户需要购买 ETH 来支付 Gas 费用。 1 ETH=1e18 Wei,我们平时看到的单位GWei就是1e9Wei。 通常,钱包软件会通过历史 Gas Price 来预估用户发起交易的成本。

以太坊钱包打不开_以太坊钱包私钥匙_web3j 以太坊钱包

为了避免所有节点的集中,追求去中心化架构的区块链会严格限制每个单块的容量。 比如比特币的 Block Size Limit 和 Ethereum 的 Block Gas Limit。 Rhythm BlockBeats 在写文章时,以太坊中每个单个区块的 Block Gas Limit 约为 12,000,000 Gas,这是每个区块总计算量的上限。 平均每 15 秒生成一个块。 当交易需求超过区块容量时,用户需要在每个区块中争夺资源,以便尽快在链上确认自己的交易。 这时候用户会竞价Gas,矿工会优先将Gas Price高的交易放入区块。

以太坊钱包打不开_以太坊钱包私钥匙_web3j 以太坊钱包

通常用户在转账时也会看到钱包会增加调整Gas Limit的选项。 Gas Limit 与 Block Gas Limit 不同,Gas Limit 是指用户可以接受的一笔交易的 Gas 使用上限。 因为有时候合约可能会出现漏洞,一笔交易会在死循环中计算。 如果没有 Gas Limit,这笔交易将耗尽用户钱包中的所有 ETH。 矿工通常收取的费用按照实际执行交易时消耗的计算量(Gas Used by Transaction)进行结算,Gas Limit中剩余的ETH将返还至用户账户。

所以我们可以得出消耗的ETH数量(Ether Cost)=交易费用(Gas Fee/Transaction Fee)=每笔交易消耗的Gas数量(Gas Used By Transaction)* Gas​​价格(Gas Price)。

了解了以太坊的手续费机制和账户类型后,我们来看看用户在交易时经常遇到的问题。

待定/加速交易?

每当用户发起交易时,该交易将被放入交易池(Mempool)。 如前所述,矿工会优先打包池中Gas Price最高的交易(矿工的逐利本性)。 因此,用户设定的Gas Price决定了交易打包执行的速度。 当网络拥堵时,由于 Gas Price 的飙升,用户的交易可能会长时间等待确认。 为了尽快发送待处理的交易,用户可以选择支付更多的Gas Price来加速交易(节奏注:理解为给矿工更多的奖励,以达到插队的目的)。

加速交易如何运作? 为了更详细地理解加速交易的逻辑,我们需要了解另一个参数:Nonce。 每个账户发送的交易都会有一个顺序的交易编号——Nonce,从0开始,每发起一笔转账,账户的Nonce值都会加1。

以太坊钱包私钥匙_以太坊钱包打不开_web3j 以太坊钱包

当用户想要加速交易时,在以太坊钱包中,用户可以选择加速交易选项,但会被要求支付更高的Gas费用。 用户同意后,相当于发起了一笔新交易,新交易与待确认交易的Nonce值相同。

由于以太坊网络的规定,Nonce值是连续的,不可跳跃,同一地址的每笔交易的Nonce值不能重复,所以矿工会对新产生的交易进行打包。 新交易打包确认后,之前的 Gas Price 较低的交易将被丢弃。

如果用户不想加速交易,只要交易还在交易池中解包,用户可以随时选择取消交易。 取消交易的逻辑与加速交易的逻辑相同。 用户以更高的 Gas Price 但与待确认交易相同的 Nonce 发起交易,但交易金额变为 0,因此从本质上讲,取消交易的成本与加速交易的成本相同。 成本。

需要注意的是,在待处理交易确认完成之前,后续交易需要排队等待,用户不要因为等待时间长而重复发起多笔交易。

交易失败(失败)

韵律BlockBeats发现交易失败最常见的原因是交易Gas已经耗尽(Out of Gas)。 也就是说,这笔交易的计算量超过了用户设置的Gas Limit。 一般这种情况下,交易状态会显示为失败,表示Gas已经耗尽,已支付的Gas不会退还。

有的用户可能会觉得这样不公平以太坊钱包打不开,但本质上矿工已经在做工作计算了,但是计算到一半gas就不够了,所以矿工只能放弃继续工作,但是之前的工作还需要发“工资”,所以之前的工作 gas 费不退不还大概可以理解。 在这种情况下,用户只能重新发起一笔交易,并提高本次交易的Gas Limit。

另一种交易失败的情况是,当用户向智能合约发起交易转账,但由于某些错误导致合约无法执行,交易将返回Bad Instruction。

例如,当用户参与众筹活动时,可能会出现以下情况:

名额已满;

或者用户不在白名单中;

或者用户超额认购令牌等等。

这时候用户设置的Gas Limit就会用完,最终导致交易失败。

然而,在以太坊拜占庭硬分叉之后,增加了一个新的运营商 Reverted (EIP-140)。 当合约发生错误导致交易失败时,交易不会耗尽Gas Limit设定的所有Gas,合约将停止执行并退还剩余的Gas费用,并告知用户错误原因。

当然,如果用户钱包中的ETH数量不足以支付Gas费,交易也会被判定为失败。

没有热点的时候,以太坊网络是平静的,所有的转账成本,包括时间和金额都是可控的,但是风一吹,大家就会遇到网络中的各种问题。 gas费的逻辑是,新人使用最大的障碍是钱包。

这篇文章基本上涵盖了gas费中遇到的所有问题。 链上交易并不复杂。 简单来说,就是任何操作有问题,加钱就能解决。

目前,以太坊流动性挖矿的热潮似乎让这场运动暂时告一段落。 除了制造泡沫之外以太坊钱包打不开,这一运动也让更多的用户习惯了钱包的使用。 钱包终于成为高频钱包。 工具。

链上交易出现的问题,其实是在为钱包的优化提供空间。 为新人提供的“一键加速”、“一键注销”等服务,可能会在越来越多的钱包中看到。

* 韵律BlockBeats提醒投资者谨防追高风险,本文所表达的观点不构成任何投资建议。