INB将于10.10上线主网,300专利加持,做公链集大成者
InsightChain(INB)于2019年9月9日9点9分发布消息,将于2019年10月10日10点10分上线INB公链主网,完成从测试网到主网的升级,自此INB将实现公链主网的跨越,并继续在公链技术和生态上进行研究和实现。
INB在2018年底完成了从应用链到公链的转型,从『去中心化调研生态链』的定位升级为『无限扩展的大数据生态公链』。INB公链的核心目标有两个:在满足去中心化和安全性的前提下提高可扩展性、满足更多应用的业务数据上链需求。实现每秒10万以上(100,000+TPS)的交易数据处理能力,以及每秒100万以上(1,000,000+TPS)的业务数据处理能力。实现业务数据的结构化上链,形成链上经济体,使业务数据像交易数据一样可信、不可更改。
INB团队已经申请近300个区块链技术发明专利,花费近千万,在专利方面已经有提前行业至少2年的布局,希望通过专利将自己对区块链技术和行业的研究与实现、以及可能涉足的行业和场景进行保护。CTO吉建勋先生负责INB专利战略的制定和执行,带领技术团队、生态团队、研究团队和知识产权团队在研究、设计、开发INB公链和生态应用的同时,完成专利战略的规划、设计和执行。同时,InsightChain计划发起区块链专利联盟,把所有专利授权联盟内企业免费使用,传承区块链公开、共享的精神,以促进区块链技术和生态的可持续发展。
InsightChain的愿景是通过区块链技术,让人人都拥有可信的数字账户,一个由数字货币信息和数据资产信息组成账户,基于数字账户构建起人人参与的经济体,在经济体中实现数据流通和货币流通的闭环,实现经济价值基于数字账户的再分配。
1 INB公链的可扩展性分层模型
公链的不可能三角问题一直是近几年来研究的热点,许多公链从共识、分片、子链等不同方面对公链进行改进,但是又在去中心化、安全、可扩展性三者中留下或多或少的问题。例如以太坊的TPS不高、EOS的去中心化不足等问题,都无法完全满足人们对公链的预期,也无法支持大规模的应用落地。INB公链在自有创新的基础上,对layer0、Layer 1、Layer 2三层都进行了改进,以克服区块链的不可能三角,堪称公链的集大成者。
2 Layer 0(数据传输)的创新
INB公链在Layer 0(数据传输)层改进的思路主要有两个:减小数据传输的内容和频次、改善网络拓扑结构。
首先是网络利用率自适应模型,INB公链将通过技术手段衡量整个公链的网络利用情况,以自动将对公链的各种分片个数、传输情况进行控制,达到最大化地利用网络。
其次是区块的分片,INB公链上将应用一种区块打包和验证的分片方法,如果每个区块的数据量很大,区块的打包、验证以及网络传输都很耗时,会将每个块利用VRF随机抽签机制进行分片并发给不同的节点进行打包和验证,以最大化的提高节点的利用率和网络利用率,降低处理时间。同时,此种随机抽签将由其它节点进行验证,防止作弊发生。
最后是网络拓扑结构的优化,包括利用动态规划确定出块顺序和利用Floyd算法改进Kademlia网络两个方面,下面将进行详细论述。
动态规划确定出块顺序
在每轮出块之前,都要提前确定出块的超级节点分片的顺序,以能最快的同步区块数据,此问题可以描述为:已知任意两个节点的距离,求如何从一个节点遍历所有节点路径最短的问题,也就是TSP问题(TravelingSalesman Problem,旅行商问题),INB公链引入动态规划算法解决该TSP问题。
Floyd算法改进Kademlia网络
在INB公链中,主要由超级节点、验证节点等节点组成,这些节点构成了一个Kademlia(简称KAD)网络,在所有节点均保存着其它超级节点的位置等信息,和传统的KAD不同的是,INB公链中保存了任意两个节点的距离信息,并且引入Floyd算法提高节点之间数据传输的效率,利用Floyd选择此节点到其它节点的最短路径进行通信,从而提高网络效率。
3 Layer 1(核心协议)的创新
INB公链在Layer1(核心协议)层的改进思路主要有:共识算法、分片、业务数据结构化上链、增加世界状态、虚拟机优化和引入Schnorr签名算法。
(a)VDPoS共识算法(全球首创)
INB公链提出了一个全新的共识算法:VDPoS(ValidatedDPoS)算法,该算法是DPoS+BFT+验证节点的有机结合。DPoS算法中的投票解决了PoW算法资源被大量无用消耗的问题,并且使用INB的抵押和惩罚机制,很大程度上限制了节点的作恶。区块产生以后,首先在超级节点内部利用BFT算法进行快速验证,同时超级节点利用VRF算法寻找多个随机验证节点,验证节点也使用BFT算法对块数据进行异步验证,以防止超级节点和验证节点的联合作恶,极大地提高了公链的去中心化程度和安全性。
使用VRF选择验证节点
VRF 的全称Verifiable RandomFunction(可验证随机函数),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 UtilizationModel,简称IUM,该资源包括:超级节点的CPU和内存资源、网络资源。由于整个公链的运行效率跟IU正相关,当IU很小时,应该充分利用公链资源以提高可扩展性。基于此概念,INB公链提出根据IU的大小自动调整超级节点的分片数量和子链验证区块的高度间隔,以充分利用整个公链的资源,提高TPS。
(c)业务数据结构化上链(全球首创)
业务数据的结构化上链是INB公链的一大优势,不同于传统公链项目仅将数据内容上链,并没有将数据的属性和过程上链,无法真正保证数据的可信。同时上链的数据并不是结构化的,不能表达数据之间的关联、属性和数据之间的关联等信息,在INB公链中使用业务数据的结构化上链方式,业务数据可以通过链本身进行自解释,不再需要通过第三方应用对非结构化的数据进行解释,真正实现了数据的可信、确保了数据的价值传递。结构化的业务数据在链上使用Trie进行存储,提高存取的效率。
(d)世界状态:余额、数据、Token和投票(全球首创)
传统公链将除余额以外所有的世界状态都用智能合约来存储,例如以太坊的Token状态都保存在Token的智能合约中,此种存储方式有一个很大的问题是:每个用户Token余额的变化都将导致所有用户余额数据的重写,当用户量很大的时候每次重写的数据量是链所不能承受的。INB公链采用Trie的结构来存储余额状态、数据状态、Token状态和投票状态,每个状态的变化都只会造成该状态所在Trie节点的数据重写,极大地提高了存储效率、节约了存储空间。
INB交易引擎
INB公链提出另外一个大幅度降低节点资源消耗的方式:将传统公链中Token的智能合约从智能合约业务中剥离出来,利用简洁的脚本语言的方式来执行,称为INB交易引擎(ITE,INB TransactionEngine)。在以太坊上,有很大比例的智能合约是Token的发行合约,至少有一半以上的交易是ETH和Token的交易,通过启动虚拟机调用智能合约的方式来执行,消耗的系统资源非常多,而使用INB交易引擎来执行,将能极大的降低资源消耗,在Token的交易、验证的时候都将节约很多系统资源和时间。
(e)虚拟机的优化
INB公链会支持图灵完备的智能合约,将通过全新的虚拟机(IVM, INB VirtualMachine)来支持智能合约,IVM将使用WebAssembly(WASM)方案来实现,这意味着开发者可以使用任何熟悉的编程语言来开发智能合约,并且有着更优越的性能。
而且,INB将对IVM的存储结构等方面进行优化,以提升虚拟机的执行和存储效率。例如将使用Trie结构对虚拟机的Map等变量内的数据进行存储,Map中的每一个Key都作为Trie的一个节点来存储,这样就不需要像之前Map中的每个数据变化的时候都需要重新刷新整个Map对应的节点数据,极大地提升了虚拟机的执行和存储效率。
(f)Schnorr签名算法
INB公链引入Schnorr签名算法以改进传统的ECDSA签名存在的一些问题,以提高INB公链的效率、节约存储空间以及支持多签功能。
-性能方面:可以大大减少验证签名的成本。对于传统的单个签名的交易,Schnorr的效率就要比ECDSA的高很多。对于多签交易,原本需要进行多次的验证,而聚合签名仅需验证一次,也大大提升了验证签名的速度;
-交易大小:Schnorr将多个签名聚合为一个签名,可以大大减少多重签名的空间占用,显著降低对于网络传输消耗的带宽;
-隐私:使用 Schnorr 聚合签名可以提高链上数据的隐私性。对于验证者来讲,聚合签名看起来和普通的 Schnorr签名并无区别,无法分辨这一笔交易是普通的交易还是一笔多签交易,而参与交易的用户的公钥和签名都不会暴露出来。
4 Layer 2(协议扩展)的创新
INB公链在Layer 2(协议扩展)层改进的思路主要有三个:引入多子链架构、跨链和链上数据的高效查询。
(a)多子链架构
INB公链使用多主链+多子链(Multi-Main Chain + Multi-Child Chain,简称MMC +MCC)的混合架构,为全球第一个使用此种混合架构的公链。根据整个公链的资源利用情况自动对超级节点进行分片,形成多主链并行出块模式,充分利用网络资源和超级节点资源,极大的提高出块速度,增加公链的垂直扩展性。同时在主链之上可以根据应用的使用情况,启动多条子链,以支持更多的DApp业务数据上链,增加公链的水平扩展性。
子链由DApp或者社区发起启动子链的提案,并选择合适的共识算法,子链可以采用BFT类联盟链的共识机制,也可以采用PoW、PoS、DPoS等公链共识机制,根据不同的DApp对数据上链的效率、安全性等不同的需求而选择不同的共识算法,主链不对子链的共识机制作限制。子链启动提案由超级节点进行投票,投票同意启动以后,公链将自动启动一个子链智能合约,用来对子链进行管理,然后等待满足条件的子链节点的加入以启动子链。
子链的完整数据保存在子链的节点上,并且为了保证安全、可信,子链会把数据的验证信息保存到主链上用来做子链数据的验证。子链在产生一定数量的区块以后,会将该部分区块对应的默克尔树的树根保存到主链的区块上,以保证子链的安全和可信,对应的子链上的区块称为验证区块。
(b)跨链(外部公链的交互)
对于和其它公链的跨链,INB公链使用状态通道的解决方案,INB公链提供一系列原生的状态通道智能合约,每个智能合约对应一条公链以及公链上对应的币的映射。例如对于BTC,INB公链将提供一个BTC跨链状态通道智能合约、一个接收BTC的账户和IBTC代币,其中的IBTC代币为BTC在INB公链的1:1映射。当用户将BTC存入该接收BTC的账户以后,该智能合约将自动给用户分配等量的IBTC代币,该IBTC代币的交易代表了真正BTC的交易,当用户想取回BTC的时候,把IBTC返回给智能合约,智能合约将自动把账户的BTC打给用户指定的账户。
(c)链上数据的高效查询
由于业务数据的数据量十分庞大,INB公链将利用缓存机制、NoSQL等提供更快速的链上数据查询方式,真正满足亿级互联网应用的使用需求。
INB公链的创新点很多,限于篇幅本文只是做了简单的介绍,后续还会有系列文章做深入的解读,还原一个公链3.0时代的真正代表给大家。
相信,INB公链在主网上线以后,由于其高度的可扩展性和业务数据上链能力,必将提高行业内公链的整体技术水平,极大地促进『区块链+』的落地,区块链应用的百家争鸣时代即将到来,众多杀手级应用也会自此种下种子,慢慢萌生为参天大树,将区块链技术带入平民百姓家。