区块链要具备支持大规模商业应用落地的能力就必须满足三个基本要求
扫描二维码
随时随地手机看文章
NEO生态最值得期待的年度活动NEO DevCon,在经过了近半年的筹备正式于2月16日在美国西雅图盛大启幕,在为期两天的会议上共有近500位开发者共襄盛会,超过40位嘉宾带来了精彩绝伦的分享。
错过现场与直播可以关注NEO Smart Economy Youtube频道回看大会两天的完整视频。我们也将通过多篇报道对现场的重要分享进行摘取与解读。
NEO两位创始人张铮文与达鸿飞分别从技术角度与理念角度对NEO的未来发展与愿景进行了深度解读与分享。达鸿飞重申了NEO将在2020年前成为第一名的区块链平台的目标,即通过提供高性能、强大的生态支持与合规性解决方案等方面使NEO成为最受开发者欢迎的去中心化应用开发与部署平台。
达鸿飞说:每当人们问起NEO到底有什么不同,是什么让NEO取得成功,我希望这样去回答人们:
纯粹的现实主义者难以仰望星空
纯粹的理想主义者无法立足当下
唯有现实的理想主义者可以孕育时代
NEO的不同由现实的理想主义造就
NEO目标的实现基底是最近一段时间被反复提及的NEO 3.0,本届DevCon,虽然NEO创始人张铮文没能来到现场,但是通过视频方式从技术角度对NEO 3.0进行了更为深入详细的细节与计划披露,NEO 3.0的面纱也逐渐揭开。本文也将着重于张铮文的视频内容的报道,我们将对达鸿飞与其他嘉宾的演讲内容进行后续报道。
首先,张铮文开宗明义的明晰了为什么要开发NEO 3.0和NEO 3.0的目标:
开发NEO 3.0最重要的目标是让NEO具备支持大规模商业应用落地的能力。
尽管区块链已经出现了好几年,但目前还没有区块链可以支持大规模商业应用的落地。要想让区块链具备支持大规模商业应用落地的能力,就必须满足三个基本要求:
· 可靠性
· 性能/TPS
· 存储
-在可靠性方面有两个重要的特点,其一是不可逆性,意味着一旦交易在链上确认,就不可逆转或撤销了。而对于金融应用来说,撤销已确认的交易是不可接受的;其二是可用性,即网络即使是在负载极大的情况下也能持续生成区块并处理交易。
-在性能方面,将区块链的TPS提升至极高的值是实现大规模商业应用支持的前提条件。
-在存储方面,大规模商业应用需存储大量数据,因此区块链必须采用分布式存储。
为了给大规模商业应用提供支持,NEO 3.0需要进行一些改进。包括NEO架构的改进、NEO 3.0的新功能以及其他改进。
NEO 3.0需要精简NEO架构,包括三个变更。包括对Layer 2进行优化、移除所有的全局资产和统一所有资产类别。
-优化Layer2
张铮文认为,未来的大部分应用都会在Layer 2上运行,而且只有争议发生时,才需要主链进行仲裁。尽管Layer 2的拓展技术可以有效提升TPS,但提升能力依然有限。假设在Layer 2上发生争议的概率是一个值。用主链的TPS除以概率,就可以得到Layer 2 TPS的粗略估计值。也就是说,Layer 2的TPS和主链的TPS呈比例关系,Layer 2的TPS随着主链TPS的增加按比例成倍数增加。考虑到NEO 3.0中大部分应用都会在Layer 2上运行,因此NEO将精简主链的架构并努力提升主链的TPS。
NEO的智能合约目前有两个用途,分别是交易验证和应用执行。在NEO 2.x中,交易验证通常分三个步骤,分别是格式验证、规则验证和业务验证。格式验证用来验证交易格式是否达到要求,规则验证的目的是验证交易内容是否符合目前的所有规则,如交易大小是否超过限制,而业务验证是一系列通过智能合约完成的业务相关验证。因为业务验证需要执行智能合约,而智能合约的执行取决于以前的状态,因此交易验证会非常慢。
在NEO 3.0中,会把业务验证移到应用层。在进行交易验证时,我们只会允许状态独立的验证,这样就能大幅提高交易的验证效率。而共识节点甚至可能不需要为了验证交易而同步区块数据,这样TPS就能大幅提升。同时,会在应用层添加大量与Layer 2相关的优化过的API。
-移除全局资产
目前通常使用两种方法在NEO上创建资产,一是通过注册交易创建全局资产,二是通过智能合约创建合约资产。
实际应用中很少用到全局资产,大多数应用创建的都是合约资产。这是因为合约资产更灵活且包含更多功能,例如你可以创建NEP-5资产、创建NFT资产并创建STO资产等。因为全局资产没有与智能合约结合,因此难以在智能合约中管理全局资产。
鉴于上述原因,NEO 3.0无需继续支持全局资产,而且如果可移除全局资产,NEO架构就会进一步精简,其系统性能也能得以提升。在NEO 3.0中,所有资产均须在智能合约中创建,甚至包括NEO和GAS。
-统一所有资产类别
目前NEO 2.x中有9个不同的资产类别,包括挖矿交易、发行交易及认领交易等。这些交易类别不是和特定的业务相关,就是有特定的功能。如注册交易和发行交易就与全局资产的创建和分配相关。因为全局资产不再存在,这些关联交易也就无需存在了,智能合约中的其他复杂业务交易也会被移除,并由互操作服务取代。
因此,在NEO 3.0中仅有一种交易类别,即交易。交易作为独一无二的交易类别,其功能是运行智能合约。
NEO 3.0的五个新功能
【1】原生合约
NEO 2.x已经使用了智能合约,用多种常用的编程语言编写,并编译成NEO的指令集后在NeoVM中运行。任何人都可以在NEO上部署自己的智能合约。
NEO 3.0将使用一种全新的智能合约——原生合约。该合约与普通的智能合约基本相同,也可互相调用,不同点在于它不能在NeoVM中运行,且可直接运行原生代码。它无法被部署,但可嵌于NEO核心代码中。原生合约升级后其哈希值保持不变。在NEO 3.0中,NEO和GAS将以原生合约的形式存在。此外,投票系统也是一种原生合约。你可以通过投票系统选择共识节点,甚至给NEO的共识机制投票。
【2】清单和权限系统
众所周知NEO的智能合约可以相互调用,这一功能给开发者提供了极大的便利,但也带来了风险隐患。一般情况下,用户在调用智能合约时是无法清楚得知合约行为是否符合预期的。
所以提出了清单和权限系统这一功能,每个智能合约必须显示行为描述清单,该清单应包含四个要素:
-第一个要素是群组。你可以宣布合约属于一个群组,这样该群组中的合约就能互相信任,并安全地进行合约间调用。
-第二个要素是功能,描述了合约可以使用的功能,如存储、接受转账等。
-第三个要素是ABI,描述了合约如何被其他合约或客户端调用的界面信息。目前可以通过编译器生成ABI文件,但NEO 3.0要求将ABI放入清单中。
-第四个要素是权限,列举了合约可能调用的其他所有合约的哈希值和方法名称。如果合约调用了任何未能明确列出的合约或方法,调用会在运行时失败。
此外,合约也可以在清单中信任其它合约,清单也可显示balanceOf或totalSupply等安全方法,这样其他合约无需获得权限也可调用这些安全方法。
【3】互联网资源访问
这相当于在NEO中内置一个预言机,基本原则是允许智能合约用户访问互联网资源。因此在互操作服务中添加了新的界面,智能合约便可通过url链接访问互联网资源。
处理此类智能合约交易时,共识节点需确保数据的一致性,但同时它们也会限制资源的长度。如果共识节点可以就读取的数据达成共识,url/数据对就可写入区块头中。这样,其他所有节点便都可以从区块头中读取一致的互联网资源了,并同时执行智能合约进行交易。
【4】经改进的dBFT共识机制
NEO 2.x已经使用了dBFT共识机制,但仍有瑕疵,开发者有时可能会注意到网络中的区块偶尔会发生分叉。NEO过去几个月对dBFT算法进行了优化来解决这个问题。
dBFT算法有三组协议,分别是共识协议、观点变更协议和状态同步协议。
-其中最关键的是共识协议,分三步完成,分别是PrepareRequest、PrepareResponse和Commit。最早的共识协议仅涉及前两个步骤,这也是区块分叉偶有发生的原因。
-第二个协议是观点变更协议。如果共识节点无法在规定时间内达成共识,它们就会改变主意并在此投票,在这个方面没有什么需要改进的。
-最后一个协议是状态同步协议。如果共识节点离线后恢复登录的状态,就需要与其他节点同步状态。这个过程通过区块同步实现。但新的dBFT算法需新增两个状态恢复机制:恢复日志和恢复消息。改进后,离线的共识节点就可快速恢复正常。
改进后,dBFT就可真正做到交易不可逆,也将成为唯一一个可以支持大规模商业应用的共识机制,dBFT将是最优的区块链共识机制。
【5】分布式文件储存系统NeoFS
NeoFS是基于NEO 3.0的分布式存储网络。智能合约的存储高度冗余,所以其成本极高。如果在智能合约中存储大量数据,价格会非常高昂。因此需要建立一个低成本的分布式存储网络。同时,存储网络有自己的经济模型。首先,它成本不高且能存储大量数据,用户可支付gas购买数据存储空间,而且每个人都可通过共享未使用的硬盘空间来获取gas。
此外,NeoFS还有其他功能,可以加密数据来保护隐私,而且NeoFS将与智能合约相结合,合约可直接从NeoFS读取数据或将数据写入NeoFS。NEO 3.0还包含其他许多改进,将在未来进行发布。
其他改进
-添加压缩功能,以实现P2P协议。
-增加MPT树功能,以实现存储值验证功能。
-显著降低智能合约的成本,以使NEO区块链上可运行更多应用。
虽然没能亲临现场,但张铮文的分享仍然在开发者中制造了话题,NEO 3.0本次发布的更新将会引领NEO进入新的竞争维度,从而由区块链升维至传统企业的大规模商业应用。NEO 3.0即是精致务实,也是理想主义,是开启现实的理想主义者黄金时代最好注脚,值得期待。