Insolar共识算法: 实现10000 交易/秒

共识算法是每个区块链协议的重要组成部分。它基本上构成了区块链协议,并将区块链协议与标准数据库区分开来。
共识算法允许网络参与者决定添加到网络中的新记录是否有效。在一些区块链协议中,共识机制还定义了网络中允许哪些节点执行、验证和存储记录、交易和智能合约。
最佳共识:神话?
在区块链行业的思想领袖中,关于哪种共识算法是最好的一直存在争议。丹·拉里默和维塔利克·布特林之间的讨论第一个映入脑海。然而,所有共识算法都各有其优缺点,因此任何一个都不能成为所有业务逻辑的通用解决方案。 
在我们看来,在一个活跃的企业环境中使用区块链并不仅仅是为了对整个网络应用单一的共识算法,而是允许用户和企业决定他们要将哪些规则应用到他们自己的业务流程中。这一看法在我们以前关于域的博客文章中已有描述。
是时候采用结构化方法了
同时,默认情况下,Insolar平台使用两类共识协议。我们称之为实用和域共识协议。实用协议用于网络维护程序,而其他协议用于核准交易。
下面让我们进一步了解一下

1. 实用协议

Insolar实施的第一类共识协议是实用协议,它定义的不是如何核准交易,而是整个网络操作。简单地说,它是关于网络中的节点如何发现彼此,以及谁有资格执行某些功能,例如执行、验证和存储。
我们选择拜占庭容错算法(BFT)作为基础,但是Insolar为传统BFT提供了一定的可扩展性。为了了解Insolar如何能够提供线性扩展性,首先让我们来解释一下BTF的优劣方面。
拜占庭容错算法(BFT)
大多数面向企业的区块链网络(公共和私人)都采用拜占庭容错(BFT)共识算法。其中包括瑞波(Ripple)、恒星(Stellar)、小蚁(Neo)和超级账本(Hyperledger)。
BFT比其他共识算法更能满足企业的需求,因为节点列表是经过许可、预先定义的,并且所有节点都具有相同的权限。
该共识中的所有节点都需要相互沟通,以便就每项交易达成一致意见,达到所需的多数⅔+1表决。
然而,BFT的主要优点恰恰也是它的最弱之处。由于网络上的所有节点都需要在导致整个网络发生变化的操作上达成一致意见,因此交易协商可能需要时间,而时间取长短决于节点的数量。因此,向网络中添加一个新节点意味着网络中连接的增长不是线性的,而是指数性增长。听起来很难理解?嗯,其实很简单:如果网络中有100个节点,那么添加一个新的节点(总共101个节点),意味着添加100个查询。因此,网络工作速度更慢一点。
BFT可以在纯私人网络中完美地运作,因为这不需要有比业务流程中更多同等的节点。
超级账本(Hyperledger)通常使用30个节点进行交易验证,这可能足以为任何业务流程提供私人链接解决方案。同时,瑞波(Ripple)最近已经扩展到55个验证器节点,但是由于网络只服务于它自己的产品,所以也不需要进一步提高可扩展性。
Insolar’s 可扩展性解决方案
为了使传统的BFT方案具有更大的可扩展性,我们提出了一个概念,即加入网络的每个新节点几乎成线性地增加网络容量。
节点越多,解决BFT共识的局限性就越复杂,我们将节点参与的一致性(有效性)与交易的一致性(有效性)分离开来。因此,并非强制所有节点在所有交易上达成一致,Insolar节点首先同意(使用BFT)哪个是起作用的(有效节点)和那些是新的熵(随机性),然后,通过使用有效节点和熵,节点被分配到使用域共识协议处理较小节点组内的交易。
这种仍然有限制的BFT方法用于有效节点的一致性,从而将网络大小限制为约1000个节点。因此,我们增加了球状体(Globulas)的概念:每个虚拟子网络最多有1000个节点。
这意味着有效节点列表不是在整个网络中得以维护的,而是在每个球状体(Globulas)中得到维护的。然后球状体(Globulas)关于有效节点彼此达成一致意见。这种分离到球状体只适用于网络共识,而较小的集合则由不同球状体的节点组成以处理交易。

这就产生了两个共识协议,定义了球状体(Globula)内部和不同球状体(Globulas)之间的相互作用。

· 球状体(Globula)网络协议-一种类似BFT的协议,在球状体网络(一种最多1000个节点的较小网络)之间建立数据一致性。
· 球状体内(InterGlobula)网络协议-一种类似dBFT的协议,它扩展了球状体(Globula)网络协议,并使用基于领导者的共识在Insolar云网络(最多100个球状体或100000个节点)的球状体间建立一致性。
脉冲星(Pulsar)节点共识
Pulsar协议是一种类似BFT的协议,它产生熵(随机性),以防止节点串谋,并通过脉冲(Pulses)向节点指示时间周期的开始。Insolar使用BFT的原理,不仅用来管理有效节点列表,而且还管理网络脉冲(Pulse)生成的核心过程。如先前一篇文章所述,要确保智能合约的节点分配执行器和验证器状态的随机性,从而确保网络安全,脉冲(Pulse)是必要的。
脉冲(Pulse)节点(脉冲星Pulsar)使用BFT共识产生脉冲(Pulse),以同意下一个脉冲的熵(随机性)。
2. 域共识协议
第二种共识算法是所谓的域共识协议。它们定义了在网络中验证智能合约的方式。这里也有共识的子类别。一致同意验证(1)合约逻辑的执行;(2)分销交易的最终性/完整性;以及(3)要添加到分类账中的节点权限和记录。
· 域所有者可以选择如何验证智能合约,同时还有两种默认方案:

Insolar共识算法: 实现>10000 交易/秒

· 多数表决需要大多数验证节点来确认交易,并且其在公共网络默认情况下进行:

Insolar共识算法: 实现>10000 交易/秒

全部或升级要求所有验证节点确认交易。如果没有在所有节点上达成100%的共识,下一个脉冲将启动另一轮验证,不同的节点将被选为验证器,直到达成共识。如果在一系列回合后仍未达成共识,这种情况将按照冲突解决程序逐步升级。这可能会在私人域中使用,因为公共网络的性质和大小决定了几乎不可能达成100%的共识。
利益攸关
在Insolar平台上,有三个因素阻止恶意节点攻击。第一种是在不同的节点集上为不同的功能(验证节点、验证更改和验证权限)使用不同的共识;第二种是使用不同共识的时间隔离(例如,在处理交易逻辑后选择投票人验证权限)。第三个因素是每个节点的金融责任。要在Insolar网络上运行一个节点,必须持有一定数量的INS代币。如果网络中存在恶意(或技术上不可靠)节点,则会受到惩罚,并且所持有的代币(部分或全部)会被销毁。
Insolar对共识机制的方法设定为提供近乎线性的可扩展性,平台的其他特性也使得交易速度超过其他区块链平台提供的交易速度。我们即将推出的私人测试网将展示我们处理交易的速度的能力。