在今天的基础协作学习中,出现了 CheckGenesis 的 SignedExtension 隐含内容(有关验证的讨论,请参见this riot conversation)。 回到第一原则, CheckGenesis 的用例是什么?
答案 0 :(得分:0)
当用户向基于Substrate的区块链提交交易时,该交易会附加额外的签名数据,以确保将其应用于用户预期的正确链状状态。您可以在node template
中查看附加了哪些其他签名数据 CheckGenesis
的目的是确保将事务提交到正确的链,而不是其他链。如果没有CheckGenesis
,则可能会发生以下攻击。
爱丽丝在双方都常用的链上向鲍勃支付了一些代币。 交易按预期进行,Bob收到了令牌。 鲍勃注意到爱丽丝在另一条链上重复使用了她的钥匙。 因此,他也将她的交易提交到第二条链。 交易也在第二条链上进行,鲍勃收到第二笔款项。
通过在签名数据中引用交易打算使用的链,爱丽丝可以防止这种攻击。
作为加密建议,通常不应在应用程序之间重用密钥。并非所有的区块链都基于Substrate,也不是所有的链都包含此检查。