“不可能三角”问题困扰链圈已久,在安全、性能、去中心化之间选择哪两个,决定着公链未来的走向。
通常大家公认的是安全和去中心化不容妥协,最后专注于提高性能。但这种专注,有时也似井底之蛙,最终会受困于先天的限制。
在很多人都执着于一点的时候,有人提出了这样的方案:为什么不能通过扩大“不可能三角”的面积实现突破呢?
相当惊艳,众人茅塞顿开!
近期,提出这一设想的Ultrain创始人郭睿受邀做客密码极客直播间,通过语音直播的方式在密码极客社群进行了详细。同时参与直播的合作伙伴还有巴比特社区以及BIB全球区块链女性社区。
作为杭州最大的区块链技术人才社群,密码极客目前拥有阿里技术人员超过2000位,社群成员超过8万。
截至10月,已邀请到了多个海内外区块链明星项目在社群分享,包括牛津背景的TRIAS、新加坡的“稳定币+分级基金”项目DUO、瑞士的”农业+区块链+物联网”项目Pavo,以及“中国最硬核团队”Nervos等,成为漫长熊市里专注技术普及的一股清流。
下面是由密码极客整理的分享内容:
大家好,我是郭睿,是超脑链的创始人及CEO。今天很高兴来到密码极客线上直播间进行分享。
我是一个技术出身的人,从最开始编程写代码,然后在IBM工作,后来去了阿里,在阿里的安全事业群做技术总监,主要负责云计算、数据等方面的工作。
在这里先简要地介绍一下Ultrain是做什么的。
我们认为基于去中心化的信任体系会形成一个全新的商业生态,即可编程的商业社会。该社会的核心基础设施由区块链+AI+IoT技术构成,我们称之为去中心化的引擎。
Ultrain最核心的工作目标,就是希望能够建设这样一个去中心化的引擎,为未来的可编程商业社会提供IT基础设施的服务。
我们的目标是在2019年4月份之前,建设一个支持大规模商业应用的公链,主要解决的技术问题,包括TPS的低下、智能合约执行的缺陷,包括数据隐私保护等等。
在2019年6月,主网上线以后,我们会投入到区块链与人工智能以及IoT整合的工作中去。
然后我主要介绍一下公链在赋能实体经济的时候主要面临的三个问题,这也是我们Ultrain在当下最需要去解决的三个问题。
系统性能低下
理想状态下的区块链基础设施应该是以高性能、高服务质量、低成本的去支持大规模的商业应用。而现在所有的区块链公链都无法做到这一点。
举例来说,比特币的交易频率只能是7笔/秒,以太坊的是25笔/秒,对比一下当前主流的支付交易系统,2017年“双十一”支付宝的支付峰值是26.5万笔/秒,前后相差了几万倍。
显然当前公链的这种性能无法支持大规模的商业应用。
智能合约的技术缺陷
这里面又包括几个主要问题,第一个是代码行数的限制,即在以太坊上写的智能合约,其代码行数是有要求的,这就直接限制了商业逻辑的复杂度。
第二是智能合约的执行时间也是有限制的。
现在智能合约的执行时间基本上都限制在一次共识的时间之内,这极大地限制了智能合约的复杂程度,包括对外部数据的调用等等,在处理起来是非常困难的。
第三是智能合约执行的顺序问题。
现有的智能合约都是只能以串行的方式执行,而在复杂的商业逻辑之中,并行执行是一项基本需求,但是现在所有的公链,在这方面都没有好的解决方案。
最后就是智能合约的编写复杂度的问题。现有的这些智能合约非常初级,语法过于复杂,学习的门槛很高。
为什么会出现这样的情况呢?
因为一些智能合约的语言,在设计的过程中,更多的考虑了系统资源使用的有效性,包括代码的调试测试、日志追踪等等,和传统的面向对象的编程是有较大区别的。
数据隐私保护问题
由于区块链本身的特点,链上的数据对所有人都是透明、可查看的。
在某些需要数据隐私保护的领域,我们会发现有很基础这方面的诉求,比如患者的医疗数据上链,当事人显然不希望自己的隐私被所有人查看,这就要求链上的数据既要能够保障数据的隐私,又需要在使用的时候可以被方便地访问和使用。
除了医疗之外,电商、物流系统的交易等,都普遍存在这一问题。
以上是谈了现在公链所面临的问题,下面我和大家讲一下,Ultrain如何去解决的。
首先针对系统性能低下的问题,Ultrain希望通过密码学算法的一些突破和创新,把不可能三角的边界延展到一个新的空间和维度,扩大整个三角的面积。做到在不牺牲安全性和去中心化的情况之下,大幅度提升性能,并且可以支持大规模的应用场景。
我们团队自主提出的R-PoS的共识机制,可以在完全去中心化的情况下,在10秒左右的时间内实现20000笔/秒以上的TPS确认。
当然这是理论上的设计值,不过之前7月15日在亚马逊云的开放网络上,同样是10秒左右的确认时间,在节点数1000的情况下TPS已经达到了3000笔/秒。
我们解决的第二个痛点是在智能合约的层面。
首先针对智能合约本身的限制问题,包括智能合约代码行数的限制、智能合约执行时间的限制、智能合约执行顺序的限制等,我们都通过将操作系统对进程的管理思路引入到智能合约的管理中去解决。
Ultrain智能合约兼容JavaScript运行环境,支持事件驱动,并且能提供非常高效的JavaScript编写执行、对象生命周期管理以及垃圾回收机制,包括合约的生命周期管理、静态合约服务管理、动态合约的管理、资源管理等等,通过这些功能解决刚刚提到的智能合约限制问题。
其次是针对智能合约编写复杂的问题。Ultrain设计和推出了称为Robin的编程框架,它支持通过TypeScript和JavaScript语言去编写智能合约。
不仅如此,Ultrain还提供了非常友好的语言编辑和部署,包括编程环境、IDE、SDK以及本地测试和调试等工具。
然后针对数据隐私保护问题。Ultrain提供了多种数据隐私的保护方案,去满足不同的业务应用场景,包括零知识证明的方案、同态加密的方案、多方计算的方案等等。
我们现在重点建设的是零知识证明的这个方案。
众所周知,现阶段零知识证明技术并不成熟,主要存在的两个方面,第一是使用的逻辑很复杂。在每个证明逻辑在建立的时候,都需要有一套复杂的过程,很难灵活设计和使用。
而且零知识证明在生成和验证的过程中都涉及大量的数学计算,同时性能非常差。Ultrain现在所提供的零知识证明的组件具备这样的几个特点。
第一是可编程。可以按照用户的业务逻辑自定义,灵活配置。
第二是针对任意资产的任意证明的逻辑都不需要Set up过程。
第三是高效 。通过对软件的优化和芯片定制,大幅度提升零知识证明的运算速度。Ultrain的理论速度可以提升为原先速度的四倍以上,这样可以实现零知识证明真正应用在所有的商业场景里。
以下密码极客整理的互动问答环节:
问题一(来自密码极客社群):同样是VRF可验随机函数,Ultrain与Algorand有何差异化优势?
简单说,我认为能够称之为区块链3.0的项目,都应该在密码学这个角度上去做相应的突破,去突破“不可能三角”,实现去中心化、安全以及TPS性能的极高提升。
而在这里,有一个大家都会使用的东西——VRF,可验的随机函数。
对于VRF的使用,其实有两种不同,一种是先出块再验证,Difinity是这个类别里最典型的项目。另一种是先验证再出块,Algorand和我们Ultrain选择的都是这一道路。
而我们Ultrain和Algorand比起来有什么样的不同呢?
首先Algorand是有一个极强的强假设的。大家如果去看论文的话,可以看到它要求的是70%多以上的持币用户都是可信的,但并没有提到任何的方法去保证这些持币用户都是可信的。
所以在我们看来,这也是Algorand未来需要去解决的问题。而我们是引入了设备指纹的技术去解决这个问题。
设备指纹技术,最简单的解释是它可以对每个硬件设备生成独特的ID,并且是无法篡改的硬件指纹。
通过这个ID,可以对所有节点的信誉进行记录,从而保证加入到网络的所有机器,在进行VRF选择过程中的可信度。同时提升整个系统的有效性和安全性。
第二个不同是我们Ultrain利用拜占庭过程中的并行去提升共识的效率,同时保证在少数共识的提交者被攻击的时候,整个网络依然是有活性的。
具体来说就是我们在出块的时候,会选择多个出块节点并行出块,从而提升共识达成的速度。
第三个是Ultrain通过优化密码学的签名和签验模块(更轻量级),去提升结果的安全性,提高节点的响应速度。
然后还有一个很重要的是Ultrain通过冗余编码的技术,将网络中传递的消息划分成了多份传递而不是只有一份,从而保证了节点能够利用有限的网络带宽去广播最大的消息数量,提高共识的吞吐率。
最后一点差异主要是和Algorand在设计理念上的差异。我们认为在整个过程中,还是需要激励机制去保证共识的有效运行的。
问题二(来自【BiB全球区块链女性社区】):
工业级R-POS共识算法代表什么?Ultrain对于跨链交换及安全保障有什么样的独特性?Ultrain和其他公链之间的主要技术差异是什么,特别是在隐私保护方面?
首先简单介绍一下R-PoS共识算法。我们做个通俗的比喻。比如说EOS采用的是D-PoS的共识机制,就是一群人通过持币数量,投票选出21人的小组,然后由这一小组人轮流做决定出块。
而在R-pos的机制中,是在一群人中间,比如一千个人,先随机选出几个人,做出各自的提案。一般都是选十到二十人,然后再随机选出十倍的人,去判断之前这十几个人的提案是否是正确。最后将确认是正确的提案合到一起,形成最终的决定。
所以R-PoS的核心思想就是在D-PoS的基础之上,将每轮参与共识的节点选择方式,从委托选举变成随机选举,保证全网的节点都有几率被选举成为少数的参与本轮共识的节点,从而保障网络的去中心化,又极大地去提升了性能。
同时我们也引入了包括并行技术以及分片技术保证性能的进一步提升。
然后跨链交换的话,Ultrain的设计是主侧链的机制。所有的DAPP都是跑在侧链上的,简单可以理解为每个DAPP都有一个侧链。当然也可以有多个DAPP共用一个侧链,这其实是跟经济效益相关的。
而我们的主链上面只是做所有侧链信息的最终确认,去保障侧链的安全性。在这里先先讲一下我个人对跨链的看法,我认为跨链技术的核心应该集中在一个生态,这样主侧链之间的跨链才是有意义的。
为什么这么说?
因为我认为现在公链的竞争远远没有到尘埃落定的地步。未来也许两年或三年后,世界上最常用的几条公链,可能和现在我们看到的公链完全不一样。
在最终要跨的链都还没有确定的情况下,现在谈如何做多个公链之间的跨链,我觉得是为时尚早的。
而如何去做跨链交互,我们也会形成多种方案,包括链下的相应的交换方案,以及对链上的资源绑定后的交换方案,进行Ultrain体系内部的主侧链之间的跨链交互。
然后和其他公共区块链之间的主要的技术差异是什么?
如果从技术优势上来说,我觉得我们最核心的还是Ultrain是一条完全去中心化的公链,目标至少是能够支持日活千万级别的DAPP,在我们的链上部署和应用的同时,支持大规模复杂的商业逻辑的实现。
同时在开发者友好性这个层面,我们是类似于JavaScript这样的智能合约编写语法,可以帮助开发者快速上手和开发。
在隐私保护层面,现阶段我们更多的工作是在零知识证明上面,为所有的开发者提供可以函数式编程的零知识证明的组件,让开发者把使用零知识证明的成本降到最低。
第三个在工程方面,我们链上具有非常丰富的商业组件。
为了支持所有的DAPP在工业上的快速落地,我们联合了一些第三方的提供厂商去提供了各种服务的组件,包括身份认证的组件、信用体系建立的组件、密码学的组件等。
最后就是在这个商业上面,我们有比较合理的利益分配模式。这是在公链竞争里,各个链都需要去重点考虑的。
我们Ultrain是这样的挖矿体系,整个挖矿体系中产出的80%是归属矿工的,然后有5%归属Ultrain的技术团队,5%归属Ultrain的社区,同时有10%是归属于头部的DAPP的开发者。
问题三(来自【巴比特论坛】):您认为超脑链是否能打破突破三元悖论?
我看到密码极客之前的Nervos项目分享也探讨过“不可能三角”的问题。
在这里我谈一下自己的观点,我认为打破“不可能三角”是不现实的,因为这是物理世界上面的一种限制。但是我们能通过一些技术上的创新,把安全、去中心化和高性能,每一点都往外延,从而使组成的三角形的面积扩大。
对于Ultrain来说,我们最核心的还是通过随机的引入去有效地去保障去中心化的特点。因为去中心化不仅是一个区块链理念的问题,而是实现很多商业化应用落地的前提条件。
而确认了去中心化的特性不能丢掉以后,安全性也是不能做任何妥协的,因为系统首先必须安全,才能去更好的去支撑商业的应用。
后面我们可以通过多种技术手段,包括密码学的创新和工程的创新,在两个角已经确定的情况下,把性能去做更好的优化和提升。