主页 > 最新版官网imtoken钱包下载 > 释放被阻止的以太坊交易
释放被阻止的以太坊交易
以太坊目前面临着很多交易的积压,导致一些交易数小时甚至数天都得不到处理。 本文解释了传输如何卡住以及如何释放它们。
确定天然气价格
发送以太坊交易时,有很多方法可以确定最佳 gas 值。 诸如此类的网站提供气体使用概览并提供有关当前交易池的信息。
后一个站点特别有用,因为它按 gas 价格组织交易列表。 您可以点击 GasPrice 列进行查看。 结果列表大致就是矿工如何看待交易的,所以如果你以此为基础选择gas price来确保你的交易在前几页,你的交易确认时间可能会很短。
但是,如果您的交易未得到确认怎么办? 有可能是被阻塞了,需要释放。
了解阻塞事务
在解释如何释放阻塞事务之前以太坊怎么买卖交易,首先了解事务被阻塞的原因很重要。 以太坊是一个区块链:它由许多区块组成,每个区块包含多个交易,一个接一个,被链入区块链,如下图所示:
- 以太坊区块链的简化视图 -
(实际上,单个块和链的结构都更复杂,但是图表为理解本文提供了足够的信息。)
区块由矿工通过称为“挖掘”的过程创建的概念众所周知,但许多人不清楚如何选择交易以包含在特定区块中。 为了更详细地探索这个过程,让我们看看下面示例块 1434 的创建。
以太坊包含区块链以外的许多元素,其中之一就是交易池。 交易池包含所有已提交到以太坊网络但尚未分配给区块的交易。
一旦区块 1433 被开采,区块 1434 的开采就开始了。 块 1434 开始为空:
-区块 1434 处的初始矿工状态-
矿工将从交易池中选择多笔交易插入到1434区块开始挖矿:
-挖矿前填充块-
一旦区块 1434 被成功开采,它就成为区块链的一部分,相关交易将从交易池中移除:
- 区块 1434 已开采:已开采的交易已从交易池中移除 -
(同样,这是对真实情况的简单解释。)
一个明显的问题是“矿工如何选择将哪些交易包含在一个区块中?”,答案是“金钱”。
提交给以太坊的每笔交易都附有一个数字,代表提交者愿意支付给矿工的交易费用,称为 gas 价格。 当矿工查看交易池,看到两笔相同的交易时,他会选择 gas price 较高的交易,因为这会为矿工在挖矿时赚到更多的钱。
(另一种简化:提交者支付给矿工的资金总额实际上是 gas 价格乘以 gas 使用量高的交易对矿工更有吸引力)。
当进入交易池的交易数量多于可包含在下一个区块中的数量时,这意味着那些具有较低 gas 价格的交易将被排除在该区块之外。 如果交易池中 gas 价格高的交易数量达到或超过每个区块的容量,那么可能的 gas 价格低的交易将不会被选中。 此时,低 gas 价格的交易被阻止。
处理阻塞事务
如果提交给以太坊的交易量下降,则被阻止的交易会自动解锁以太坊怎么买卖交易,否则需要人工干预才能释放交易。
释放一个交易需要提高该交易的gas价格,这样当矿工为一个区块选择一个交易时,该交易就会在交易列表中靠前的位置。 为此,交易必须以更高的 gas 价格再次广播。 例如,这是一个由于低 gas 价格而被阻止的交易:
类型:待定交易
来自:0xED96dD3Be847b387217EF9DE5B20D8392A6cdf40
至:0xa34C6BCAe6F46ac6470443CCea67d937f6060c7E
随机数:1
气体限制:21000
天然气价格:1 GWei
价值:0.005 以太币
请注意,gas 价格现在是 1 GWei。 重新提交以更高的 gas 价格(10 GWei)覆盖之前的交易:
类型:待定交易
来自:0xED96dD3Be847b387217EF9DE5B20D8392A6cdf40
至:0xa34C6BCAe6F46ac6470443CCea67d937f6060c7E
随机数:1
气体限制:21000
天然气价格:10 GWei
价值:0.005 以太币
请注意,“From”地址和“Nonce”值在两个交易中是相同的。 这两个值可以用来唯一标识一个事务,允许事务覆盖。 天然气价格也相应发生了变化。
或者,可能需要取消交易。 以太坊没有从交易池中移除交易的机制,但可以用不同的消息覆盖交易,例如将 0 值传输回发送方,这具有类似的效果。 但这仍然是一种交易,仍然需要开采。 重新提交上述交易,实现取消交易的结果,如下:
类型:待定交易
来自:0xED96dD3Be847b387217EF9DE5B20D8392A6cdf40
至:0xED96dD3Be847b387217EF9DE5B20D8392A6cdf40
随机数:1
气体限制:21000
天然气价格:60 GWei
价值:0
请注意,“To”地址已更改为“From”地址,“Value”已更改为 0。
当一笔交易被替换时,新的 gas price 比原来的 gas value 高出 10%,所以 20GWei 变成 1GWei 不太可能成功,原来的交易仍然会留在交易池中。
使用 Ethereal 释放被阻止的交易
Ethereal 是一个命令行工具,允许您使用标准 Geth 或 Parity 存储执行常见的以太坊活动。 Ethereal 包含释放阻塞事务的命令。
要安装Ethereal,首先要安装Go,查看是否安装了Go及其版本:
去版本
如果已经安装了 Go,您将看到一个版本报告,例如:
go 版本 go1.8.1 linux/amd64
如果您没有安装 Go,可以使用计算机的包管理器或通过以下网页上的说明进行安装:
安装 Go 后,可以使用以下命令安装 Ethereal:
去获取-u github.com/wealdtech/ethereal
通过运行以下命令确认 Ethereal 可用并且可以看到发送阻塞交易的帐户:
空灵的帐户列表
并确保您要查看的帐户在列表中。
运行ethereal transaction info命令查看交易状态,例如查询上一节中提到的被冻结的交易:
虚幻交易信息 --transaction=0xec08e7609d80f233fd92cc41068ea0dd6da5d9c05263d45b0a5eee6e20f96194
为了在不改变其他参数的情况下增加交易的gas price,交易以改变后的gas price进行,例如gas price增加到10 Gwei:
空灵交易 --transaction=0xec08e7609d80f233fd92cc41068ea0dd6da5d9c05263d45b0a5eee6e20f96194 --gasprice=10gwei --passphrase=secret
其中 passphrase 是解锁发送阻止交易的帐户的命令。
要取消未包含在区块中的交易,可以通过更改 gas 价格来取消交易。
以太交易取消 --transaction=0xc04116457f8f420bb13d770ffbb233501f193ba7c57cd1e4bc2ec02804a8df6a --gasprice=60gwei --passphrase=secret
使用 Ethereal 使您能够解锁交易并确保即使在以太坊网络繁忙时交易也能及时完成。
原文链接:@jgm.orinoco/releasing-stuck-ethereum-transactions-1390149f297d