区块链数据膨胀问题 区块链 数据爆炸

皕利分享 67 0

本篇文章主要给网友们分享区块链数据膨胀问题的知识,其中更加会对区块链 数据爆炸进行更多的解释,如果能碰巧解决你现在面临的问题,记得关注本站!

有谁了解CVT的DAG有向无环图,有什么优势?

DAG(Directed Acyclic Graph) 有向无环图在设计上有别于普通区块链,其并没有区块(Block)的概念,不需要矿工为交易进行被动包,取而代之的是交易执行人为自己的交易进行主动打包并广播。在基于区块和链状结构的网络中,由于其架构设计上的局限性,存在着吞吐量低,交易确认时间缓慢,节点数据膨胀等问题。

CyberVein如果采用旧有的区块链模式进行数据处理,以上这些缺陷无疑对系统的影响是巨大的。而DAG结构对这些方面有着非常大的改进,DAG在交易吞吐量方面理论上没有限制。另外在其他区块链上,储存也有较大限制,节点⼀般需要同步全网的所有交易,才能使用智能合约等功能,而节点需要同步的数据在快速的增加,导致很多主流的区块链需要同步的数据已经高达数百GB。与此同时,⼀些侧链技术的项目虽然很大程度上降低了节点的大小,但是依然不能解决实际问题。DAG在储存⽅⾯的优势在于,用户只需要维护自己跟自己有关的交易单元以及其⽗辈单元即可,在单节点上无需同步下载全网交易数据即可完成交易的账目记录。

区块链信息越来越大怎么办?

当初中本聪也考虑了这个问题,他认为技术也在不断发展中,更好的存储和网络技术有能力存储和传输日益增长的区块链。 即使如此,中本聪还是设置了每个区块1M大小的限制,防止区块链过度膨胀。 让我们做一个计算:每十分钟产生一个区块链,那么比特币诞生10年以后,也就是到2019年,区块链的大小可能会有多大:10*365*24*6 ≈ 525G。再过10年到2029年,差不多1T。即使在现在看来,问题也不大。所以倒是不必太担心。

但区块链的空间,不仅仅会随着时间增长。现在每个区块1M的空间,已经有些不能够满足比特币的发展了。为什么?因为交易量大了,每个区块空间只有1M,能容纳的交易数量有限,所以就要考虑扩容区块链来突破这个限制。 2015年,社区对区块链的扩容讨论了多次。最终,仍然保持1M大小的区块链空间,但可以容纳更多交易的“隔离见证”技术生出,可能会作为区块链扩容的第一步。后续还会有“闪电网络”其他技术来缓解区块链空间紧张的问题。 但无论如何,比特币区块链也不可能无限扩容。在我的思考中,比特币区块链最终会成为一个锚,其他应用有自己的数据保存方式,不必都保存在比特币区块链上,但可以把数据的Merkle根保存在比特币区块链,一次来保证数据的安全性。

POA(Proof of Activity)区块链共识算法

POA(Proof of Activity)算法是一个区块链的共识算法区块链数据膨胀问题,基本原理是结合POW(Proof of work)和POS(Proof of stake)算法的特点进行工作,POW算法和POS算法的具体内容可以参考:

POW算法 :

POS算法 :

POA算法相比于其他算法可以改进网络拓扑,维持在线节点比例,需求更少的交易费同时减少共识算法过程中的能量损耗。

POA算法需求的网络中同样包含两类节点,矿工和普通参与者,其中普通参与者不一定一直保持在线。POA算法首先由矿工构造区块头,由块头选出N个币,这N个币的所有者参与后续的校验和生成块的过程。

从这里可以看到POA算法不仅与算力有关,后续的N个参与者的选举则完全由参与者在网络中所拥有的币的总数量决定。拥有越多币的参与者越有机会被选为N个后续的参与者。而后续N个参与者参与的必要条件是这N个参与者必须在线,这也是POA命名的由来,POA算法的维护取决于网络中的活跃节点(Active)。

POA算法的一个理想的基本流程是,类似于POW协议,矿工构造出一个符合难度要求的块头,通过矿工得到的块头计算衍生出N个币的编号,从区块链中追溯可以得到这几个币目前所述的参与者。矿工将这个块头发送给这N个参与者,其中前N-1个参与者对这个块进行校验和签名,最后第N个参与者校验并将交易加入到该块中,将这个区块发布出去,即完成一个区块的出块。

一个理想过程如下图所示:

在实际运行中,无法保证网络上所有参与者都在线,而不在线的参与者则无法进行校验和签名,这个无法被校验和签名的块头则会被废弃。

即在实际运行中,应该是一个矿工构造出块头后广播给各个参与者签名,同时继续重新构造新的块头,以免上一个块头衍生的N个参与者存在有某一个没有在线,而导致块头被废弃。

因此,在这种情况下,一个块是否被确认不仅与矿工的计算能力有关同时也与网络上的在线比例有关。

与纯POW相比,在与比特币(POW)同样10分钟出一个块的情况下,POA由于会有参与者不在线而产生的损耗,因此,10分钟内矿工可以构造的块的数量会更多,即块头的难度限制会降低,那么矿工在挖矿过程中会造成的能量损耗也会降低。

与纯POS相比,可以看到POA的出块流程并不会将构造区块过程中的相关信息上链,可以明显减少区块链上用于维护协议产生的冗余信息的量。

本节对上诉协议中一些参数设置进行分析

在矿工构造出块头后对块头进行校验和区块构造的N个参与者的数量选定比较类似于比特币中每一个块的出块时间的选取。比特币中选择了10分钟作为每一个块的期望出块时间并通过动态调节难度来适应。

这里N的取值同样可以选择选定值或者动态调节。动态调节需要更加复杂的协议内容,同时可能会带来区块链的数据膨胀,而复杂的协议也增加了攻击者攻击的可能性。另外暂时没有办法证明动态调节可以带来什么好处。静态调节在后续的分析(4 安全分析)中可以得到N=3的取值是比较合适的。

从上面的描述可以看到,构造新的区块的除了矿工还有从块头中衍生出来的N个币所有者。在构造出一个新的区块后,这些参与者同样应该收到一定的激励,以维持参与者保持在线状态。

矿工与参与者之间的非配比例与参与者的在线状态相关。给予参与者的激励与参与者保持在线状态的热情密切相关,越多参与者保持在线状态,能更好地维持网络的稳定。因此,可以在网络上在线参与者不够多的时候,提高参与者得到的激励分成比例,从而激发更多的参与者上线。

如何确定当前参与者的在线情况呢区块链数据膨胀问题?可以最后第N个参与者构造区块时,将构造出来但是被废弃的块头加入到区块中,如果被丢弃的块头数量过多,说明在线人数过低,应当调节分成比例。

同时最后第N个参与者与其他参与者的分成同样需要考虑,第N个参与者需要将交易加入区块中,即需要维护UTXO池,同时第N个参与者还需要将被丢弃的块头加入新构建的区块中。

为了激励其将废弃区块头加入新构建的区块中,可以按照加入的区块头,适当增加一点小的激励。虽然加入更多的区块头,可以在下一轮的时候增加分成的比例,应当足够激励参与者往区块中加入未使用的块头了(这里参与者不可能为了增加分成而更多地加入区块头,每一个区块头都意味着一位矿工的工作量)。

一个参与者如果没有维护UTXO池则无法构造区块,但是可以参与前N-1个的签名,因此为了激励参与者维护UTXO池,作为最后一个构造区块的参与者,必须给予更多的激励,比如是其他参与者的两倍。

从3.2的描述中可以知道一个用户必须在线且维护UTXO池才可能尽可能地获得利益。这种机制势必会导致一些用户将自己的账户托管给一个中心化的机构。这个机构一直保持在线,并为用户维护其账户,在被选为构造区块的参与者时参与区块的构建并获取利益。最后该机构将收益按照某种形式进行分成。

上面说到参与者必须用自己的密钥进行签名,而托管给某个机构后,这个机构在可以用这个密钥签名构造区块的同时,也有可能使用这个密钥消费用户的财产。这里可以采用一种有限花销的密钥,这个密钥有两个功能,一个是将账户中的部分财产消费出去,另一个是将所有财产转移到一个指定账户。在托管的时候可以使用这个密钥,在被通知部分财产被花费后可以立即将所有财产转移到自己的另一个账户下,以保证财产的安全。

从上面的分析可以看到,POA的安全性与攻击者所拥有的算力和攻击者所拥有的股权有关。假设攻击者拥有的在线股权占比为 ,则攻击者的算力需要达到其他所有算力的 倍才能达成分叉。假设攻击者股权总占比为 ,网络中诚实用户的在线比例为 ,则攻击者的算力需要达到其他所有算力的 倍才能达成攻击。

攻击的分析表格如下:

从上文的分析可以看到,POA算法相比于其他算法可以改进网络拓扑,维持在线节点比例,需求更少的交易费同时减少共识算法过程中的能量损耗。同时,PoA协议的攻击成本要高于比特币的纯PoW协议。

参考文献:Proof of Activity: Extending Bitcoin’s Proof of Work via Proof of Stake

写到这里,本文关于区块链数据膨胀问题和区块链 数据爆炸的介绍到此为止了,如果能碰巧解决你现在面临的问题,如果你还想更加了解这方面的信息,记得收藏关注本站。

标签: #区块链数据膨胀问题

  • 评论列表

留言评论