EIP-8390 深度解读:移除 Altair 同步委员会,用离线 ZK 证明重塑轻客户端验证

发布时间:2026/9/16 20:22:22
EIP-8390 深度解读:移除 Altair 同步委员会,用离线 ZK 证明重塑轻客户端验证 EIP-8390 深度解读移除 Altair 同步委员会用离线 ZK 证明重塑轻客户端验证【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPsEIP-8390Remove the Sync Committee是一项提案目标是从以太坊共识层移除 Altair 升级引入的 onchain 同步委员会Sync Committee及其全部奖励并以链下 ZK零知识证明作为替代。该提案同时废除完全依赖同步委员会的 Altair 轻客户端同步协议。阅读本文后你将完整理解同步委员会的设计缺陷、EIP-8390 对共识层各模块常量、容器、函数、网络、验证者职责的具体删除清单、其与 EIP-7657同步委员会罚没的取舍关系以及激活该提案前必须解决的安全前提。同步委员会为什么存在为什么被淘汰Altair 时代的设计背景同步委员会诞生于 2021 年 Altair 升级其存在的前提是当时的轻客户端无法在单个 epoch 内验证上百万个验证者的 BLS 签名。作为折中协议从活跃验证者集合中抽取512 个验证者作为样本每256 个 epoch约 27.3 小时重新抽样一次。轻客户端信任该样本中三分之二以上签名过的区块头从而以极低计算成本跟踪链。在 eip-2982.md 中可以看到对这一机制的概括一个由 512 名验证者组成的同步委员会每约 27 小时被选出并签署一个区块其公钥被保存在一个易访问的列表中使超轻客户端可以轻松验证签名。这套设计在当时是合理的工程取舍但它留下了三个结构性缺陷正是 EIP-8390 的动机所在。缺陷一同步委员会消息不可罚没Not SlashableAltair 协议为同步委员会消息定义了任何罚没slashing条件。一个被腐化的委员会可以签署一个并不存在的链的区块头而不会损失任何东西。EIP-8390 引用了 EIP-7657 作为最清晰的证据——该提案正是在为同步委员会消息引入罚没条件这本身就说明今天不存在此类惩罚。EIP-7657 指出一旦同步委员会中出现不诚实的绝对多数攻击者就能构造出恶意但合法的LightClientUpdate诱导依赖轻客户端同步协议的信任最小化桥合约采用非规范的最终化区块头。它提出的SyncCommitteeSlashing机制将攻击成本提升到SYNC_COMMITTEE_SIZE * MAX_EFFECTIVE_BALANCE 512 * 32 ETH 16384 ETH主网。缺陷二样本太小EIP-8390 给出了具体数字当时活跃验证者集合为901,505 名验证者持有42,328,615 ETH。而同步委员会只有其中 512 个席位相当于每 1,761 个验证者才有 1 个席位。这意味着跟随同步委员会的轻客户端其安全背书仅来自验证者集合的0.06%且每天轮换、说谎无罚——一个极薄的安全基础。缺陷三发行量为它付费共识层奖励通过权重分配SYNC_REWARD_WEIGHT为 2WEIGHT_DENOMINATOR为 64因此同步委员会拿走共识发行的2/64 1/32。按当时的质押量估算这相当于每年约33,800 ETH总发行约 1,082,000 ETH被用于维持一个存在上述缺陷的机制。替代方案在今天已经可行ZK 证明取代抽样EIP-8390 的核心论点是同步委员会当年只是百万签名验证难题的临时解而简洁证明Succinct Proof已经消除了这一限制。证明端对完整活跃验证者集合上的 Casper FFG 最终性进行证明现在可以在单个 GPU 上、一个 epoch 内完成。验证端验证这样的证明只需毫秒级时间且除了对验证程序的承诺commitment外不需要任何密钥材料。跨链性同一个证明可以在其他链上验证——而同步委员会机制在其他链上从来无法使用。文中明确指出实现今天已经存在Implementations exist today。更重要的是安全语义的升级由这种证明背书的轻客户端继承的是FFG 最终性保证。要逆转一个已最终化的检查点三分之二的质押者联盟必须自相矛盾地投票surround its own vote且三分之一的质押将被罚没。相比之下同步委员会没有任何可比的惩罚。规范详解EIP-8390 从共识层删除了什么EIP-8390 的关键词遵循 RFC 2119 与 RFC 8174 的 MUST/SHOULD/MAY 语义。文中未定义的名称沿用ethereum/consensus-specs仓库定义EIP8390_FORK_EPOCH为激活 epoch。执行层Execution Layer无需任何修改——这是一次纯粹的共识层变更。被移除的常量以下常量被整体移除SYNC_COMMITTEE_SIZE、EPOCHS_PER_SYNC_COMMITTEE_PERIOD、SYNC_COMMITTEE_SUBNET_COUNT、TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE、SYNC_COMMITTEE_BRANCH_DEPTH以及轻客户端广义索引generalized indices。SYNC_REWARD_WEIGHT。注意WEIGHT_DENOMINATOR保持 64 不变且该权重不会被重新分配详见 Rationale。DOMAIN_SYNC_COMMITTEE、DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF、DOMAIN_CONTRIBUTION_AND_PROOF。实现方MUST NOT复用这些DomainType值。被移除的容器SyncAggregate、SyncCommittee、SyncCommitteeMessage、SyncCommitteeContribution、ContributionAndProof、SignedContributionAndProof、SyncAggregatorSelectionData以及轻客户端全家族LightClientBootstrap、LightClientUpdate、LightClientFinalityUpdate、LightClientOptimisticUpdate和LightClientHeader。被移除的函数process_sync_aggregate、process_sync_committee_updates、get_next_sync_committee、get_next_sync_committee_indices以及所有建立在其上的轻客户端辅助函数。作为对照可以在 eip-7658.md 中看到当前process_sync_committee_updates的职责——它负责在委员会周期边界将周期数据归档到previous_best_sync_data以支持历史轻客户端数据回溯。BeaconBlockBody 与 BeaconState 的修改BeaconBlockBody移除sync_aggregate字段其余字段保持顺序与类型不变。BeaconState移除current_sync_committee与next_sync_committee字段其余字段保持顺序与类型不变。修改后的 process_blockprocess_sync_aggregate调用被删除其余流程原样保留def process_block(state: BeaconState, block: BeaconBlock) - None: process_block_header(state, block) process_withdrawals(state, block.body.execution_payload) process_execution_payload(state, block.body, EXECUTION_ENGINE) process_randao(state, block.body) process_eth1_data(state, block.body) process_operations(state, block.body) # process_sync_aggregate(state, block.body.sync_aggregate) # [Removed in EIP-8390]修改后的 process_epochprocess_sync_committee_updates的调用同样被移除。奖励结构get_flag_index_deltas与get_proposer_reward均不改变。SYNC_REWARD_WEIGHT是剩余2/64份额的唯一使用者因此该份额将不再被发行——净效果是共识层发行量下降2/64。网络层变更Gossip 主题移除sync_committee_{subnet_id}、sync_committee_contribution_and_proof、light_client_finality_update、light_client_optimistic_update。ENR 字段移除syncnets。Req/Resp 方法移除LightClientBootstrap、LightClientUpdatesByRange、LightClientFinalityUpdate、LightClientOptimisticUpdate。在EIP8390_FORK_EPOCH及之后的 slot节点MUST NOT在这些主题上发布消息且MUST忽略收到的相关消息。验证者职责移除同步委员会相关的全部职责委员会分配assignment、消息生产、子网订阅、聚合者选择与贡献生产。分叉过渡分叉升级函数拷贝所有保留字段并丢弃两个同步委员会字段。在EIP8390_FORK_EPOCH及之后包含sync_aggregate的区块无效。Rationale为什么是移除而非修补修补不够与 EIP-7657 的对比EIP-7657 将同步委员会消息变为可罚没这确实改善了现状但 EIP-8390 认为这不够罚没只是把腐化委员会的成本抬高到 512 名验证者的质押额却没有让委员会成为关于验证者集合的声明。轻客户端仍然信任一个样本、仍然假设样本内部存在诚实多数、仍然支付1/32的发行量。而三分之二质押者实际证明过什么的证明让样本彻底无事可做。奖励权重不重新分配移除SYNC_REWARD_WEIGHT而保持WEIGHT_DENOMINATOR 64发行量直接下降1/32无需其他改动。若将分母降为 62 则可保持发行量不变。EIP-8390 明确表态发行量政策超出本提案范围但不为已移除的机制继续付费则属于本提案范围。域类型退役DomainType值很廉价。退役这三个值可以防止任何分叉前由同步委员会产生的签名在后来的上下文中继续有效。向后兼容性影响这是一次共识层破坏性变更需要协调分叉所有已部署的 Altair 轻客户端都会失效通过LightClientUpdate同步的客户端在分叉时停止工作。Beacon API 端点移除POST /eth/v1/beacon/pool/sync_committees、GET /eth/v1/beacon/states/{state_id}/sync_committees、POST /eth/v1/validator/duties/sync/{epoch}、GET /eth/v1/validator/sync_committee_contribution、POST /eth/v1/validator/contribution_and_proofs、POST /eth/v1/validator/sync_committee_subscriptions以及/eth/v1/beacon/light_client/*。编码变化BeaconState与BeaconBlockBody形状改变按分叉解码它们的工具必须更新。分叉前的状态与区块在其自有分叉 schema 下仍可解码。验证者无需操作质押者什么都不用做同步委员会职责停止分配质押收益率随发行量下降1/32的共识部分而下降。安全考虑激活前的硬前提激活必须先于替代设施就绪移除同步委员会会同时移除协议内轻客户端跟踪链的唯一途径。因此本 EIP 激活前必须已存在公开的证明基础设施持续发布具有消费者可依赖特性的最终性证明。EIP-8390 明确指出它不规定该基础设施调度由客户端团队决定而非本文档。证明生产没有协议内激励本 EIP不增加任何协议内激励来驱动最终性证明的生产也未提议任何此类激励——这是留给生态的开放问题。复用域导致签名重放DOMAIN_SYNC_COMMITTEE0x07000000与DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF0x08000000被退役。如果后续某个消息类型采用了任一值分叉前同步委员会生成的签名将能针对它完成验证——这是实现方在设计新消息类型时必须规避的风险。总结EIP-8390 是一份减法式的核心协议提案不新增任何机制只完整移除一个已失去存在理由的中间层。它用 ZK 证明替代统计抽样把轻客户端的安全基础从0.06% 样本的诚实多数假设升级为FFG 最终性的质押罚没保证同时砍掉1/32的共识发行。该提案与 EIP-7657打补丁形成鲜明对照并在 EIP-7658轻客户端数据回溯等提案的背景下勾勒出以太坊轻客户端从抽样信任走向证明信任的演进方向。当前其状态为 Draft激活时机与证明基础设施的部署节奏紧密绑定值得持续跟踪。Copyright and related rights waived via CC0.【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考