专栏名称: 区块链新经济蓝图
《区块链新经济蓝图及导读》官方公众号,实时发布区块链技术行业最新信息、最新原创区块链主题文章、区块链相关活动发布,由区块链行业专家推荐所有发文,是区块链技术学习的权威媒体。
目录
相关文章推荐
51好读  ›  专栏  ›  区块链新经济蓝图

DACA协会关于防重放攻击的具体方案

区块链新经济蓝图  · 公众号  · 区块链  · 2017-07-30 17:23

正文

由亚洲 DACA 区块链协会牵头,清华大学iCenter 区块链技术公开课一期学员以及亦来云技术开发团队,于今日在清华大学 iCenter 召开了关于“防重放攻击”的研讨会议,通过此会议我们进一步提出了关于“防重放攻击”的具体实施方案及建议,供社区同仁参考并指证,希望大家一起推进区块链行业的共同发展。

防重放攻击研讨会现场

具体方案如下:

一、什么是重放攻击


重放攻击是说在比特币硬分叉后,两个链上都有继承自原链的 utxo( 未花费交易 ) ,我们假定分叉后的链一个叫做原链 , 一个叫做新链,如果在原链上发生一笔由 Alice Bob 的转账,交易中的 vin( 输入交易 ) 用的是继承自分叉前的 utxo ,那么这笔交易如果被发送到新链上面,新链的节点会验证通过这笔交易,交易也会被挖到区块的节点打包到区块中,并且被其他节点验证通过,造成的结果就是 Alice 在两条链上的代币资产都会减少。此过程反过来从新链到原链发起攻击也成立。

二、 DACA 的防重放攻击方案


之所以重放会成功,是因为重放交易满足了以下两个必要条件:


1. 被花费的 utxo 都继承自分叉前,并且在两条链上都还没有被花费。

2. 两条链的交易签名验证方式相同


对于第一个条件,可以通过分叉后将自己的所有比特币资产(也就是所有 utxo )全部转移到自己新的比特币地址的方式来避免被攻击,当然这会损失一定的手续费,而且需要用户自己操作。

我们的防重放方案是想办法让第二个条件不成立,就是说修改交易的签名和验证逻辑,让分叉后的两个链的的交易签名互相不认,来达到防重放的目的。

代码修改说明:

1 、修改 unit256.h ,为 class base_blob 增加 negate 方法,此方法用于将 base_blob 类型实例中存储的内容按 bit 取反,比如 01001 取反后变为 10110







请到「今天看啥」查看全文