美文网首页区块链大学程序员程序猿阵线联盟-汇总各类技术干货
以太坊转账 gas 费用太低,一直 pending 怎么办

以太坊转账 gas 费用太低,一直 pending 怎么办

作者: yanging | 来源:发表于2018-07-04 22:38 被阅读35次

    最近Fcoin搞的创业板上币计划“累计充值人数排名”,使得以太坊转账手续费上涨了十多倍,以太坊矿工手续费收的很开心。转账的人大概不开心。

    以太坊拥堵了,gas 费用给低的话,基本转不成功,一直处于 pending。比如说这笔交易


    pending transaction

    再看 gas 的使用情况,etherscan.io/gasTracker 上查看最近一个 Block 的 gas 费用,如下:

    gasTracker

    gas 是以太坊中执行操作的计价单位,在以太坊虚拟机中执行写每一步的写操作都要消耗 gas。每一笔交易 gas 花费的计算公式:gasLimit * gasPrice,gasLimit是上限,实际消耗的 gas 会少于这个值。gasLimit 如果给少了,交易会被回滚,但已消耗的 gas 不会被退回。所以一般发起交易的时候,gasLimit都会设置地高一些。

    gasPrice 的单位是 Gwei,1 ETH = 1000000000 Gwei 。一般 gasPrice 的价格是个位数。以太网络中,矿工在打包区块时会优先处理 gasPrice 高的交易。

    如果出现网络拥堵,给出的 gasPrice 太小的时候,交易一直在 pending 状态,又想尽快完成交易时,可以重新发起一笔新的交易,提高 gasPrice,并将 nonce 值和被挂起的交易一样。那么旧交易就会被新交易所替代。

    如果使用 web3.js 调用 sendTransaction 时,可设置 nonce。这种方式最灵活,ETH 转账和合约交易都可修改。下面是 ETH 转账示例:

    web3.eth.sendTransaction({
        from: 0x4fd9555dd1309e7a2a356ea7e92c1b41cb7bb144,
        to: 0xf7deba629960e4f31f1aba61927f6f1e966c4462, 
        value: web3.toWei(1, "ether"), 
        gas: 60000,
        gasPrice: web3.toWei(40,'gwei'),
        nonce: 30
    });   
    

    MetaMask 也可实现重新设置 ETH 转账的 gasLimit 和 gasPrice:


    retry tx

    使用 MetaMask 转账,若转账迟迟未成交,MetaMask会给出一个 Retry 的链接,点击进去,修改该笔交易的 Gas LimitGas PriceGas Price 要高于之前的费用,否则该交易无法提交成功。

    retry tx

    修改后,点击 submit提交就行,旧交易就会被覆盖。

    以太坊 pending transactions 常年在 2 万左右

    pending txs

    处理速度上不去,gasPrice 轻轻松松就被抬高。也不知道分片技术啥时候能上线。拭目以待吧。

    相关文章

      网友评论

      本文标题:以太坊转账 gas 费用太低,一直 pending 怎么办

      本文链接:https://www.haomeiwen.com/subject/ukoyuftx.html