在今天的基础协作学习中,出现了SignedExtension针对CheckGenesis的impl (有关验证的讨论,参见这次暴乱的谈话 )。回到第一个原则,CheckGenesis的用例是什么?
发布于 2019-10-22 14:35:31
当用户向基于衬底的块链提交事务时,有额外的签名数据附加到事务,以确保事务被应用到用户希望用于的正确的链状态。您可以看到在节点模板中附加了什么样的附加有符号数据。
CheckGenesis的目的是确保事务被提交到正确的链中,而不是另一个链。如果没有CheckGenesis,下面的攻击是可能的。
Alice向Bob支付了一条链上的几个令牌,它们都是常用的。事务按预期进行,Bob接收令牌。鲍勃注意到爱丽丝在另一条链上重新使用了她的钥匙。所以他也把她的交易提交给了第二条链。交易也在第二链上进行,Bob收到第二笔付款。
通过引用事务打算在签名的数据中用于的链,Alice可以防止该攻击。
作为加密建议,一般不应在应用程序之间重用密钥。并不是所有的区块链都是基于基板的,也不是所有的链都包括这个检查。
https://stackoverflow.com/questions/58492500
复制相似问题