在现有云计算的平台之上,抽象出一层专门为区块链来做的服务平台。这是我们对区块链3.0的设计和实现。
本文作者:温晓桦、吴阳煜
技术与行业资源积累到一定程度时,转折点也如期而至。经过一系列技术建设者的持续投入,区块链3.0进入了公众视域,蓄势待发。
雷锋网AI金融评论报道,经过2017年中旬各区块链项目围绕底层设施建设的技术产品宣布的更新后,如今区块链行业中围绕3.0即应用落地阶段的更多技术建设正逐步完善,比如数据库、跨链价值交换协议、面向数字交易所的第三方清算、PaaS服务等。
定位于降低去中心化应用(Dapp)开发门槛的区块链创新项目“区块基石”(ArcBlock),就是在这样的大环境下推出的。该项目于2018年2月4日,在美国,19分钟之内完成ICO的公售。
据介绍,本质上来说,ArcBlock是一个专门用于开发和部署去中心化区块链应用的服务平台,类似如今云计算的PaaS平台,其通过搭建一个去中心化的区块链应用的开发框架,为开发者提供开发工具、分享自身开发的应用的功能模块,来实现降低Dapp开发门槛的作用。开发者以支付代币的方式获取使用平台上的资源。
跨协议兼容,降低开发试错风险
要知道,目前区块链要成为大规模应用的技术,还面临着很多困难,除了性能限制、交易费用高昂等摆在应用开发者面前的门槛,比如,ArcBlock白皮书指出:
- “平台锁定”。由于区块链技术尚未制定统一的标准,目前底层设施也还处于角逐“主链”的阶段,所以Dapp开发面临着较高的平台“锁定”风险:开发者一开始就面临支持哪种区块链技术的艰难选择,应用的设计和代码被底层平台“锁定”,未来难以更换,且无法支持多种不同底层链技术来提供最佳用户体验。
- 除此之外,用户使用门槛也高。由于几乎所有区块链应用都需要用户在自己的计算机端运行一个“节点”或至少安装一个“轻节点”才能使用, 学习使用成本高昂导致大部分区块链应用都局限在极客范围。举个简单的例子,目前虚拟货币投资者千千万,但会用数字钱包的有多少呢?冒志鸿指出,“要实现普及,区块链应用必须降低用户门槛,让用户感觉不到区块链的存在。”
因此,ArcBlock平台的开发主要针对上述困难做支持:让应用可以连接多种不同的区块链协议,一定程度降低或消除现存区块链技术的“平台锁定”风险;架构微服务化和采用无服务器计算,提高开发效率和体验;打通链上和链下的连接,提高区块链运行效率……
具体的平台实现手段,冒志鸿向雷锋网(公众号:雷锋网)AI金融评论介绍称,ArcBlock平台的核心部件和体系包括去中心化访问协议 (云节点)、开放链访问协议、基石程序和构件(Blocklet Components),还有代币经济服务体系:
- “开放链访问协议”(Open Chain Access Protocol)——这使得应用可以通过它连接多种不同的区块链协议,比如以太坊(Etheruem)、超级账本(Hyperledger)等。这是一个开源的协议,作为访问下层区块链的抽象接口层,类似于在数据应用中的 ODBC或JDBC在和各种不同数据库之间的关系一样,让各种应用可以在不同的区块链上工作。在切换不同的底层区块链、或者使用多条不同协议的区块链的时候,开发者甚至不需要更改业务逻辑代码。
也就是说,理想状态下,你还可以将同一套应用方案部署在不同的底层协议之上。基于这个特性,开发者将拥有方便评估不同区块链协议的自由。到那时候,底层的优劣将高下立见。
- 基石程序是由社区成员受代币激励创建贡献的主要服务或部件,是运行各种应用的无服务器计算架构组件。 你可以采用Blocklet来实现区块链上的智能合约、外部事务触发器,访问外部的资源,如文件、数据库等其他数据源,以及完全和链无关的业务逻辑。通过“开发链访问协议”,Blocklet可以和区块链通信。
值得一提的是,Blocklet不止是连接区块链协议,也可以访问任何外部数据源,因此它能完成链上和链下的两种计算方式并且将它们联系起来。
此前,为了解决区块链应用性能底下的困境,有人提出将数据于链下处理,交易和决策环节放在链上。Blocklet的通信功能,不仅能够提高区块链应用可行性,还使得传统企业利用区块链做数据交易提供了便捷直观的手段。
- 最后一点是ArcBlock的内在激励机制驱动的功能模块和应用市场,该平台凭借此机制来形成一个生态体系。ArcBlock里的“矿工”可以提供的,不仅仅是计算资源,而且可以提供的是可重用的模块、新的服务甚至是可以直接部署使用的应用。这些提供功能和应用的“矿工”在自己的服务被使用时就会获得代币奖励,从而形成一个能够不断完善、自我成长的服务平台。
冒志鸿强调,“ArcBlock服务平台并不只是我们单独创建的,而是由整个社区一起来开发创建的,我们只是最初推动的一群人而已。”
区块链3.0:选择云节点设计,对抗区块链“原教旨主义”
据介绍,ArcBlock被设计成云计算环境原生平台。当然,在测试和开发环境下,它也可以运行在单机上。
在ArcBlock中,一个区块链节点是一个“逻辑上的计算机”,它可能是一台或多台虚拟机,或者一组云计算资源共同组合形成的“逻辑上的计算机”。
但这种设计看起来有点分布式,但也有点集中。
“这种设计使得ArcBlock和很多‘原教旨主义’的区块链平台有些格格不入,然而这才是我们认为的未来。”
按照冒志鸿的说法,在计算机科学里面有一个像笑话一样的定理——任何计算机科学的事情都可以通过增加一个抽象的layer来实现。“你可以认为ArcBlock就是建立在Cloud computer以上的Layer上来考虑区块链,这也是我们对区块链3.0的设计和实现。”冒志鸿表示,“我们认为在过去、早期的区块链的时候,更多是一个P2P的设计,其中每一个节点都是物理上比较相对独立的机器。”
其实物理上说它是个独立的机器,其实也已经被打破,现在的矿场虽然有很多台机器,有可能是成千上万台机器,但实际上它可能代表的只有几个节点,你可以认为矿场是某种形式的云计算,只不过它是专门为挖矿而生的一个云计算服务。
所以,ArcBlock3.0相当于选择在现有云计算的平台之上,抽象出一层专门为区块链来做的服务平台。“这种设计使得ArcBlock把区块链技术、去中心化应用的概念推向一个新高度。”
“一个完整的应用服务,最典型的或者是最容易、最合适的设计就是云计算的提供方式,因为这些应用的提供商、开发商不需要去关心机器、节点放在哪里,如何去维护这些机器和节点,这些事情本来都不是开发者需要或者愿意担心的。”
冒志鸿解释称,“另外,从最终用户的角度来讲,用户不需要知道什么是节点,以及更加不应该让最终用户需要运行一个节点才能使用区块链,这些事情我们都应该帮他们搞定。”
“我相信这也是未来的主流设计的方式,我们只是最早宣布用这种方式来设计的人。即便今天开起来不符合原教旨主义的想法,但我认为这符合未来趋势。”
区块链3.0的理想和风险
“我们试图建一个是被社区运维的平台,而不是被一家大公司控制的平台。”冒志鸿称,未来,通过一系列模块支持,ArcBlock目标要让企业通过区块链开发,将现有业务的数据、用户、商业逻辑等应用在区块链驱动的新应用之中。
但当下,高兴之余冒志鸿也指出了ArcBlock面临的潜在风险,“我们最大的风险是能不能得到社区的支持,也就是我们是不是能真正跟开发者社区建立起来形成一个完整的生态系统。”这是指,“比较懂行、懂技术的开发者了解ArcBlock,觉得一看就明白,但是不一定能做出来。”
这与整个区块链行业的技术链条、工程化能力相关。有开发者也对雷锋网AI金融评论表示,ArcBlock这样的平台,大规模应用也许要在5年之后。
不过,对此冒志鸿表示:“Arcblock第一阶段的开发进度已经超过80%,在2018年上半年就能落地。”
在公售开始前一晚,雷锋网AI金融评论与ArcBlock CEO 冒志鸿进行了一次越洋对话。关于平台的特性、实现细节,我们可以从对话中找到更多答案:
ArcBlock的实现细节
AI金融评论:开放链访问协议的运行,它和跨链技术相比有什么不一样呢?
冒志鸿:开放链访问协议目的就是提供一个区块链的访问抽象层,这个抽象层因为足够抽象,可以访问多种不同底层区块链的协议。所以,通过这个开放链访问层,我们可以在一定程度的时间应用这一层的跨链,也就是说应用可以通过开放链访问层去访问多种不同的区块链协议。
但是现在市场上还有一些更加底层的跨链技术,它们让两个区块链之间直接进行绑定或者直接进行比较底层的数据交换或者调用,而开放链访问协议不考虑两个不同的区块链或者两个不同的区块链协议之间的沟通,当然一切都是从应用这个角度来处理。
如果要类比,比如把区块链类比成一种数据库,开放链访问协议就好比是一个应用,可以连接两个不同的数据库,但这两个数据库之间并不兼容和通讯,一致性完全靠应用维护。
如果要做跨链,就相当于在历史上曾经谈过的异构数据库,不过在学术上做了很多研究之后,我们可以这样说——异构数据库在商业上几乎完全失败了。因为今天没有看到任何一个异构数据库扩散,它是一种技术理想主义。
不是说一个完全的跨链底层协议可能最终会失败,但是从类比的角度来讲,难度非常高,挑战非常大,开放链访问协议是实用主义设计,它能解决90%以上的问题。
AI金融评论:开发者应用具体绑定到一个区块链协议上的时候,不同的区块链有不同的技术特性,在ArcBlock的开放链访问协议上实现应用,既能体现某个区块链的技术特性,又能满足在跨链之间的部署,是怎么样能够做到的呢?
冒志鸿:比如说在开放链访问协议里面有定了三个不同层次的API。
其中最基础的是level 1的API,它其实是个非常小的子集,因为区块链有些最基础的特点可以被抽象出来。
level 2比较有趣,我们并没有从今天的区块链来考虑,而是从做一个区块链的应用需要什么来考虑。所以,level 2的API是一个完全站在应用角度考虑的API集,这样的话不同的区块链就需要能适配level 2定义的接口,这就必然会导致level 2的接口由于某一些区块链实现不了。不过这个也不要紧,因为API里面就设计了能让你查询这个结构,下面的链不能实现。
level 3就是让程序可以绕过API的限制直接访问底层提供的接口,所以level3是底层不同的,看起来都是level 3,但是可能实现会区别很大。
一个应用如果确保只用level 1或者是level 2的话,那这个应用得就特别好,几乎不修改就可以换各种底层链。但是level 3的接口用得越多的话,就意味着你的上层协议还是会越多绑定在下面具体链的基础上。
如果用level1和level2的话,还需要做定制化设计。因为链式配器的这层已经帮你把这个事情处理了。如果用了level 3,毫无疑问,用了具体原生的特性,这个应用必然会跟下层区块链的距离会有一定程度的绑定。
AI金融评论:Blocklet运行应用的无服务器计算架构组建,怎么理解它作为这个平台的核心基础所发挥的作用呢?
冒志鸿:它是个微服务的架构,而同时又支持Serverless方式来开发Blocklet。这两者没有必然联系,但是略有点区别——微服务是一对功能单一的服务,不是把一堆功能放在一个服务里面。所以,一个完整的应用通常会有很多服务来协调。
举个例子,比如说用ArcBlock来设计,一个最终的应用可能在背后有好多个甚至十几个、几十个服务,每个服务基本上只干一件事情。我们的设计原则是—— 一次只做一个事情,但是把这个事情做好。
Serverless有相当多的服务是短暂型服务,而且负荷可能很不均衡。举个例子,假设用区块链做一个知识分享相关的应用,那么其中一些操作是非常少发生的,比如修改密码、名称、图标;但是给文章点赞,给文章支付小费等行为可能会不断地发生。
所以,在这样的情况下,有些服务的运行量就可能非常大,另外一些运行量就很小,而且有很多服务运营很短暂。无服务器的设计,使得开发者以函数的形式或者一小片任务的形式来触发一件事情,就像微信用完即走。
这种设计对开发者来说,首先是更低的成本,如果你的计算资源是以毫秒级来计费的,当一些功能不需要运行时,就不需要付费了。
**AI金融评论:无服务计算兴起的时候,就有人说它运行代码以毫秒级计费的方式会有很高的经济成本,那么ArcBlock在这方面的收费手段是什么样的?消费水平是什么样的呢?
**
冒志鸿:说它有很高的经济成本其实这句话不是完全正确,它对相对来讲规模不大的应用,对小规模的应用是更经济的,但是对超大规模的应用,我相信其实是不够经济或者是最多是一样经济的。因为任何无服务器的系统后面有一个框架来支持,那个框架仍然带着服务,只不过就是无服务器这个框架做了更合理的调度,让你的应用不是那么繁忙的时候,就把你置换出去,让别的应用来运行。如果说你的应用非常开放,每时每刻都在运行你的运用的话,那么这种情况下,通常来说应该是更贵的。
我们自己的计费模式和矿工利益分配机制将在我们基础服务全部推出后的下一阶段才推出,因此现阶段无法透露会便宜到什么程度。另外可以肯定的是,这些服务费用一定也是一个市场驱动的动态机制,生态越繁荣就会越便宜。。
开发者培育:无倾向性
AI金融评论:那其实现在公链平台都意识到要为开发者考虑,降低开发者的门槛,不过做法都不一样,你怎么评估这个市场现象呢?
冒志鸿:我相信任何一个公链,每一个区块链技术,他们都必然会提供各种程度的开发者企业的支持和周边的支持,**但区别就在于具体某一个公链技术往往带有自己很强的原生特性,这可能是出于战略的考虑,所以这个恰恰也是我们ArcBlock给自己的定位,我们不去做一条新的公链,而是非常清楚地把自己定位在一个对开发者有好开发工具的角度。
**
因为我们处于这样一个相对独立的状态,而不是站在底层某一个特定的技术,而这个技术要跟另外一个类似的技术去竞争的角度出发的。
举个具体的例子,像以太坊和EOS他们在竞争的时候,他们就会出现相对尴尬的局面,比如说以太坊的智能合约一种方法做,EOS是用另外一种方法做,每家都有自己非常明确的战略性的意义,因为它在考虑这个开发工具,首先要考虑战略上是不是对自己有利,其次才是考虑能不能提高开发者的利益。
而站在我们的角度来讲,我们就没有任何因为战略而绑定企业的问题,我们一切都是考虑怎样让开发者更容易使用,就是这个区别。
一个同时经历过区块链2.0和3.0滥觞的技术人
AI金融评论:说起“区块链3.0”的概念,是什么样的技术自信,让你们觉得你们可以创造区块链3.0时代呢?
冒志鸿:区块链是1.0、2.0、3.0,其实并不是我们发明的,而是在一、两年之前,最早提出这个概念的是一本书,叫《区块链技术:新经济的蓝图》,这本书第一次提出了1.0、2.0、3.0笼统的划分。这个划分出来之后,越来越多人往这个概念里面添砖加瓦。
现在被大家普遍认可的认为区块链1.0属于区块链本身的设计,即只为承载数字货币而设计,举个例子,就是比特币。区块链2.0通常是指这上面开始开发除了承载货币之外的属性,获得一些额外的代码,典型的例子是染色币,被认为是第一个区块链2.0。现在典型的代表就是以太坊,它在区块链上面放代码,这个代码是(智能)合约。
区块链3.0最初的定义专注的是一个完整的应用,现在从我们的角度来看,我们认为区块链3.0一个标志性的变化应该是区块链行业应用的落地,也就是区块链应用能被普通的用户、广泛的大众所接受。直到区块链3.0技术出现之前,虽然媒体、公众都已经对数字货币热火朝天,但是真正我可以说90%或者是95%以上的人都不知道究竟数字货币是什么,也无法掌握如何去使用和合理地来管理自己的数字资产。
区块链3.0上各种各样的玩家,无论是在做什么,最本质的区别是能把区块链的应用真正落到让普通用户也能使用的状态。
AI金融评论:顺着这个话题,刚才提到染色币是区块链2.0的开始,那么现在到了3.0,作为一个2.0和3.0的见证者,你是如何判断技术的节点以及怎么去认识这个转折性意义的呢?
冒志鸿:如果说2.0,其实是ArcBlock的首席科学家Flavien Charlon,他是染色币技术的最主要的推动者,我代他讲一下。染色币的转折点非常明显,因为在染色币之前,染色币核心的概念非常简单,就是在比特币的网络上,利用比特币区块链的特点,在上面把空余的字段定义成数据的格式,这样使得比特币区块链可以不但用于支持比特币支撑,还可以用于一些其他的应用。
这个节点非常清晰,有了染色币这个技术之后,比特币一下子就可以承载一系列的业务。虽然染色币出现得比较早,当时还比较原始,但是其实在染色币时代他们所联想到的各种区块链可以开展的业务,我可以说现在80%、90%都在染色币时代都已经想过了。
包括像现在的ICO——发行自己新的代币,用代币来处理各种各样的场景,那都是在染色币时代的想法。
对照互联网:区块链是站在前人的肩膀之上做服务
问:关于ArcBlock组件是面向云计算时代设计的这一点,这个设计和今天的分布式计算有什么区别和联系呢?
冒志鸿:有非常大的联系,因为本质上来讲,分布式计算是一个谈了几十年的概念,今天的ArcBlock都是建立在前人的基础之上。比如说比特币,它就是建立在P2P的网络之上,今天所谓的区块链,基础都是P2P,P2P就是一种最典型的分布式计算。所以,区块链、云计算都和分布式计算有着千丝万缕的联系。
原文发布时间为:2018-02-16
本文作者:温晓桦
本文来源:雷锋网。如需转载请联系原作者。