在今天的 Substrate Collaborative Learning 中,出现了 CheckGenesis 的SignedExtension impl(有关验证相关的讨论,请参见this riot conversation )。回到首要原则,CheckGenesis的用例是什么?
问问题
36 次
1 回答
0
当用户向基于 Substrate 的区块链提交交易时,交易会附加额外的签名数据,以确保将其应用于用户想要的正确链状态。可以看到节点模板中附加了什么样的附加签名数据
的目的CheckGenesis
是确保交易提交到正确的链而不是不同的链。没有CheckGenesis
,以下攻击是可能的。
爱丽丝在他们都常用的链上向鲍勃支付了一些代币。交易按预期进行,Bob 收到代币。Bob 注意到 Alice 在另一条链上重新使用了她的密钥。所以他也将她的交易提交给第二条链。交易也在第二条链上进行,Bob 收到第二笔付款。
通过在签名数据中引用交易的目标链,Alice 可以防止这种攻击。
作为加密建议,您通常不应在应用程序中重复使用密钥。并非所有区块链都基于 Substrate,也并非所有链都包含此检查。
于 2019-10-22T14:35:31.403 回答