Floyd算法改进Kademlia网络
在INB公链中,主要由超级节点、验证节点等节点组成,这些节点构成了一个Kademlia (简称KAD)网络,在所有节点均保存着其它超级节点的位置等信息,和传统的KAD不同的是,INB公链中保存了任意两个节点的距离信息,并且引入Floyd算法提高节点之间数据传输的效率,利用Floyd选择此节点到其它节点的最短路径进行通信,从而提高网络效率。
3 Layer 1(核心协议)的创新
INB公链在Layer 1(核心协议)层的改进思路主要有:共识算法、分片、业务数据结构化上链、增加世界状态、虚拟机优化和引入Schnorr签名算法。
(a)VDPoS共识算法(全球首创)
INB公链提出了一个全新的共识算法:VDPoS(Validated DPoS)算法,该算法是DPoS+BFT+验证节点的有机结合。DPoS算法中的投票解决了PoW算法资源被大量无用消耗的问题,并且使用INB的抵押和惩罚机制,很大程度上限制了节点的作恶。区块产生以后,首先在超级节点内部利用BFT算法进行快速验证,同时超级节点利用VRF算法寻找多个随机验证节点,验证节点也使用BFT算法对块数据进行异步验证,以防止超级节点和验证节点的联合作恶,极大地提高了公链的去中心化程度和安全性。
使用VRF选择验证节点
VRF 的全称Verifiable Random Function(可验证随机函数),VRF由于其随机性和随机的可验证两个特征在区块链中的应用比较多,INB公链利用VRF随机抽签机制从所有验证节点中选择部分验证节点对区块进行验证,既保证了验证节点选择的随机性又防止了超级节点和验证节点联合作恶。INB公链在VRF的实现方式和应用上有很多创新,且已经针对其申请了专利。
同时,DPoS共识也对区块进行了优化,例如增加了区块大小的限制、减小了出块时间和区块确认时间。
(b)VDPoS共识的分片(全球首创)
INB公链根据公链的资源利用率对超级节点进行自动分片,分片以后每个分片相当于一个单独的超级节点,称为超级节点分片,21个超级节点中各取一个分片构成了一个主链,从而形成了多主链平行运行的架构。
在INB公链中,假设每一条主链的出块时间为2秒,多主链的出块时间有『2/分片个数』的差距,并且在2秒内,每个主链的超级节点分片都会出块一次,形成多主链连续出块机制,在此2秒内出块的分片均不在同一个超级节点上,从而最大化的利用了网络和超级节点资源。例如在每个超级节点进行20分片的情况下,每隔0.1秒整个主链就会出块一次,比传统的DPoS算法TPS提高了20倍,并且大大缩短了等待时间,示意图如下所示。采用此种机制主链在现有条件下将实现每秒10万级以上(100,000+TPS)的交易数据处理能力,并且会随着节点和网络能力的提升而逐步提升。
公链利用率模型
为了衡量整个公链的资源利用情况,INB公链提出公链利用率模型的概念:INB Utilization Model,简称IUM,该资源包括:超级节点的CPU和内存资源、网络资源。由于整个公链的运行效率跟IU正相关,当IU很小时,应该充分利用公链资源以提高可扩展性。基于此概念,INB公链提出根据IU的大小自动调整超级节点的分片数量和子链验证区块的高度间隔,以充分利用整个公链的资源,提高TPS。
(c)业务数据结构化上链(全球首创)
业务数据的结构化上链是INB公链的一大优势,不同于传统公链项目仅将数据内容上链,并没有将数据的属性和过程上链,无法真正保证数据的可信。同时上链的数据并不是结构化的,不能表达数据之间的关联、属性和数据之间的关联等信息,在INB公链中使用业务数据的结构化上链方式,业务数据可以通过链本身进行自解释,不再需要通过第三方应用对非结构化的数据进行解释,真正实现了数据的可信、确保了数据的价值传递。结构化的业务数据在链上使用Trie进行存储,提高存取的效率。