什么是以太坊上的矿工费?
什么是以太坊上的矿工费?
在以太坊网络中进行任何类型的转账都需要支付费用,这个费用被称为矿工费,以 ETH 支付。矿工费的高低决定了交易的处理速度,通常情况下,矿工费越高,打包速度越快。
以imtoken为例,设置矿工费有如下2种方式:
在以太坊网络中存在 EIP-1559 和 Legacy 两种矿工费机制。在了解设置矿工费之前,我们需要先了解一个ETH的升级:“伦敦升级”。
什么是伦敦升级 / EIP-1559?
在伦敦升级之前,以太坊具有固定大小的区块。 在网络需求高峰期,这些区块满负荷运行。 因此,用户常常不得不等到需求量降低后才能将交易添加到区块中,这导致用户体验变得十分糟糕。 伦敦升级为以太坊引入了大小可变的区块。
以太坊网络交易费的计算方式在 2021 年 8 月的伦敦升级后发生了改变。
在伦敦升级前,费用的计算没有区分 base 费和 priority 费。矿工费的计算使用的是Legacy机制。
在伦敦升级中实现的 EIP-1559 使得交易费机制更加复杂,但提高了燃料费的可预测性,使交易费市场更加高效。 用户可以在提交交易时设定 maxFeePerGas(对应于他们愿意为执行交易支付多少费用),他们清楚支付金额将不会超过燃料的市场价格 (baseFeePerGas),并且多支付的金额将在减去小费后退还。
矿工费计算公式
目前大多数以太坊交易使用 EIP-1559。 使用传统的Legacy方式获取 Gas 费可能会导致交易速度变慢并支付更高的 Gas 费。
EIP-1559机制
在了解ETP-1559机制如何计算矿工费之前,需要先知道以下 6 个概念。
- Gas:以太坊网络执行每一笔交易都需要消耗资源,Gas 是其衡量资源的单位
- Gas Used: 是用户执行操作消耗的 Gas 总量,是固定数额,ETH 转账为 21000,其他 ERC20 代币因为是智能合约,一般比 21000 贵,具体由智能合约代码复杂度决定。
- BaseFee:以太坊网络计算的确保交易成功的基础费用,即每单位 Gas 的最低价格
- PriorityFee:你为每单位 Gas 支付的小费,可加快交易被以太坊网络确认的速度
- MaxPriorityFee:你为每单位 Gas 支付的小费上限
- MaxFee:你为每单位 Gas 支付的最高价
计算公式:
- 矿工费 = Gas Used *(BaseFee + PriorityFee)
Legacy机制
在了解Legacy机制如何计算矿工费之前,需要先知道以下 3 个概念。
- Gas:以太坊网络执行每一笔交易都需要消耗资源,Gas 是其衡量资源的单位
- Gas Used: 是用户执行操作消耗的 Gas 总量,是固定数额,ETH 转账为 21000,其他 ERC20 代币因为是智能合约,一般比 21000 贵,具体由智能合约代码复杂度决定。
- Gas Price:你为每单位 Gas 支付的价格
计算公式:
- 矿工费 = Gas Used * Gas Price
如何设置Gas Price, Base Fee, Priority Fee
正如开汽车需要汽油,运行应用程序(交易 ETH、部署合约)需要燃料,这种燃料被称为 Gas。
每个操作所需的 Gas 量(Gas Used)是固定的,但 Gas 的价格(Gas Price)是会波动的。
因此,我们可以通过设置 Gas Price(包括 Base Fee 和 Priority Fee)来控制发送交易上链的速度。
以下是一些可以获取到Gas Price,Base Fee,Priority Fee的网站及API。
参考网站
- Etherscan区块浏览器 交易燃料价格估算器
- Tokenview区块浏览器 交易燃料价格估算器
- blocknative
参考API
curl https://services.tokenview.io/vipapi/eth/gas/nextblock?apikey={apikey}
{
"code": 1,
"msg": "成功",
"data": {
"nextBlockNum": 18210999,
"midPriorityFee": "0.59", // Middle Priority Fee
"highPriorityFee": "1.98", // Hight Priority Fee
"lowPriorityFee": "0.1", // Low Priority Fee
"nextBlockNumBaseFee": "7.1" // Base Fee
}
}