前文回顾
什么是验证者队列
以太坊的进入和退出队列是等待开始质押或取消质押的验证者。网络对每个 epoch 可以处理的验证器数量有速率限制(称为 Churn(流失))。如果尝试进入或退出的验证器数量超过了可处理的数量,那么它们将被放入相应的队列中。
Churn Schedule
计算公式:
m a x ( 4 , ∣ v ∣ 65536 ) max(4, \frac{|v|}{65536}) max(4,65536∣v∣)
活跃验证者 | 每个Epoch的流失率 | 每日流失率 |
---|---|---|
0 | 4 | 900 |
327,680 | 5 | 1,125 |
393,216 | 6 | 1,350 |
458,752 | 7 | 1,575 |
524,288 | 8 | 1,800 |
589,824 | 9 | 2,025 |
655,360 | 10 | 2,250 |
720,896 | 11 | 2,475 |
786,432 | 12 | 2,700 |
851,968 | 13 | 2,925 |
917,504 | 14 | 3,150 |
983,040 | 15 | 3,375 |
1,048,576 | 16 | 3,600 |
1,114,112 | 17 | 3,825 |
1,179,648 | 18 | 4,050 |
1,245,184 | 19 | 4,275 |
1,310,720 | 20 | 4,500 |
1,376,256 | 21 | 4,725 |
1,441,792 | 22 | 4,950 |
1,507,328 | 23 | 5,175 |
1,572,864 | 24 | 5,400 |
1,638,400 | 25 | 5,625 |
1,703,936 | 26 | 5,850 |
1,769,472 | 27 | 6,075 |
1,835,008 | 28 | 6,300 |
1,900,544 | 29 | 6,525 |
1,966,080 | 30 | 6,750 |
Churn 状态
为什么需要激活/退出队列
- 保证验证网络的稳定性。试想一下如果加入/退出都是随意的,比较容易出现验证节点暴增以及爆减的极端情况。而且会瞬间增加网络的负载。
- 防止攻击。攻击者如果需要扰乱网络,那么至少需要控制三分之一以上的节点
举例:假设现在网络中由 1,966,080 个验证者,那么每天能新增的验证者是 6750个
- 如果需要扰乱网络,攻击者需要控制 1 3 \frac{1}{3} 31 以上的验证者(655,360个),那这些验证者完全加入网络所需要的时间是 655360 6750 ≈ 97 \frac{655360}{6750} \approx 97 6750655360≈97 天
- 另外,这么多验证者,攻击者需要 $ 655360 * 32 = 20,971,520 $ 个ETH
深入了解
Ethereum's activation and exit queues
The validator lifecycle