本文对以太坊区块链中交易费用进行了市场分析,使用了从geth提取的数据,展示了不同区块中交易费用的分布情况及其变化趋势。作者通过对每个gas价格水平的平均区块等待时间进行计算,并分析了不同矿工的行为,表明矿工之间的视角差异,以及网络传播对交易处理的影响。总体而言,文章探讨了在这个看似运作良好的费用市场中,如何改善费用估算并提高基础链的可扩展性。
这里有一个 文件,包含从 geth 中提取的数据,关于每个区块在 4710000 到 4730000 之间的交易费用。对于每个区块,它包含如下形式的对象:
{
"block":4710000,
"coinbase":"0x829bd824b016326a401d083b33d092293333a830",
"deciles":[40,40.1,44.100030001,44.100030001,44.100030001,44.100030001,44.100030001,44.100030001,50,66.150044,100],
"free":10248,
"timedelta":8
}
“deciles”变量包含 11 个值,其中最低值是每个区块内的最低Gas价格,接下来是只有 10% 其他交易Gas价格低于的Gas价格,以此类推;最后一个是每个区块内的最高Gas价格。这为我们提供了每个区块所包含的交易费用分布的便捷总结。我们可以利用这些数据进行一些有趣的分析。
首先是一个 deciles 的图表,使用 50 个区块的移动平均值来平滑它:
我们看到的Gas价格市场似乎在超过三天的时间内实际上保持了一定的稳定性。偶尔有一些尖峰,特别是在区块 4720000 附近,但其他的 deciles 都保持在同一个区间内。唯一的例外是最高Gas价格交易(左上角的红色曲线),它波动很大,因为一个非常高Gas价格的交易可以将其推高。
我们可以尝试另一种方式来解释数据:计算每个Gas价格水平上,你需要等待的平均区块数,直到你看到一个最低Gas价格低于该Gas价格的区块。假设矿工是理性的,并且所有矿工有相同的观点(这意味着如果区块中的最低Gas价格为 X,则该区块没有更多的Gas价格高于 X 的交易在等待被包含),这可能是交易发送者如果使用该Gas价格则需要等待的平均时间的良好代理。统计数据如下:
在 4、10 和 20 的水平上明显出现了聚类;在这些水平之上稍微提高费用提交交易似乎是一种未被充分利用的策略,可以比刚好在该水平的交易稍早进入,并且只需多支付一点费用。
然而,有很多证据表明矿工 并没有 统一的视角;也就是说,一些矿工看到的交易集与其他矿工非常不同。首先,我们可以通过矿工地址过滤区块,并检查每个矿工的 deciles。以下是这个数据的输出,按 2000 区块标记分割,以便我们能够发现整个期间内的一致行为,同时过滤出在任何时期内开采不足 10 个区块的矿工,以及过滤掉自由气体超过 21000 的区块(高水平的自由气体可能意味着异常高的最低气价格政策,例如,例如 0x6a7a43be33ba930fe58f34e07d0ad6ba7adb9b1f 在 ~40 gwei 和 0xb75d1e62b10e4ba91315c4aa3facc536f8a922f5 在 ~10 gwei)。得到:
0x829bd824b016326a401d083b33d092293333a830 [30, 28, 27, 21, 28, 34, 23, 24, 32, 32]
0xea674fdde714fd979de3edf0f56aa9716b898ec8 [17, 11, 10, 15, 17, 23, 17, 13, 16, 17]
0x5a0b54d5dc17e0aadc383d2db43b0a0d3e029c4c [31, 17, 20, 18, 16, 27, 21, 15, 21, 21]
0x52bc44d5378309ee2abf1539bf71de1b7d7be3b5 [20, 16, 19, 14, 17, 18, 17, 14, 15, 15]
0xb2930b35844a230f00e51431acae96fe543a0347 [21, 17, 19, 17, 17, 25, 17, 16, 19, 19]
0x180ba8f73897c0cb26d76265fc7868cfd936e617 [13, 13, 15, 18, 12, 26, 16, 13, 20, 20]
0xf3b9d2c81f2b24b0fa0acaaa865b7d9ced5fc2fb [26, 25, 23, 21, 22, 28, 25, 24, 26, 25]
0x4bb96091ee9d802ed039c4d1a5f6216f90f81b01 [17, 21, 17, 14, 21, 32, 14, 14, 19, 23]
0x2a65aca4d5fc5b5c859090a6c34d164135398226 [26, 24, 20, 16, 22, 33, 20, 18, 24, 24]
第一个矿工的数值始终高于其他矿工;最后一个也高于平均水平,而第二个矿工始终处于最低水平之一。
我们还可以关注时间戳差异——一个区块的时间戳和它父区块之间的差异。时间戳差异与最低Gas价格之间存在明显相关性:
这很有意义,因为一个区块在另一个区块之后到达,应该仅清理那些由于父区块未被包含而过低的交易,而一个在其前一个区块之后很长时间到达的区块将会有更多尚未被包含的交易可供选择。这些差异很大,表明一个区块足以处理非常大量的未确认交易池,增加了大多数交易能够很快被包含的证据。
然而,如果我们更详细地查看数据,我们会发现很多低时间戳差异的区块包含了比其父区块更高的交易费用。有时我们确实看到区块实际上看起来像是清理了其父区块无法包含的交易,例如:
{"block":4710093,"coinbase":"0x5a0b54d5dc17e0aadc383d2db43b0a0d3e029c4c","deciles":[25,40,40,40,40,40,40,43,50,64.100030001,120],"free":6030,"timedelta":8},
{"block":4710094,"coinbase":"0xea674fdde714fd979de3edf0f56aa9716b898ec8","deciles":[4,16,20,20,21,21,22,29,30,40,59],"free":963366,"timedelta":2},
但有时我们会看到这个:
{"block":4710372,"coinbase":"0x52bc44d5378309ee2abf1539bf71de1b7d7be3b5","deciles":[1,30,35,40,40,40,40,40,40,55,100],"free":13320,"timedelta":7},
{"block":4710373,"coinbase":"0x52bc44d5378309ee2abf1539bf71de1b7d7be3b5","deciles":[1,32,32,40,40,56,56,56,56,70,80],"free":1672720,"timedelta":2}
有时我们会看到矿工突然包含许多 1-gwei 的交易:
{"block":4710379,"coinbase":"0x5a0b54d5dc17e0aadc383d2db43b0a0d3e029c4c","deciles":[21,25,31,40,40,40,40,40,40,50,80],"free":4979,"timedelta":13},
{"block":4710380,"coinbase":"0x52bc44d5378309ee2abf1539bf71de1b7d7be3b5","deciles":[1,1,1,1,1,1,40,45,55,61.10006,2067.909560115],"free":16730,"timedelta":35}
这强烈表明,包括Gas价格为 X 的交易的矿工 不应该 被视为没有更多Gas价格高于 X 的交易等待处理。这可能是由于网络传播中的不完善性。
然而,总的来说,我们看到的似乎是一个运行良好的费用市场,尽管在费用估算和最重要的,继续努力改善基础链的可扩展性以便更多交易可以首先被包含方面仍然有改进的空间。
- 原文链接: vitalik.eth.limo/general...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!