首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链跃迁方式——最长链共识演变成最重链共识

DAG是一个比特币的扩容方案,如果要理解这个问题首先就要知道比特币为啥要扩容,以及扩容的问题在哪里。

为啥要扩容——10分钟1MB太慢了。

问题在哪里——如果简单粗暴地提高区块大小,例如一个区块加到100M,由于网速的限制会导致很多节点还没有收到或者下载完新区块下一个区块就被挖出来了,结果就是全网的不一致性提高(大家不在同一条链上挖矿),然后在同一条链上挖矿的算力降低,于是可靠性降低。

好理解的方法是,假设一个100M的区块传遍一半的网络需要10分钟,而一半的网络10分钟可以产生一个区块,那么实际上网络里最长的链上,永远都只有一半的算力,因为另外一半的算力还没听到这条链没来得及去挖的时候,这条链已经多了一个新区块了。

我们从攻击者的角度讲——原来你要和全网所有其他算力竞争,现在,你只要打赢一半算力就能进行51%攻击了。也就是说,假设你有34%的算力,你只在自己的链上挖矿,而其他的节点由于网络有延迟所以总是达不成一致,老是分成两个叉,每个叉上只有33%的算力,结果就是你只用了34%的算力产生的链就比其他节点产生的要长了。

DAG的解决方案是,将最长链共识改成最重链共识。每个挖出来的区块,不仅仅连在之前的一个区块上,而是之前它听到的所有区块上。放在之前的例子里,就是假设一半算力挖了个区块出来,他看到了网络里有两个分叉,都有效,于是它把区块同时连到这两个上面说这两个都是有效的区块,然后,同一层的算力都统计到一起。久而久之,这个链就不再是链了,而是一个DAG。然后,如果你拥有34%的算力还想进行攻击,诚实节点会看到你的链和另外一个DAG,虽然一样长,但是你的链上每层都只有一个块,而这个DAG上每层有两个块,于是这个DAG更重,然后按照规则,不选链而选DAG。

总而言之,DAG的好处就是即便增加区块大小或者区块频率造成网络里产生大量分叉,然而攻击者还是需要51%的算力才能进行攻击。

缺点在于,首先同时产生两个有效区块并不是说交易量就翻倍了,因为里面可能有大量交易时重复的,而且这些交易都存在链里会造成冗余。

其次,如果两个有效区块里有个交易双重支付了怎么办?必须有个复杂的机制来判别两个交易哪个有效。

最早的DAG是为了解决BTC的效率问题。众所周知,区块链只有一条主链,也就是说打包出块无法并发执行,而用DAG的拓扑结构存储区块,可以在之后某一个节点归并成一个区块。随着进一步的演化,变成了完全抛弃区块链的一种解决方案。

商业合作

添加时备注“商业合作”

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181129B1N3QP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券