为何我钱包里还有以太币,但买卖就是确认不了?

时间:2021-08-02 12:55编辑:未知

或用户超额认购代币等状况。

此时,用户所设置的 Gas Limit 将会被全部用尽,最后致使买卖失败。

不过ETH拜占庭硬分叉后,增添了新的操作符 Reverted 。当合约中出现错误致使买卖失败时,买卖将不会耗尽 Gas Limit 所设定的所有 Gas,合约将停止实行并退回剩余 Gas 成本,同时告知用户错误缘由。

当然,假如用户钱包中 以太币 的数目不足以支付 Gas 成本时,买卖也会被断定为失败。

在没热门的时候,ETH互联网一片祥和,所有些转账本钱,包括时间和金额都还可控,但当风口到来,大伙在互联网中就会遇见各种问题,gas 费的逻辑是新人用钱包时最大障碍。

基本上,在 gas 费会遇见的所有问题,这篇文章都覆盖到了,链上买卖并不复杂,说容易点,所有操作有问题,加钱就可以搞定。

这场运动现在看来,ETH上流动性挖矿的热潮暂时告一段落,这场运动除去创造出一片泡沫以外,也让更多用户开始习惯钱包的用,钱包终于成了一个高频用工具。

而链上买卖发生的问题其实也在为钱包的优化提供空间,为新人提供「一键加速」、「一键取消」如此的服务可能将可以在愈加多的钱包中看到。

或用户未被列入白名单;

在 Uniswap 给 20 多万个用户地址撒钱的时候,或许不少人在高兴之余心里想的都是,「这 gas 费也太高了。」

当天是ETH历史上值得纪念的一天,gas 建议最高达到了 1000 GWEI,这是历史最高点。

在见证历史、全民领空投的当天上午,不少人都遇见了关于 gas 费的问题,gas 费贵已经不是问题了,问题是 gas 费交到钱包建议的最大值也不可以在计划时间内成交。大伙 Metamask 上显示都是 pending,一圈一圈转得被人心烦。

为何你用了默认的 gas 费金额,却依旧不可以即时买卖?。此文将详细解说ETH买卖费率机制与在ETH上发起买卖会遇见的问题。

这个事要先从ETH竞价推广账户讲起。

ETH互联网中有两类竞价推广账户,外部竞价推广账户(Externally Owned Account)与合约竞价推广账户 。

外部竞价推广账户是指用户们所用的竞价推广账户,由私钥持有者所控制。合约竞价推广账户是指带有应用逻辑的智能合约,由合约代码所控制(总是是项目方所有)。用户们在用 去中心化的金融 应用时,就是在用我们的竞价推广账户与 去中心化的金融 项目的智能合约进行交互。

各类竞价推广账户之间可以随意进行交互,钱包间可以进行转账,合约间也可以相互调用。每一次链上交互都需要消耗肯定的计算量,计算量消耗的大小由计算困难程度所决定,而 Gas 就是计算量的计量单位。比如加法运算较容易,需要消耗 3 个 Gas,除法运算相对复杂,需要 5 个 Gas。

每一单位的 Gas 都有其对应的价格,也就是 Gas 价格 进行结算的,而 Gas Limit 内剩余的 以太币 就会回到用户竞价推广账户中。

所以大家可以得出,所消耗的 以太币 数目 = 买卖成本 = 每笔交易平台消耗的 Gas 数目 * Gas 价格 。

知道了ETH的手续费机制与竞价推广账户种类,大家来看看用户在买卖时时常会碰到的问题。

每当用户发起一笔买卖时,买卖会被放入一个买卖池 中。如上文提到,矿工会优先打包池子中 Gas Price 最高的买卖(矿工的趋利性)。所以用户设定的 Gas Price 决定了买卖被打包实行的速度。在互联网拥挤的时候,因为 Gas Price 暴涨,用户的买卖可能长期处于待确认状况。为了尽快将待定买卖发出,用户可以选择支付更多的 Gas Price 来加速买卖(律动注:理解为给矿工更多的酬劳以达到一个插队的目的)。

加速买卖又是如何操作的呢?为了愈加详细地理解加速买卖的逻辑,大家需要了解另一个参数:Nonce。每个竞价推广账户发出的买卖都会有一个按顺序排列的买卖编号--Nonce,从 0 开始,每次发起一笔转账,该竞价推广账户的 Nonce 值会增加 1。

当用户想要加速买卖时,在ETH钱包中,用户可以选择加速买卖选项,这个时候会被需要支付更高的 Gas 成本,用户赞同之后等于发起了一笔新的买卖,而新的买卖与待确认买卖的 Nonce 值相同。

因为ETH互联网规定,Nonce 值是连续不可跳跃的,且同一个地址每笔买卖的 Nonce 值不可重复,所以矿工会打包新生成的买卖,在新买卖被打包确认之后,之前较低 Gas Price 的买卖会废弃掉。

若用户不想加速买卖,只须此买卖还在买卖池中未被打包,用户可以随时选择取消买卖。取消买卖的逻辑与加速买卖相同,用户发起一笔 Gas Price 更高,但与待确认买卖 Nonce 相同的买卖,但买卖金额变为 0,所以本质上,取消买卖的本钱与加速买卖的本钱一样需要本钱。

应该注意的是,在待定买卖确认完成之前,后面的买卖都需要排队等候,所以用户不要因为等候时间过长重复发起多笔买卖。

律动 BlockBeats 发现,现在最容易见到的买卖失败缘由是买卖 Gas 已用尽 。也就是说,这笔买卖的计算量超越了用户所设定的 Gas Limit。通常在这样的情况下,买卖状况将会显示为失败,并提示 Gas 已用尽,并且所支付的 Gas 不会被退还。

有的用户可能会觉得这并不公平,但本质上矿工已经在做功计算,只不过算到一半 Gas 不够了,所以矿工只能放弃继续作业,但之前的工作需要被支付「工资」,因此之前交的 Gas 费不退大概也可以理解了。遇见这样的情况,用户只能重新再发起一次买卖,并将此买卖的 Gas Limit 上调。

另一种买卖失败的状况是,当用户向智能合约发起买卖转账,但某些错误致使没办法实行合约时,买卖会返回 Bad Instruction。

譬如,当用户参与像众筹活动时,可能会发生下面这部分状况:


额度已满;

此文出于传递更多信息之目的,并不意味着同意其看法或证实其描述。本网站所提供的信息,只供参考之用。

本文标签: ETH交易

上一篇:几经波折 | Filecoin主网马上启动

下一篇:没有了