执行有效性无法归责:针对欺诈证据的责任分配约束以及签名异议
作者: ma2bd创建于 2026年8月10日更新于 2026年8月10日
标签securityneeds discussion
背景: 不正确的执行无法归责于任何人 EquivocationProof 仅涉及一个验证器与 其自身的签名 相矛盾 — — 一轮中两个相同类型的投票,通过锁定验证,一个被矛盾的第一轮证明,一个无效的理由开启。其中没有任何内容将一个区块的 ProposedBlock 与其 BlockExecutionOutcome 相关联。因此,一个验证器每轮只投票支持一个区块,具有完整的理由链,但其区块所携带的结果是伪造的,则 根本没有可提取的证据。我们所拥有的只是 ChainWorkerState::execute_contiguous_block 中的本地检测:
if outcome != verified {
return Err(ChainError::CorruptedChainState(…).into());
}这是单方面的 — — 检测节点没有可传输的信息,任何对等节点都必须重新执行工作才能被说服。这比看起来更重要,因为结果是八个单独提交的组件(BlockHeader 含有 state_hash、messages_hash、events_hash、blobs_hash、oracle_responses_hash…),它们在覆盖范围上有很大差异。一个错误的 state_hash 会留在链上。一个错误的 messages 或 events 字段会将其删除 — — 束包被传送到其他链的收件箱中,并被它们的区块所消耗 — — 而这些下游区块本身都已正确认证,因此它们证明没有任何人有过错。只有 blobs 是自我验证的,因为它们具有内容地址。
内容来源: linera-io/linera-protocol