LikeLib:给区块链技术发展换一种思路,也许能找到出路

比特币即将迎来第一个十周年,这十年中比特币与其背后的区块链技术蓬勃发展,以去中心化技术之名,大有变革整个在线数字世界的气势和雄心。

不过,雄心归雄心,正蓬勃发展的区块链技术,尤其是公链领域,有一个瓶颈却一直有待突破:以当今数字世界的规模和体量,任何一个在线系统,如果没有一个大容量、高吞吐的基础设施,就无法承载哪怕仅仅一个互联网级别的应用。

近10年过去了,为了提高区块链系统的性能,前赴后继出现了大把项目,但到今天为止,并没有出现多少能够承载互联网级别应用的解决方案。

这是一个世界性的难题,全世界最聪明的学者、开发者都在尝试解决这个问题。行业内存在大量对于区块链公链性能瓶颈及解决方法的讨论,有些充满洞见,令人受益匪浅,但也有不少谬误,更有很多为了自身项目宣传而编造的似是而非的见解,颇有把讨论引入歧途的风险。在和多位该行业顶尖的学者、开发人员、投资人多次深入交流之后,我把自己的看法分享出来,这样既可以让自己的一些思考能够沉淀,同时,也希望能和对该话题感兴趣的更多同仁进行一些探讨。

不要只关注性能瓶颈,而忽略了容量瓶颈

先说一下我的一个结论:在当前以类金融为主流应用场景的情形下,区块链系统最首要的性能瓶颈是区块数据的广播延迟造成的,本质上受限于互联网的带宽和通讯延迟,这一点直接制约了吞吐量 TPS。

只要是「Chain of Blocks」的系统,无论具体采用了什么共识算法,无论是工作量证明 PoW、权益证明 PoS、拜占庭容错 BFT,还是委托权益证明 DPoS,在出下一个区块之前,都需要保证前一个区块在全网有一定的同步率,从而约束了每个区块不能太大,出块频率也不能太高,然后,这个问题无解。

请注意,这里说的区块链系统特指「Chain of Blocks」的系统,其特征是要保证系统能最终收敛到一条单一链表结构并只有这条链上面的区块才是被确认的,反例是「Graph of Blocks」系统。

「容量」这个问题的关注度远远少于吞吐量,原因很简单:因为吞吐量这个短板还没解决,所以容量问题被掩盖住了请记住,一旦吞吐量实现了大幅提升,容量问题马上就会出现:在一个高吞吐的系统上,如果用户量上不去,很可能高性能根本跑不满。

一个典型的例子是 EOS。当EOS以丧失去中心化为代价而解决了吞吐量问题之后,容量问题马上就显现出来了。然后,EOS 把账簿容量瓶颈这个问题包装成了一个稀缺资源,并将其代币化,成了 EOS RAM 虚拟币。当然除了内存,单台全节点 CPU 也会成为容量的瓶颈,所以也被代币化,成了 EOS CPU 虚拟币。不过,在类金融应用场景中,通常计算复杂度非常低,所以,内存会是主要瓶颈。

另外,我的另外一个观点是:共识算法其实帮不了解决性能和容量的瓶颈,试图从标新立异的共识算法出发,提升「Chain of Blocks」系统性能的努力,基本上不会让系统性能有实质上的大幅提升。

总之,解决上面所提及的两个瓶颈问题,需要的是分布式系统设计上的巧思妙想,这和共识算法相关,也和密码学相关,但是本质的出发点不是共识算法和密码学。

性能瓶颈: 一个出块节点在做什么

首先出块节点也是全节点,接受全网的已确认区块以及未确认交易,并构造成链,不断维护账簿的最新状态,然后抓紧机会试图在链尾追加新的区块。无论采用哪种共识算法,都会历经以下几个步骤:

第一个步骤,根据账簿的最新状态,在未确认交易集合中选出若干验证合法的交易,然后构造一个新的区块;

第二个步骤,为这个新的区块,参与出块的权力的竞争或者候选,在这个阶段,大概率会因为账簿状态更新了 即其他节点成功出块了 而中断,回到第一步;

第三个步骤,获得出块的权力之后,向全网广播这个新的区块,更新账簿状态,回到第一步。

不同的共识算法,其核心差异在于如何完成其中的第二个步骤的出块权的竞争或者候选。但是无论哪种共识算法都有一个不可调和的性能矛盾,本质上由区块数据广播延迟导致。这个矛盾使得如果每次出块比较大,可以包含更多的交易,就必须有比较长的出块间隔,以保障该区块在下一次出块之前,在全网被充分传播。如果传播不充分,在 PoW 和 PoS 系统中,将表现为较高的分叉率 出了无效的块,而在 BFT 系统中则表现为较高的失败率 区块拿不到 2/3 的同意票。

Proof-of-Work 和 Proof-of-Stake

PoW 通过设定一个 Hash Target,要求 Hash 值必须小于一个特定的值。例如,将256 位的 Hash 值当成一个大整数看待。而 Hash 值必须根据新区块数据拼合一个 Nonce 数据计算而得。找到满足 Hash Target 对应 Nonce 的任何一个节点,便获得了出块的权力。由于只能通过随机穷举的方式找 Nonce,所以这个竞争就转换成了计算 Hash 的算力的竞争。PoS 如 Peercoin 是PoW的一个变种,引入了消耗 Coin Age 来增大 Hash Target 的机制,使得出块权力的竞争可以部分地被数字货币持有的时间和数量所代替。

可以看到,PoW 机制最大的好处是用一个简洁的算法,实现了完全非许可 premissionless 的出块权随机指定,竞争节点之间完全不需要协同和通讯,可以轻松支持任意数量的出块节点共同竞争,具有极佳的去中心特性。也正是由于这一点,这个算法导致了区块广播延迟和出块间隔之间矛盾。当出块间隔较短时,一个新的区块尚未充分全网广播之前,就有另一个矿工在同样的高度出了另一个新的区块,即发生了所谓的分叉 Fork。这种情况下,最终其中一个区块会被抛弃掉 ophaned。发生这种情况的概率不能太高,否则会显著降低原为 51% 的算力攻击基准 Selfish Mining,极端情况甚至会导致分叉始终无法到达稳定收敛。

区块广播延迟主要由区块大小和全网各个节点间的带宽决定。当前的互联网环境,大致需要 10 秒可以广播到 90% 以上的节点。所以在比特币网络中,10 分钟左右的出块间隔使得区块分叉的概率极其低。2018 年整个上半年,仅出现两次分叉。而在以太坊网络中,15 秒左右的出块间隔使得区块分叉的概率始终保持在 10% 左右,即使其区块远小于比特币的区块。要注意一点,PoW 的出块间隔是统计意义上的,实际情况是出块间隔时大时小,而统计期望是 10 分钟。这个并不是全网算力波动造成的,而是因为搜索 Nonce 的过程是个随机刺探过程 撞大运,所以很多矿池都给出了自身的运气值曲线。

PoW 带来算力竞争,即所谓的挖矿,确实消耗了大量能源。不过这也为 PoW 系统发行的每一个币奠定了一个基础成本,使之价值有个底线。需要指出的是,PoW 的算力和区块链系统的性能没有任何联系,任何加速 hash 算法的软件或者硬件都不会提高区块链系统单位时间的吞吐量。这就是为什么比特币区块链的全网 hash 算力提高了万亿倍,但是其吞吐量一直是 7 TPS 左右。

实际上总能源消耗,在宏观上只和币价、电价以及数字加密货币的投资信心相关,和挖矿效率无关。

拜占庭容错 BFT

拜占庭容错类共识算法采用随机算法确定每一次出块的节点,根据账簿上的数字货币地址,而不是 IP 地址。所有参与出块候选的节点无须竞争。新的区块将被委员会 一组验证者 所有成员验证并签名 投票,然后广播全网,继而开始下一个出块的流程。

与 PoW 不同的是,BFT 出块候选是一个协作的过程,期间至少涉及 O(n^2) 的通讯复杂度,而 PoW 在出块竞争过程中无须任何通讯代价。基于 BFT 的协作过程将不会导致分叉,也不需要消耗稀缺资源 算力或者 Coin Age,但是由于这个协作的过程涉及到相当多的数据通讯,所以这个过程无法在全网候选,验证并签名的过程无法在全网展开。这就是为什么 BFT 类算法一定会涉及到一个委员会的构建过程,并且验证签名只在一个小范围里面发生,剩下的人相信他们就好了。

BFT 类算法的投票通常是有权重的,以规避女巫攻击 Sybil Attack。而这个权重多与参与者的权益相关,和 PoS 的精神类似,进而现在很多人将 BFT 的这类投票算法称为了 PoS 算法。而事实上,BFT 类共识算法和一开始提出的 PoS 算法(例如 Peercoin )是本质不同的机制。

上面我们提到,不同的 BFT 类算法其具体选定出块节点以及委员会成员的过程和系统的性能关系不大。和 PoW/PoS 类似,其吞吐性能同样决定于每次出块的大小,以及出块的周期。在 BFT 系统中,如果想要允许每次出块比较大,就需要出块的周期也比较大,从而大概率保证新出的块及其委员会的签名数据在委员会内部完全传播。如果这个传播不充分,将可能导致委员会成员无法达成 2/3 以上的投票,进而使得委员会内部验证并签名过程超时,最终在本出块的周期内出块失败。

理论上说,委员会的规模远小于全网,BFT 类算法中的广播延迟会比同等规模的 PoW/PoS 网络小。事实上也确实如此,但是基于 Gossip 协议的广播延迟和网络规模的对数成正比而不是线性,所以广播延迟并没有小很多。加之 BFT 类算法依赖一些额外的周期性全局同步等安全措施,使得实际效果中,BFT 类算法并没有比 PoW/PoS 系统有太多性能优势。

何不换种思路,寻找新的出路

前面已经说到性能瓶颈和容量瓶颈,在现在单链的「Chain of Blocks」的系统中,很难有大的提升,尤其是容量瓶颈。这就是所谓的区块链不可能三角的由来。

举个例子,GPU 用了几千个性能普通的 Core 一起并行工作,实现超越 CPU 计算性能几个数量级的性能提升,而 GPU 所依赖的半导体技术并没有和 CPU 芯片有什么本质的不同。再如,现今的在线云服务系统,是用几千甚至上万台性能普通的服务器一起并行工作,来支持大容量高吞吐的在线服务。

我在这里不妨大胆设想:也许一个大容量高吞吐的区块链系统会是类似的方案,即让成千上万个同质的单链实例一起并行工作,切分全网的工作量,以实现整体上的大容量和高吞吐。

比特币是初代的公链,技术点主要包括共识机制、账本结构、加密算法、P2P网络四大要素组成,这些构成了区块链行业的基础。第二代公链以太坊主要增加了智能合约、快速发行Token,以及便捷二次开发等特性,也造就了很多一行代码都没写的空气币。

LikeLib的新共识机制和商用级TPS水平

LikeLib提供帐户,身份验证,数据库,异步通信以及在数以万计的CPU或群集上的程序调度。LikeLib提出的共识算法 ,能够实现较高的交易吞吐量、可扩展性和安全。在算法中,每个用户将会被分配权重优先级,优先级可以以用户收益中的权益来衡量,以此为基础形成一种基于用户权重的记账人节点选取机制。这种改进有效提高交易吞吐量并避免分叉,不需要一套固定的服务器组同时能够抵抗女巫攻击;避免恶意领导者单独形成一个分支,降低影响,无需用户配置复杂的信任策略。拥有高TPS、低交易延迟、低手续费等特点,使得区块链技术可以可以深入到商业场景内部,其交易确认时间也是秒级,在各类数据上也保持行业顶尖水平。

LikeLib侧链/跨链技术

在区块链世界里,底层公链的存在必定少不了侧链。简单来讲,侧链是一种允许Token在不同的区块链之间进行安全的资产交换的技术,因此也就可以实现不同区块链技术架构之间的跨链操作。

LikeLib在协议层优化了分布式账本和共识机制以提高业务处理能力,在业务拓展层优化了智能合约以提高业务的灵活性,在应用层加强了跨链交易以提高使用者的便捷性。

除此之外,LikeLib还提供海量的API接口和具有行业属性智能合约的模板,这些由最优秀(当然也是最贵)的区块链工程师编写的程序和代码非常安全可靠,初创公司可以通过API调用或者修改模板参数,简单快速地实现业务目的,迅速提供服务和产品。让区块链编程逐渐模块化,更有利于生态的快速建立。

这样的一个系统,可以在大幅提高 TPS 的同时,支持 亿以上级别的用户量,并且保持每一个参与到这个网络的中的全节点仅有一个合理的负荷,让大部分互联网上的普通服务器都可以轻松部署一个全节点,共同参与网络的维护和治理。

猜你喜欢

转载自blog.csdn.net/Laikelib/article/details/87710069