对区块链技术几个问题的思考

907 阅读7分钟

【1】为什么POW达成共识的周期较长?

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

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

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

【3】共识算法效率问题

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

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

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

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

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

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

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

【5】分区

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

【6】性能与容量的冲突

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

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

【7】比特币解决的核心问题——“双重支付”

可以说比特币最大的创新是用非中心的方式解决了“双重支付”问题。之前已存在的交易系统,都是中心化的,由一个中心化的机构(例如银行)来管理记录一个账本,可以说非常简单粗暴的解决了“双重支付”,其安全保证是这个中心机构自身非常强大,很难攻破。而比特币解决这个问题,不是依靠单个节点的强大,而是依靠整个网络,通过整个网络维护一个公共的账本。

可以这样理解,中心化机构解决“双重支付”,不是因为它是中心化机构,不是因为它自身强大安全系数高,而是因为它知道所有人的交易。同一笔钱,A发B,A又发给C,系统因为掌握了所有的交易,所以能够检测出第二笔交易是非法交易。但是这个中心化机构的安全成本是非常高的。比特币为了解决“双重支付”,它的思路是,既然我单个节点不足以保证安全性,我就依靠整个网络来保证,我将每笔交易都告诉网络上所有的人(交易创建后会广播到全网),把整个网络看为一个中心化系统。这样这个网络知道所有的交易,问题就解决了。但是一个新的问题是,这么多节点(网络中可能存在恶意节点),到底谁说了算,于是POW共识算法诞生,由POW算法,随机的从分布式网络中选取一个节点,由这个节点处理交易(出新块,广播到全网,经过验证后加到最长链中,如果分叉,较短的链会被抛弃)。由于诚实节点拥有系统大部分的算力,恶意攻击者的拥有的算力少,其攻击链长度是很难超过正常链攻击成功的。其系统安全性,由整个网络的算力保证。如果要成功攻击,攻击者至少需要控制整个网络51%的算力,而这个攻击成本是非常巨大的。另外比特币为了维护网络的运行及鼓励诚实节点,设有挖矿、交易费等经济奖励机制,鼓励拥有算力的节点自觉维护网络而不是攻击网络。