主页 > imtoken怎么注册 > 区块链技术知识:以太坊交易的打包规则

区块链技术知识:以太坊交易的打包规则

imtoken怎么注册 2023-08-25 05:07:29

本篇区块链技术科普,将带你深入了解以太坊交易背后的知识和原理:

我们的交易请求和链上区块之间发生了什么?

为什么以太坊拥堵?

交易拥堵在技术上发生了什么?

交易无法发送怎么办?

这些常见问题可以在本文中得到解答。

区块链技术科普

以太坊交易的本质

首先大家要知道以太坊交易的本质:我给你10个以太币不是因为我真的给了你东西以太坊每秒交易速度,而是我向以太坊网络提出了改变余额状态的请求,让每个节点记录下你的以太币余额是用我的更新。

以太坊交易之状态更新示意图

以太坊交易状态更新示意图

然而,发送交易在技术上并不困难。 区块链的重点是打包交易和生成区块的过程。 如何验证和确认交易是否有效,让交易顺利进行,让每个节点实时更新拥有相同的账本,所以打包交易出块的机制就是“挖矿”。

siteethfans.org 以太坊到账速度_以太坊挖矿速度_以太坊每秒交易速度

从以太坊交易发送到区块生成的过程

以太坊交易送出至出块流程 

发送到区块进程的以太坊交易

从上图我们可以看出

在以太坊上发送交易后经历的过程:

1.发送交易

2.私钥签名

3.交易发送到节点

4. 在节点间广播新收到的交易

5. 矿工打包交易,生成区块

交易发出后,会被扔进一个“交易池”,等待矿工打包。

以太坊每秒交易速度_siteethfans.org 以太坊到账速度_以太坊挖矿速度

矿工从“交易池”中捞出未阻塞的交易进行打包和出块。

因为每个区块都有大小限制,比特币一个区块的容量限制为1MB; 一个以太坊区块是按 Gas 计算的,限制为 800 M Gas。 如果按照21,000 Gas的基本交易计算,一个以太坊区块可以容纳380笔交易。 因此,当“交易池”中的交易量很大时,就会有很多交易不能立即打包,留在池中等待。

您如何选择要捞出的交易?

矿工节点可以自行设置参数,但大多数矿工是按照手续费多少排序的。 手续费高的优先打包; 那些收费低的可能要等到时间结束。

以太坊交易手续费计算公式:

以太坊交易手续费公式:TxFee(手续费)= GasUsed(gas使用量)* Gas​​Price(单位gas价格)

由于Gas Used是由系统决定的以太坊每秒交易速度,所以我们发送交易时决定手续费多少的决定性因素就是Gas Price。 下面我们介绍Metamask接口:

Metamask发送交易的页面流程图

Metamask 发送交易页面流程图

在上图左侧,我们可以看到系统默认有三种速度可以选择,但是如果想进一步设置,可以点击“高级选项”,就会进入右侧的画面上图。

我们可以自行设置Gas Price,调整交易的Gas Limit。 WEI 是以太坊上的最小单位(10^-18 Ether); GWEI 是 1G WEI (10^-9 Ether)。

siteethfans.org 以太坊到账速度_以太坊每秒交易速度_以太坊挖矿速度

图中Gas Price设置为10 GWEI; Gas Limit 为 21,000。 所以:

10GWEI(单位燃料价格)* 21,000(燃料消耗)= 0.00021 Ether(手续费)

气体限制

如果想操作智能合约等更复杂的功能,又不确定实际使用的Gas,也可以提高Gas Limit。 打包时,只收取实际使用的Gas作为手续费,多余的Gas退还。

然而,由于以太坊区块有 800M 的大小限制,如果 Gas Limit 设置得太高,它可能无法进入区块并留在“交易池”中。

GWEI

至于要设置多少GWEI,我们可以去ETH加油站查看实时“交易池”状态:

ETH GAS STATION 上的 Gas Price 建议

ETH GAS STATION 的气价建议

可以看到,如果希望交易尽快确认,可以将GWEI设置为20以上,2分钟左右即可确认(不过一般设置为FAST,应该是15~ 30秒)。 截图其实是目前拥堵的情况,一般10个GWEI左右就可以达到FAST(

这里显示的Gas Price建议实际上是“交易池”中的情况:池中有多少未决交易,池中这些交易的交易费用是多少。 根据这些信息,将预估出呈现设定的Gas Price所需的区块数(时间)打包上链。

以太坊每秒交易速度_siteethfans.org 以太坊到账速度_以太坊挖矿速度

然而,很多人经常对交易有疑问:

为什么我不能发送我的交易? 我应该怎么办?

可能是Gas Price设置过低,或者交易量突然涌入等情况。 这时候其实有一个补救办法:

加速交易

当交易通过 Metamask 发送时,您可以看到底部会有一个“加速”按钮。 点击后可以重新设置Gas Price。 设置并重新发送交易后,您可以在下面的活动记录中看到交易费用被提高了。

取消交易

除了加速交易,它实际上可以取消交易。 方法是点击等待处理的交易。 展开后,可以看到“取消”按钮。 点击确认后,Metamask会向节点发送取消交易请求,确认取消后收取手续费。

如果您发现取消交易的请求等待了很长时间,其实您可以在底部看到“加速取消”的按钮,您可以进行进一步的设置。

那么,上述过程到底发生了什么,技术上又是如何做到的呢?

答案和我们第一节讲的nonce有关。 方法是:

发送具有相同随机数的另一笔交易

以太坊每秒交易速度_以太坊挖矿速度_siteethfans.org 以太坊到账速度

由于以太坊 nonce 的设计,每个地址的所有交易的“顺序”都会被跟踪,这意味着每个 nonce 只会有一个交易。

加速交易

因此,加速交易意味着我发送具有相同随机数和相同内容的另一笔交易。 因为增加了交易手续费,所以当两笔具有相同nonce的交易位于“交易池”时,原则上先发送交易手续费高的交易。

因为每个nonce只能有一次交易,第一笔手续费较低的交易永远不会被打包,所以会被系统丢弃,交易失败。

取消交易

其实取消交易的逻辑也是类似的。 方法如下:

然后我用 0 Ether 向自己发送相同的随机数交易。 由于交易手续费高,会先打包成一个区块,这样原来的交易就会被系统丢弃,交易失败,从而达到取消交易的目的。

综上所述

1. 交易发出后,将被抛入交易池,等待矿工打包。 决定订单的主要因素是 Gas Price (GWEI) 的数量。

2. 发送交易时,可以到ETH加油站参考实时交易池状态,再决定设置多少GWEI,以便在预期时间内打包上链。

3. 如果发现交易卡在交易池中等待处理,可以加速或取消交易。

综上所述,大家应该对以太坊交易和打包规则背后的逻辑有了更深入的了解。

区块链技术以太坊