对区块链技术相关问题的思考

版权声明:本文为博主原创文章,转载注明出处。 https://blog.csdn.net/s_lisheng/article/details/90380007
【1】为什么POW达成共识的周期较长?

在像比特币这种公有链中,节点的数量是巨大的,而其基础P2P网络中每个节点都连接相对有限的节点,当有节点需要发送交易到全网时,其进行一次全广播是非常耗时的,当然产生新块后,全网广播也是非常耗时的。如果达成共识的时间设置的太短,对造成比特币频繁的分叉,造成系统不稳定,影响其系统效率。我想其系统设置成每10分钟才达成一次共识一定是有其合理性和必要性的,当然这只是我目前能考虑到的,应该不止上面的考虑。

【2】POW共识算法的开放性

POW共识算法的开放性使共识节点的加入退出无阻碍,无论是有100000个节点还是1 个节点,公有链都能正常工作;公平性使共识节点可以获得与所付出的努力成比例的回报。即算法本身仅需自己就能做到共识,无需与其他节点进行交互,这在网络存在大量节点的情况下是非常重要的。同时考虑共识算法的优劣时一定要考虑共识过程的开销,一定程度上,如果一个共识算法的开销过大,是不适用于(公有链)区块链共识的。

【3】共识算法效率问题

在共识算法中,POW等公有链效率很低,其中一个原因是参与共识的节点太多,可以认为是全网节点都参与共识过程,其效率必然是低下的。而像PBFT,Raft等联盟链共识算法,效率较高,其中一个原因是其参与共识的节点数量较少,只有有限的节点参与。所以说参与共识的节点数量是共识算法效率的一个关键影响因素。

要想提高共识算法的效率,其中一种方式就是采用合理的方法缩小参与核心共识过程的节点数量,非核心共识过程可以全网节点参与,但要缩减参与核心共识过程的节点数量,这样能一定程度上提高共识算法的效率。采用这种思想的算法有DPOS,Algorand等,都是通过缩小参与核心共识过程的节点数量以提高共识算法效率。

在社会体系中,也存在这种思想,比如说,全民公投决定事情,效率是十分低下的,但是如果是通过选举的方法选举出国会议员,再通过国会达成共识决定事情,效率就会提高很多。

当然这只是提高共识算法效率的其中的一种思路。也非一定如此才能提高效率。

【4】智能合约的安全性问题

智能合约安全性是非常重要的。智能合约一旦出现安全性问题,解决起来是较为困难同时代价也非常高昂。理想情况下,我们想要保证我们的智能合约能够100%的正确。形式化验证(Formal verification)让我们可以确保某种错误的状态不会发生。是一种解决办法。只是形式化验证的成本也同样较为高昂。

形式化验证:在计算机科学领域,特别是软件工程和硬件工程中,形式化方法是一种特殊的基于数学的技术,用于规范、开发和验证软件和硬件系统,以提高系统的安全性、可靠性和鲁棒性。形式化方法可以形容为建立在相当广泛的理论计算机科学基础上的应用,特别是逻辑演算,形式语言、自动机理论、离散事件动态系统和程序的语义,还包括类型系统和代数数据类型等理论。一般这类研究主要应用于昂贵的航空、航天、军事器材的操作系统、危险的医疗设备的程序之中。

【5】分区

分区,换句话说,是运行于许多分割了交易验证工作量的联网计算机的并行处理能力。它自动将网络划分为更小的部分,或者说”碎片”,其中每一部分运行一个更小规模的共识协议。分片的方案不止一种。比如把参与验证的节点进行分片,比如以太坊把存储的状态数据进行分片。目前,分片技术还远没有到成熟的这个阶段,一些实验室可能会有一些分片的方案出来。

【6】性能与容量的冲突

涉及一个问题就是区块链性能上去后,其存储容量问题,如何解决?共识节点的存储容量很快就会达到一个上限,怎么办?解决办法之一是将存储与链分离,存储使用分布式存储。Nervos采用的解决办法应该是存储分离的解决办法,将节点分为存储节点、共识节点、轻节点, 轻节点主要是为用户服务使用,共识节点只负责对交易进行共识,不做其他功能,不存储区块信息,存储节点不参与共识,只负责存储区块数据,提供验证、数据查询等功能。这样,存贮节点就相当于一个数据中心了,数据的扩展性就比较容易解决了。

如果以太坊的扩展问题解决了,以太坊的性能提升了一百倍、一千倍,甚至一万倍。我们又会遇到一个新的问题——状态爆炸问题。运行一个以太坊节点,当性能提升一千倍时,它一小时产生的硬盘消耗也增加了一千倍。

猜你喜欢

转载自blog.csdn.net/s_lisheng/article/details/90380007
今日推荐