一文读懂Fractal共识协议:iChing之精妙

前言

在过去的十年里,PoW 共识协议一直安全地支撑着区块链系统稳定运行,而其存在的能源浪费和算力集中的问题也显而易见,因此,Fractal 在 2017 年设计之初就决定了朝着 PoS 的方向进行探索,追求更加环保、安全、高性能的区块链共识协议。

Fractal 独有的 3S 特性分别为:Scalability(可扩展)、Sustainability(节能)和 Security(安全)。其中 Scalability 特性体现在 Fractal 设计的 Layer 0 优化协议 Backpackers 中,关于该协议在另一篇文章中有详细说明,本文着重介绍 Fractal 的共识协议——iChing,该协议不是目前已知协议的改进和变形,而是完全自主创新的一套算法,也是支撑着 Sustainability 和 Security 特性的核心技术。

iChing的核心思想

目前大多已知的 PoS 协议为了避免诚实节点间的数据不一致性,通过交互式 BFT 类协议来实现数据的确认与共识,这种构造方式直接来源于已知的协议以及各种改进和变形,同时也继承了该类协议的缺点及问题,即难以在完全去中心化的条件下实现全球规模的部署与运行。因此,iChing的设计方法完全放弃了 BFT 类协议的选择。

回顾比特币所设计的 PoW 共识协议,其核心思想是通过硬件资源限制了参与者发送信息的频率与数量,以此保证系统中的输入噪音足够少,进而所有诚实节点可以达成一致。同时,这种一致的达成并不依赖交互式的密码协议,而是通过竞争的方式自然实现,从而避免了复杂的通信开销。因此为了实现新的PoS共识协议,iChing 也遵循这两个做法。

iChing的共识过程

1. 通过算法构造将矿工的算力竞争转化为 stake 的竞争,从而限制矿工的输入,产生合法的共识节点;

2. 在去掉硬件资源限制和避免运行交互式密码协议的同时,采用竞争机制实现数据的一致性,使得所有诚实节点达成共识。

iChing的算法构造

H ( context , < PK , σ > ) < T

iChing 采用上述哈希不等式将 PoW 的算力竞争转化为 stake 竞争,其中:

context 是区块中的上下文,包括上一个区块的哈希值及当前的时间戳round,因此所有的有效输出形成了一个哈希值相连接的链条也就是区块链。其中 round 是一个单调递增的时间变量, 在单位时间内单个账户只能进行一次 hash 运算,超过当前系统当前 round 的挖矿操作将不被接受。

PK 是公钥,在PoS中,拥有Stake的人才能参与共识,因此执行此算法的节点应输入代表自身身份的公钥PK以供其他用户检验其拥有的 stake,并以此来调节其挖矿难度。

σ 是签名,为了防止他人冒用身份,同时应附上该公钥所对应私钥对本次尝试的签名。此处所使用的签名算法是确定性签名,也就是输入确定后,签名结果唯一确定。这样保证了在每个 round,一个账户只能够合法尝试一次挖矿操作。

T 是难度,如果一个节点拥有的 stake 越多 T 越大,则满足不等式要求的概率越大,即挖到区块的概率越大。

根据上述描述可知,对一个合法共识节点而言,该算法的输入在每个 round 都是确定的,不能通过尝试不同的输入而得到更多的满足不等式的机会,也就是避免了计算力的竞争。通过 stake 的数量来调整挖矿难度,达到了将算力竞争转化为 stake 竞争的目的。

如何达成共识

iChing 区块链的长度蕴含了对该区块链支持的 stake 的数量。某一条链支持的 Stake 数量越多,其单位时间产生的有效输出也就是生成的区块越多,区块链的增长也就越快。因此 iChing 的共识节点通过选择最长的区块链作为共识基准。在诚实 Stake 比例占优的假设下,诚实节点选择最长链就可以实现一致性共识,这样就避免了运行交互式密码协议。

但是对于 PoS 协议而言,仅仅这样设计是不安全的,攻击者可能采用在 PoS 系统中几种常见的攻击来破坏系统。但这些攻击产生的问题均可通过协议的设计得到完美的解决方案,这也是 iChing 共识协议最为精妙的设计,下面将为大家一一分析。

如何通过协议设计应对攻击

1.Nothing At Stake攻击

在 PoS 中,由于 stake 的可复用性,矿工为了自身利益最大化可以在不付出任何代价的条件下,同时在多个位置进行挖矿,这样会导致区块链容易产生分叉,从而造成共识失败,这就是 PoS 中常见的 Nothing At Stake 攻击。

经过严格的数学分析以及仿真实验,即便恶意节点尝试在所有可能的位置扩展区块,他所能获得的区块链生长速度是仅仅在最长位置扩展区块的策略下的约 2.7 倍,在这种情况下,系统所能容忍的恶意节点的比例不超过 27%,这相当于 PoW 协议中的 51% 算力攻击。

为了提高安全性,iChing 协议鼓励诚实节点也同时在多条链后进行挖矿,我们称之为贪心策略。这样一来,诚实节点也可获得更快的区块链增长速度,从而抵消掉了恶意节点的额外增长速度。经过实验,iChing 协议可以实现对坏人接近 45% 的容忍比例,这已经优于大多数BFT类协议所要求的 2/3 诚实用户的假设。

2.Grinding攻击

Grinding 攻击形式是,当一个节点被选中产生一个新区块时,他可以通过尝试不同的数据或者其他随机化的信息,生成多个同样有效的区块,并从中选择一个对其最为有利的区块。如果后续区块的产生依赖于前一区块,则恶意参与者可以通过选择最为有利的区块提高其后续产生区块的概率,从而破坏区块链的公平性,甚至完全控制区块的产生。

在Ching的挖矿公式: H(H(bi),round,PK,σ) < T 中,上一个区块bi不包含交易信息,因此恶意节点无法通过尝试打包不同的交易,生成对其最有利的区块。

3.Long Range攻击

当用户购买了一个曾经拥有大量 stake 而现在为空的账户,他可以使用这个账户挖矿,并从账户存在 stake 的位置开始挖,这样一来经过较长的一段时间,该账户中会积累大量的 stake,进而导致该链长度超过当前主链,这就是 Long Range 攻击。

为了防止这种攻击,iChing 采用了一种混合的最长链判别方式。如果有两条链,其分叉高度不是很高,选择较长的链作为最长链。如果分叉高度超过一定限度,找到分岔点,向后寻找第 k 区块,比较区块中的 round,较小的作为最长链,如下图所示。

最长链选择

这做的原因是,坏人所拥有的 stake 无法一开始就超过好人拥有的 stake,只有在挖到了足够多的块后,获得了足够多的奖励才能够超越好人拥有的 stake,进而拥有超过好人的出块速率。在分叉的一定时间内,好人拥有的 stake 是远超过坏人的,因此只需统计,在分叉后一段时间内两条链的出块速率,就可以抵御这种攻击,好人的出块速率在给定的时间内更快。

4.适应性用户注册

在PoS共识协议中,由于共识节点的选择和用户名及签名相关,恶意用户可以某个区块为起点,尝试注册不同的用户名从而提高其被选中的概率。针对这种攻击,iChing协议要求用户必须注册并保存相应的stake在足够旧的区块才能参与新区块的共识竞争,从而避免适应性用户注册攻击。

5.平衡挖矿攻击

恶意节点可以在某个区块产生分叉,并交替支持相对较短的链。由于诚实用户按照贪心协议,会支持与最长链长度接近的所有区块,恶意节点对相对较短链的支持会造成两个或者多个长度接近的链并行生长,从而破坏系统共识。针对这种攻击,iChing协议改进了贪心策略。诚实用户支持最长链以及与最长链距离足够近的链而不是长度接近的链,可以避免平衡挖矿攻击。

6.新用户加入欺骗

恶意节点可以产生一个分叉,经过长时间的积累,绕过适应性用户形成一个更长的链。系统中始终在运行的用户可以区分这种更长的链的攻击,但是如果新用户加入系统是无法直接区分的。为了抵抗这种攻击,iChing对于长分叉采用了根部生长速度优先比较的策略,从而避免了恶意节点对适应性用户注册的绕过机制。

iChing协议的特点

1.完全去中心化

区块链系统最吸引人的特点就是其去中心化性质,如果不考虑去中心化的特点,已有的中心化的信息系统完全可以提供更高的效率、更高的安全性以及更丰富的功能以及实现数据的一致性存储。因此我们认为,当 PoS 共识协议的设计不应牺牲去中心化特点去实现其他特性。

但基于传统的交互式密码协议所设计的 PoS 共识协议均面临无法兼顾效率与安全性的两难问题。为了提高效率需要减少参与共识的节点的数量,而为了保证诚实节点占优势满足安全性要求又必须增加参与共识节点的数量。

而摒弃了现有类BFT协议的 iChing,在设计过程中完全遵守去中心化原则,因此,iChing 可以支持类似 Bitcoin 这种规模的参与者,同时又不会影响其安全性和系统性能。

2.低成本/高可扩展

iChing 共识节点对服务器没有特殊要求,参与者完全可以使用正常的家用电器,若是租用云服务器,年租金约在1-2万人民币左右。这样的成本相对于 PoW 所需的专业矿机或者 EOS 超级节点年费用上百万的服务器来说,简直沧海一粟。

低门槛的准入机制使得几乎每个持有 stake 的参与者都能成为节点,这就为系统的高可扩展性提供了一个良好的基础服务。

3.安全

在 BFT 类协议的改进和变形版共识协议中,恶意节点不能超过1/3,而 iChing 做为纯 PoS 协议不存在,其利用鼓励好人适当采用贪心策略,可以实现对坏人接近45%的容忍比例,所以 iChing 在安全性方面几乎与 Bitcoin 保持一致。

4.高性能

对比于大多数采用 BFT 类改进和变形的 PoS 协议,iChing 是非交互式共识协议,所以不必担心节点数量的增加会降低其运行效率,另一方面,好人采用贪心策略的设计可使得区块链获得更快的增长速度,这就意味着系统能获得更高效的性能

总结

iChing 是一个完全创新的共识协议,在去掉硬件资源限制和不依赖交互式密码协议的同时,通过精妙的设计实现了完全去中心化,并保证了高可扩展性和安全性,最终达到高效、环保的 Permissionless Blockchain。

你可能感兴趣的:(区块链)