BSC 一个验证者被惩罚,删除验证者资格

创世区块配置的3个验证者:

  "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000b17a1bd545b45a918bf6b0450e88b9cafc0914a9a0754ecdd8c0867986e462ddc97089bd21a3cc1eb6cb6ecb011c7a72b1926ed3bf4ed04e6e2e67e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",

 

总共就3个验证者,今天发现有一个验证者变成无效验证者了:

INFO [08-11|07:31:37.047] Imported new chain segment               number=362,524 hash=00e3cc..587d86 miner=0xB17A1bD545B45a918bf6b0450E88B9cafc0914a9 blocks=1  txs=10  blobs=0 mgas=0.242 elapsed=21.007ms    mgasps=11.531 snapdiffs=513.30KiB  triediffs=1.37MiB triedirty=108.04KiB trieimutabledirty=0.00B
DEBUG[08-11|07:31:37.047] Inserted new block                       number=362,524 hash=00e3cc..587d86 uncles=0 txs=10  gas=242,234 elapsed=20.601ms    root=adbc44..2c3224
DEBUG[08-11|07:31:37.047] Not allowed to propose block             err="unauthorized validator: 0xA0754ecDD8C0867986e462Ddc97089BD21A3cC1e"

通过获取BSCValidatorSet发现验证者也只剩下2个了,被彻底删除了:

=== BSCValidatorSet 验证者信息获取工具 ===
=== 测试网络连接 ===
链ID: 15656
BSCValidatorSet合约代码长度: 28901 字节
最新区块号: 362563

=== 测试基本方法 ===
合约已初始化: true
工作验证者数量: 2
轮次长度: 1

=== 测试 getValidators ===

 通过过滤BSCValidatorSet的所有日志发现:

--- validatorMisdemeanor 事件 (2 个) ---
1. validatorMisdemeanor | 615 | 0x5eb326a4d5f7b92e363056fc137666b94f94b3ae5c2dbc51a1c89dabf5eba691 | 0xA0754ecDD8C0867986e462Ddc97089BD21A3cC1e | N/A
2. validatorMisdemeanor | 1665 | 0x40bb419b47fb36dd50b2fc4fb2dc727d95d3f496e8bfb5df41a3fd3cb0603f37 | 0xA0754ecDD8C0867986e462Ddc97089BD21A3cC1e | N/A

--- validatorFelony 事件 (1 个) ---
1. validatorFelony | 2814 | 0x044bc3ce05718139f9f2f44de07e0bbaae823070ed808ee85a86b5fd9bb2a2bd | 0xA0754ecDD8C0867986e462Ddc97089BD21A3cC1e | N/A
附上go代码的惩罚调用:
parlia/parlia.go
 if !signedRecently {
			log.Trace("slash validator", "block hash", header.Hash(), "address", spoiledVal)
			err = p.slash(spoiledVal, state, header, cx, txs, receipts, systemTxs, usedGas, false, tracer)
			if err != nil {
				// it is possible that slash validator failed because of the slash channel is disabled.
				log.Error("slash validator failed", "block hash", header.Hash(), "address", spoiledVal, "err", err)
			}
		}
根据日志,这个验证者经历了以下违规过程:

1. 第一次轻罪 (validatorMisdemeanor)

  • 区块: 615
  • 交易哈希0x5eb326a4d5f7b92e363056fc137666b94f94b3ae5c2dbc51a1c89dabf5eba691
  • 时间: 早期阶段

2. 第二次轻罪 (validatorMisdemeanor)

  • 区块: 1665
  • 交易哈希0x40bb419b47fb36dd50b2fc4fb2dc727d95d3f496e8bfb5df41a3fd3cb0603f37
  • 时间: 中期阶段

3. 重罪 (validatorFelony)

  • 区块: 2814
  • 交易哈希0x044bc3ce05718139f9f2f44de07e0bbaae823070ed808ee85a86b5fd9bb2a2bd
  • 时间: 后期阶段

违规机制分析

在BSC的共识机制中:
  • 轻罪 (Misdemeanor): 轻微的共识违规,比如偶尔的区块生产延迟
  • 重罪 (Felony): 严重的共识违规,比如连续多次违规或恶意行为

结果

这个验证者因为:
  1. 累积了2次轻罪
  1. 最终犯下重罪
被永久从验证者集合中移除,这就是为什么现在只有2个验证者在工作的原因。
总结: 验证者 0xA0754ecDD8C0867986e462Ddc97089BD21A3cC1e 因为多次违反共识规则,最终被系统惩罚并移除,这是区块链共识机制的正常保护机制。

 

posted @ 2025-08-11 15:36  若-飞  阅读(11)  评论(0)    收藏  举报