(d)世界状态:余额、数据、Token和投票(全球首创)
传统公链将除余额以外所有的世界状态都用智能合约来存储,例如以太坊的Token状态都保存在Token的智能合约中,此种存储方式有一个很大的问题是:每个用户Token余额的变化都将导致所有用户余额数据的重写,当用户量很大的时候每次重写的数据量是链所不能承受的。INB公链采用Trie的结构来存储余额状态、数据状态、Token状态和投票状态,每个状态的变化都只会造成该状态所在Trie节点的数据重写,极大地提高了存储效率、节约了存储空间。
INB交易引擎
INB公链提出另外一个大幅度降低节点资源消耗的方式:将传统公链中Token的智能合约从智能合约业务中剥离出来,利用简洁的脚本语言的方式来执行,称为INB交易引擎(ITE, INB Transaction Engine)。在以太坊上,有很大比例的智能合约是Token的发行合约,至少有一半以上的交易是ETH和Token的交易,通过启动虚拟机调用智能合约的方式来执行,消耗的系统资源非常多,而使用INB交易引擎来执行,将能极大的降低资源消耗,在Token的交易、验证的时候都将节约很多系统资源和时间。
(e)虚拟机的优化
INB公链会支持图灵完备的智能合约,将通过全新的虚拟机(IVM, INB Virtual Machine)来支持智能合约,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对数据上链的效率、安全性等不同的需求而选择不同的共识算法,主链不对子链的共识机制作限制。子链启动提案由超级节点进行投票,投票同意启动以后,公链将自动启动一个子链智能合约,用来对子链进行管理,然后等待满足条件的子链节点的加入以启动子链。