以太坊转账 gas 费用太低,一直 pending 怎么办
最近Fcoin搞的创业板上币计划“累计充值人数排名”,使得以太坊转账手续费上涨了十多倍,以太坊矿工手续费收的很开心。转账的人大概不开心。
以太坊拥堵了,gas 费用给低的话,基本转不成功,一直处于 pending。比如说这笔交易
pending transaction
再看 gas 的使用情况,etherscan.io/gasTracker 上查看最近一个 Block 的 gas 费用,如下:
gasTrackergas 是以太坊中执行操作的计价单位,在以太坊虚拟机中执行写每一步的写操作都要消耗 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 Limit
和 Gas Price
,Gas Price
要高于之前的费用,否则该交易无法提交成功。
修改后,点击 submit
提交就行,旧交易就会被覆盖。
以太坊 pending transactions 常年在 2 万左右
pending txs处理速度上不去,gasPrice 轻轻松松就被抬高。也不知道分片技术啥时候能上线。拭目以待吧。