一直以来,NULS都致力于突破区块链技术瓶颈,提供稳定、高效、高性能的网络运行环境。且为企业提供灵活易用的区块链底层技术支持,通过降低企业开发和使用成本,从而推动区块链商业应用进程。
为了继续更快、更好的推动NULS的发展,扩大NULS的生态圈等一系列意义,团队决定开发NULS2.0。
接下来,我将详细讲述NULS2.0对比1.0做了哪些方面的优化。
NULS2.0对比1.0的优点一、NULS2.0模块化开发做得更彻底
首先要给大家解释一下什么是模块化开发。模块化开发是指,将一个业务复杂的大系统,按照内部不同的功能点,分解成一个个独立的小系统,每个系统负责完成自己模块的功能。最后将小模块整合到一起,完成整个系统的功能需求。
用区块链来举例:首先我们需要下载钱包,一个钱包就可以看做是一个节点。钱包可以创建账户,并且给账户加密。钱包运行起来之后,就会去网络上发现更多的节点,相互之间建立连接。连接建立好后,就可以相互发送与验证交易,最后由一些节点将合法的交易打包成区块,再分发给各个节点,节点验证区块后统一达成共识。
将整个区块链业务分解开来,我们就可以发现,有账户模块来负责创建账户、有网络模块来负责发现节点和广播数据、有交易模块来验证处理交易、有共识模块来打包区块、有区块管理模块来负责区块的同步和存储。
模块化开发的好处:
1.每个模块的功能更独立,业务更清晰,便于开发人员理解;例如:开发账户模块只需要关心账户私钥的安全性,如何实现私钥的加密解密,而不需要去关心网络模块是如何发现节点、区块管理模块是如何实现处理分叉的
2.各个模块之间定义好相互的交互接口后,就可同时做开发,提升开发效率;
3.每个模块可以独立升级和替换,不影响整个系统中的其他模块;
4.每个模块可以用不同的语言做开发,降低开发者的门槛;
为什么说NULS2.0模块化更彻底?
1.模块化做得更细致,分工更明确:
我们在做NULS1.0的时候,确实是将模块划分开,每个模块都在设计的时候做了明确的分工。但因为经验不足,在实际开发过程中,出现了一些分工不明确的地方。开发时出现了本来应该在A模块实现的功能,最后在B模块里实现。在做2.0的设计方案时,吸取了很多1.0开发时的经验教训,每个模块的定义清晰,业务功能明确。
2.模块更独立、更利于扩展:
更独立:
NULS1.0虽然做了模块化,但整体还是由一个程序来驱动,一种语言做的开发。NULS2.0采用微服务的架构,模块与模块之间做到真正的独立开发,模块之间使用RPC通信。每个单独的模块都可以使用不同的编程语言来开发,从而降低了开发者的门槛。
例如:我们的核心模块nulstar,是用C++做的开发,共识模块、交易模块、区块管理模块用JAVA做的开发,而账户模块,目前JAVA版本和JS版本都已实现。
更利于扩展:
1)模块独立化后,模块的实现方式就可以更多样化,例如共识模块nuls采用的是poc共识机制,有需求有能力的开发人员,也可以开发pow共识机制来替换。
2)若需要增加新的功能,我们可以直接增加新的模块来实现,不需要修改原有的模块。
3.更规范、更容易上手:
经过1.0的探索后,2.0在开发设计的时候就制定了很多开发规范。例如文档的规范、接口定义的规范、代码风格的规范。更好的规范就更利于合作开发,降低新开发成员的学习成本。
二、账本模块从NULS1.0的UTXO模型转换成传统账户余额模型
这里还是要解释一下什么是UTXO模型,什么是账户余额模型
传统账户余额模型:很好理解,我们平时使用的支付宝、微信支付都是账户余额模型,我微信收到一个100块钱的转账,账户里就有100的余额。之后我又收到了一个200块钱的转账,账户里的余额就变为300。
UTXO模型:utxo模型俗称钱包零钱模型,例如你兜里本来有一张100元的人民币,出门逛街,你在地上捡到200元,这时虽然你总共有300块钱,但从表象上来看,你有的是三张100块的人民币,而不是说你有一张面值300元的钱。你捡到钱非常高兴,请朋友吃饭,花费260,这个时候你给钱的方式也是将三张100的人民币都给出去,然后饭店在找零40给你。
说到这,熟悉我们nuls1.0钱包的小伙伴就可以联想到我们平时在用钱包转账的时候,明明我转的是100,最后交易成功了去查看交易详情,发现一大推零零散散的金额被转出去了,最后还会找零给自己一个余额。这个就是UTXO模型,账户没有一个总账,每次计算余额的时候,都会像躲在家里数钱一样,把每个零钱都加一遍。
那么NULS2.0为什么要采用账户余额模型呢?
显而易见,采用账户余额模型的话,对程序开发来说,计算量更小,需要存储的数据也更少。这样既提升了效率又节省了空间。
还有一个更关键的原因——它减少了用户转账时候的手续费。我们都知道,区块链上的数据都是有成本的,每一笔交易的数据越多,打包节点收取用户的手续费就越多。
三、NULS2.0支持跨链
跨链是当前区块链的一个热门话题,也是区块链应用落地需要解决的三大难点之一。
为什么要有跨链呢?
目前虽然有很多公链存在,但每一条链都是一个相对独立的网络,数据信息不能做到互通互联,存在信息孤岛的问题。不同的区块链网络之间协作的难度大,这极大地限制了区块链应用的发展。于是,关于如何实现跨链技术和多链融合,成为了当前区块链领域研究的热点之一。如果说共识机制是区块链的灵魂核心,那么对于区块链特别是联盟链及私链来看,跨链技术就是实现价值网络的关键。
NULS2.0如何实现跨链?
跨链涉及到的专业名词较多,为了方便理解,尽量用简单易懂方式描述。NULS的跨链分为两部分,我给他取名为体制内和体制外。
体制内:
以NULS为主链(也叫卫星链),以其他使用NULS区块链搭建的平行链应用为友链,相互之间发送跨链交易实现互联互通。
实现方式:
1.制定NULS区块链标准化协议。标准协议是跨链交互的唯一协议标准。
2.扩展网路模块功能。Nuls1.0的网络模块只支持nuls主网的节点之间相互连接。Nuls2.0支持nuls主网节点和多个友链节点相互连接。
3.开发跨链模块,该模块支持友链和主网按照标准协议相互发送跨链交易。并且该模块还要验证和处理对方的跨链交易。
4.友链只和nuls主网通信,跨链交易的验证由nuls主网负责,各友链信任主网验证结果。
具体流程:假设有一A链,需要发送跨链交易将资产转移到B链。
首先,A链发送跨链交易到主网,主网先验证交易格式,再验证交易信息,最后主网通过拜占庭验证后,将交易转发到B链。B链收到交易后,无需再验证交易信息,只需要做拜占庭验证即可。
体制外:NULS会搭建一条适配网络层,将比特币、以太坊等主流币通过适配层转换为NULS的标准协议,与主链实现互联互通。
四、NULS2.0更国际化、更看重社区的发展
1. 底层开发已经开始有社区小伙伴加入
从最核心的NULSTAR,这个很核心的其他模块的管理器,就是由技术社区的Berzeck设计,并且和技术社区成员Ray一起开发完成的,当然NULSTAR还在继续开发中,单单NULSTAR就项目于其他区块链的一个独立项目的体量。另外技术社区中的Naveen、Edward也参与了账户还有事件总线模块的开发,现在这两个模块交给他们来维护都是完全没有问题的。
这样团队和技术社区一起融合开发的项目,NULS可能是除了以太坊社区以外唯一能够做到这样工作模式的项目。
这样的深度融合回培养一批对NULS这个底层网络极度熟悉以及认可的全球开发者,而他们才是代表区块链未来的中坚力量。
网友评论