元宝币成功抵御大规模区块链攻击并分享经验

2014-03-05 03:37:46
元宝币成功抵御大规模区块链攻击并分享经验

元宝币团队就近期数字货币社区关注的回滚事件给出了详细解释。回滚事件是由于恶意攻击而导致,元宝币团队解释了整个事件处理过程,分享了细致的技术细节。

关于元宝币遭受区块链攻击的说明

一、背景

元宝币是pos(股权证明)机制和pow(工作量证明)机制混合的货币系统,早在2011年btc圈子中就有了对pos股权证明这个概念的讨论,ppcoin是最早采用这种机制的货币系统(https://peercoin.net/bin/peercoin-paper.pdf)。

这种混合机制对BTC blockchain信任机制进行了重新设计,不再采用BTC中以pow工作量最高(blockchain最长)的blockchain作为主blockchain,而是依赖于对消耗币龄的判断,消耗币龄最长的blockchain将作为主blockchain。

此设计大大减轻了51攻击的可能,因为在 btc网络中,诚实的节点至少需要占据51%的算力才能维护网络的安全。(而在pos区块中,要进行51%攻击)首先要控制数量众多的币,成本可能要高于获得51%的算力,这样就提高了攻击的成本(攻击者需要控制51%以上的币)。其次,攻击者在攻击网络时,其币龄也会消耗,这将使得攻击者阻止交易进入主链的行为变得更加困难。

二、缺陷

在具体的货币系统信任机制的实现中,pow block和pos block各有权重,每个pow block权重为1,而pos block作为消耗币龄主要方式,权重则大得多(ProofOfStakeLimit / (bnTarget+1))。在blockchain出现分支时,主blockchain的判定往往是产生利息最多那个分支获胜。也就是说pos block完全凌驾于pow block之上。

这种机制某种程度上存在着缺陷,在ppcoin的论坛上,singlethread首先发现了这个缺陷(https://www.peercointalk.org/index.php?topic=936.0)。任何一个人只要有能力生成pos block,就可以将pos block依附到blockchain的某一个适当的位置,并造成这个位置之后的所有block都变成无效的block。之所以是适当的位置,这个位置至少要满足两个条件:

1. 必须在自身币龄满30天的blockchain的位置之后;

2. 这个pos block的权重必须大于这个位置之后的所有block(包括pow和pos)的权重之和恶意的攻击者可以利用这个缺陷,从blockchain中踢掉大量的pow block,导致blockchain回滚,并使挖矿难度降低,从中获利。

三、我们的方案

针对pos的这个缺陷,我们修改了blockchain的信任机制,pos的权重被减弱,pow的权重被增强:

1. 位于pos block之后的pos block,权重为:0;
2. 位于pow block之后的pos block,权重为:pow block的权重 + 1;
3. 位于pow block之后的pow block,权重为:ProofOfWorkLimit / Target;
4. 位于pos block之后的pow block,权重为:2 * ProofOfWorkLimit / Target;
修改后的信任机制中pos block的权重主要依赖于它的上一个pow block,因为现实中pow block数量要比pos多得多,所以这种pos block权重和pow block权重的混合信任机制是顾及pos block权重的同时,更侧重于pow block,不仅能有效的降低51攻击的可能,更弥补了上述缺陷。我们实现了上述方案,修正了由这个缺陷导致的回滚问题,于2014年2月21日发布了版本v0.7.0.2(https://www.ybcoin.com/zh-hans/?page_id=102),并在github(https://github.com/ybcoin/ybcoin)上公开了源代码。为了给第三方应用留足升级时间,新的信任机制具体生效时间为blockchain中的第380000个block。

四、恶意攻击

我们没有考虑到的是,恶意攻击者注意到了新的blockchain信任机制的生效时间,在元宝币blockchain的高度临近380000时,利用这个缺陷,对元宝币的blockchain接连发动了三次攻击,导致元宝币的blockchain先后三次回滚,总计2000个block先后变为无效,对元宝币的正常交易造成了极为恶劣的影响。

元宝币官方在第一时间发现了恶意攻击,并采取一系列措施使损失最小化:

1. 向所有交易平台发出警告暂停交易;
2. 修改源代码,采取摒弃没有升级的节点,增加检查点,调整信任机制等措施,先后发布两个版本;
3. 积极联系矿池更新元宝币钱包。

最终,在元宝社区的一致努力下,元宝币完成了对blockchain信任机制的升级,目前区块链已经稳定,攻击难度大大提高。经过此事后,我们将会总结经验教训,更加谨慎的处理升级问题,不给任何恶意攻击者以可乘之机。我们由衷的感谢元宝币用户社区、矿池、和各个交易平台对我们的配合和支持!

元宝币官方团队 2014/3/5

转自:元宝币论坛

OKEX下载欧易下载OKX下载

okex交易平台app下载

下五篇