币世界 x ArcBlock
定义开放链访问协议标准
创建区块链 3.0 应用平台
冒志鸿(Robert Mao)
ArcBlock 创始人兼 CEO
连续创业者、技术革新者
美国政府认可的“杰出人士”
万维网联盟W3C特邀专家
曾就职于微软研究院
西雅图创业协会共同创始人、
首任董事会主席
问
非常感谢冒总在百忙之中抽出时间来接受币探索的本次专访,您能介绍一下创建 ArcBlock 的原因或者灵感是什么吗?
答
其实我很早的时候就接触到了比特币和区块链,在比特币刚出来的时候,我出于对新技术的好奇很早就参于了挖矿,但那时候还没有任何其它的想法。到2013年,区块链的概念开始出现,在那段时间比特币的价格经历了比较大的下跌,链圈的技术人员对于比特币作为货币这一看法产生了很多怀疑。也是从那时,开始有更多的人关注到比特币的底层技术,发现区块链其实可以有更多的应用场景。在美国,2013年应该是区块链技术发展的分界线,2013年开始有越来越多的公司,尤其是银行等金融类的机构,开始在区块链行业投入大量的资源。在2016年年底,差不多2017年年初的时候,我们就发现市场里面还有很大的空白,整个行业的机会还是很大的。
我经常说今天的区块链技术就像1993年的互联网,为什么精确到1993年呢? 因为在1993年是互联网发展的一个分水岭,那时候 Netscape 还没有推出大众普及的浏览器,但是 TCP/IP 协议簇以及其他基本协议都已经非常成熟了,有各种各样不同的应用出现。但是当时能玩互联网的人,谁也不知道究竟是哪一种协议会真正的成为主流。市场上急需如思科这样的公司搭建基础架构、连接互联网,急需像美国在线AOL这样的让普通用户能接入互联网,急需网景这样的浏览器让用户能像阅读杂志一样阅读网上图文并茂的内容。
像思科、AOL、网景等公司在关键的技术变革期对互联网的落地起到十分关键的推动作用。而目前的区块链可以说是正处在以研究与发展去中心化应用(Dapps)为主题的区块链3.0时代,所以我们成立 ArcBlock,希望能在技术变革的关键时期扮演类似的重要角色。
问
在官网上我们看到只列出了4名管理人员,不过据我们从其他途经的了解 ArcBlock 团队好像已经有几十名技术人员了吧? 2018年 ArcBlock 在团队发展方面有什么样的规划呢?
答
我们近期的人员增长是比较快的,最开始参与项目中来的只有几个人,后面逐渐有更多的人参与进来。这次 Token Sale 做的比较成功也让我们有更多的资源来让团队在发展上有一个比较大的飞跃。在2018年,我们计划成立三个办事处,分别负责不同的方面:
一是将西雅图作为核心研发基地,侧重于计算平台本身的开发。选择西雅图是因为这里是“计算之都”,有非常多的技术人才。目前计划在西雅图将核心技术团队扩充到25人左右。
二是计划在爱尔兰的都柏林,以Flavien(首席科学家)为首组成一个不超过10人的技术团队,这里将负责高性能区块链部分的研发。
三是在上海建立一个更大的团队,主要是以开发者体验和用户使用体验方面为主。
因为我们是一个计算平台,所以有很核心的需要技术攻坚的部分,也有非常多的具体业务和功能部分,还要同时考虑到用户体验和开发者体验。我们在团队的设计上也是比较去中心化的,分成多个小中心,每个小中心有各自的侧重点。
问
前段时间对外公布了丁磊担任 ArcBlock 顾问的消息,丁磊和 ArcBlock 是如何互相吸引从而深入合作的?
答
很多人认为我们是拉丁磊来提升我们的知名度,其实这件事情是丁磊来找我们的。我跟丁磊很早就是朋友了,而且一直有很多的联系。我从事区块链行业后并没有告诉他,只不过他的消息很灵通,得知我在做区块链项目后就来找我。他在2013-2014年就开始关注加密货币和区块链技术,只是在当时还没有太深度参与和落实项目。丁磊在 ArcBlock 其实不只是顾问的角色,他也是我们的早期投资人之一。
所以,丁磊参与 ArcBlock 项目,首先是基于我们认识这么多年所积累的了解和信任。其次,是他本身对区块链就很有兴趣,也非常关注区块链行业的发展。另外,从产品上来看,ArcBlock 要做一个区块链上的应用平台,其实和丁磊在互联网初期所做的事情非常类似。丁磊很早就意识到互联网可以让很多人在网络上建立个人主页,所以他创建了网易提供个人主页服务器使更多的普通互联网用户可以更加便利地去建立个人主页。我们发现有非常多的应用需要在区块链上展开,所以我们建立 ArcBlock 平台,让开发者可以免去实现底层区块链协议这些琐碎的细节困扰从而更专注于应用本身。从这个角度去看,ArckBlock 和当年网易所做的事情是很相似的。基于这些原因,我们自然而然就达成了深度合作。
问
ArcBlock 的白皮书中提到现有底层区块链有一些核心问题没有解决,比如:性能低下、非消费者友好、费用高昂、平台锁定风险等。对于这些问题,现有平台本身是否可以通过升级改进来解决呢?
答
其实我们是非常相信现有的主流区块链,他们已经意识到这些问题并且也会通过升级去改进一部分问题。我们 ArcBlock 并不是因为现有的区块链有这些问题,我们就针对这些问题去重做一个。我们相信在很多问题上,平台本身都是能够解决的。我们选择的是要和现有的主流区块链相互配合,和他们共同成长。
我们作为一个应用平台目前主要想实现的包括这几个方面:
一个是开放链访问协议。目前大部分的底层区块链平台通常都是以平台本身为中心的,这就导致链上开发者需要被迫选择不同的协议,也就是说被迫锁定在某一个协议,这绝对是所有的开发者都不愿意看到的事情。
另外,现在有很多人会把区块链的能力描述成无所不能、颠覆一切。但是,我们认为区块链其实是有边界的,我们对区块链的边界在哪里有一个很清晰的认识,不仅了解区块链能做什么,更重要的是我们还了解区块链不能做什么。在认识到区块链的边界之后,我们再从应用的角度来看,就会发现一个真正在未来对消费者友好的一个区块链应用,应该是 Onchain 和 Offchain 相结合的一个状态。比如以太坊或者超级账本这些底层技术支持平台,它们大部分是关注自己的区块链本身可以怎样提高性能和解决平台性问题,但是作为一个完整的应用体验来讲,其实还包含很多其他的方面的。对于一个完整的应用,区块链不应该是它的全部,它应该有链上的部分,也有不应该放在区块链上的部分。所以 ArcBlock 要提供的是 Onchain 和 Offchain 相结合的框架。
问
ArcBlock 要解决平台锁定问题,但对于基础链移植可能存在一些问题,比如:
1)应用的各个平台(后台服务、手机端)与基础链交互的接口;2)链上数据移植的问题,比如以太坊合约存储的数据移植;3)合约的移植,比如 ETH 合约与 NEO 的合约是完全不兼容的。这些方面 ArcBlock 有考虑和解决方案吗?
答
关于平台锁定的问题,我们也收到社区的一些批评,我觉得也很中肯。他们的主要观点是 ArcBlock 要解决平台锁定问题,但是用户选择了我们 ArcBlock 的开放链,其实用户就锁定在 ArcBlock 的开放链上了。
开放链访问协议本质上是一个抽象的区块链协议的访问层。一旦你定义了一个抽象层之后,其实也意味着使用者要绑定到这个抽象层了。为了解决这个问题,我们的做法是把开放链访问协议的代码贡献给开源社区。也就是说我们虽然创建了它,但是不会去控制它,大家都可以去贡献代码。用户绑定的是一个可以去参与改进的公共开源协议,而不是被一家公司完全控制的平台。
另外,从计算机的技术发展的角度来看,有相当多的东西都是需要一个统一的抽象层来解决的。我们的开放链访问协议非常接近于数据库系统的开放数据链接这种协议。在数据库发展早期的时候,每家数据库都有自己不同的API,有不同的数据查询语言、数据操作语言等。最终大家索性定义了一个统一的中间性语言,叫做SQL。SQL在很早期的时候,其实就是一种额外的抽象层,比如说你要想获得最好的某一个数据库的性能的话,你先要去找这个数据库的原生接口,SQL 只是一个中间层的东西。但是大家逐渐都统一起来,就发现还是用一个比较统一的抽象的中间层来做各种事情最理想。今天当你去做一个需要使用数据库的应用时,会发现绝大部分的数据库都支持SQL,这几乎变成一个标配。所以我们相信在将来,即使我们的开放链访问协议不能成为一个标准,那一定会有一个类似的东西成为大家的主流和标准。我不太相信某一个特定的区块链(比如说以太坊、Hyperledger等)会成为广泛的标准,一定是一个相对比较中间化的东西会成为一个标准。现在做这件事情的人还很少,我们相当于是第一个吃螃蟹的人。我希望我们能成为这个标准,最终能不能成为标准还要看最终的演进。
问
开放链访问协议定义了三个等级的API。要实现跨链问题主要是看等级1和等级2,如果只在这两个等级做简单的查询适配, 可行性会很高但是功能会比较单一。 但是要想增强这两层 API 的功能, 实现难度就类似于目前各个跨链协议的项目了。请问, ArcBlock 的开放链访问协议对于跨链非只读接口适配的一致性问题有什么好的解决方案?
答
这个问题问的非常专业也非常好。ArcBlock 将API分为三个等级是经过深入考虑后设计的:
• 等级1是最基础的API,几乎所有的区块链都具有最基本的共同属性。
• 等级2是从应用的角度去考虑。在等级2,我们不去考虑区块链本身,而是考虑大部分区块链应用需要什么,从应用的需求去定义一系列抽象的东西。所以在等级二的 API 中就会有一些区块链因为自身特性的原因而不能完全实现。
• 等级3就是解决前面说的问题。因为要定义出一个比较抽象的接口,那么必然会牺牲掉一些具体区块链模型的某些原生特性。在这种情况下,如果只提供等级1和等级2的 API,就会导致很多区块链的原生属性完全无法使用,也会因此失去一些开放接口用户,所以我们支持了等级3这类接口。
我们在设计这三个等级的 API 时其实也做了非常多的参考,也学习了 ODBC 这个标准设计时的做法。其实 ODBC 的设计也是分三个等级的。
我们和目前各种跨链协议有一个非常本质的区别。现在大部分的跨链在我理解来看都是做一个比较底层的协议,他们试图想让几个不同的区块链协议之间能够互通或者达到一定程度的互连互通。而我们的开放链访问协议并不是要解决各个区块链之间的互通问题,我们 ArcBlock 里运行的是跨链的应用,这里的跨链的应用是指它们都是通过开放链协议同时访问不同的区块链,但是各区块链之间实际上并没有通过我们的协议接口直接交互。所以那些跨链协议能够满足某些不同需求,同时也存在一些额外的设计开发复杂度。
我们的开放链访问协议在设计上是比较现实主义的。我们认为大部分应用即使有跨链需求,也是来自应用层的需求,那么我们没必要把问题复杂化,我们只需要提供一个统一的方法让应用能够访问不同的协议或不同的区块链就可以了。其实任何一个设计都是一种权衡,ArcBlock 更多的是从应用的角度来考虑和设计的。
问
ArcBlock 要提供免费的区块链。但就目前的区块链解决方案来看, 手续费越低越容易遭受粉尘攻击, ArcBlock 对此有哪些防御措施吗?
答
这方面我们是有考虑的。现在的区块链在架构设计上每个用户都可以是一个节点,每个节点都可以广播符合协议规则的交易,矿工节点会把这些交易都打包到区块里面,这就可能导致有一些恶意的节点会通过粉尘攻击的方式来消耗系统算力。
ArcBlock 是一个应用框架,终端用户不是现在的区块链上的一个很原始的节点,不能任意发布大量恶意的交易信息,是非常难以产生攻击效果的。如果发生粉尘攻击,基本上只可能是 ArcBlock 上运行的一个服务端应用发起的。
在我们的设计之中,终端用户不需要支付费用,但并不是说在系统中的应用本身完全不产生费用,只是被应用提供者给承担了。就好比一个开发者开发一款免费的游戏,这款游戏本身是不收费的,但是它的服务器等等是需要付费的,只不过因为开发者为了能让应用得到推广而将应用设计为免费,所以终端用户没有产生费用。在这种情况下,除非是开发者开发应用的目地就是想来产生大量的无效交易,否则是无法产生粉尘攻击的。
有一个细节我们的白皮书上面没有提到,就是在 ArcBlock 系统中的应用提供方是需要支付一定数量的 ABT 做为押金的,如果其在系统里产生破坏行为,不但应用可能会被下架,也会有丧失押金的风险。这种机制,就是为了防止应用提供方发布恶意的应用来破坏系统
问
对于区块链这类去中心化的服务, 系统更新一直是比较重要也很棘手的问题。Blocklet(基石程序)是 ArcBlock 的核心组件, 负责了很多的功能, 尤其是需要适配不同的链外服务, 因此 Blocklet 是不是可能需要频繁更新? 有没有比较好的分布式更新方案?
答
是的,说的非常对。Blocklet 本身是一个微服务,是常常需要更新的。可以通过支持多版本运行来解决这个问题,也就是在服务端支持多个不同版本的 Blocklet 同时工作。在我们的设计中,开发者可以很容易地、不断地去更新它。支持多个不同版本的 Blocklet 的运行和调用是我们整个框架的一个重要部分,也是我们核心的基础功能之一。
问
微服务架构更多是用来做中心化服务器的后台设计, ArcBlock 使用这种架构来构建去中心化服务, 那各个微服务之间会不会有共识与一致性问题?
答
绝对会存在这个问题。但是从中心化和非中心化的概念来讲,两者其实是很难有效的界定的。举个例子:银行做了一个应用,这个应用分布在很多个不同的数据中心,数据中心有的是放在 AWS,有的是放在 Azure。从一个角度来看,这是一个非常去中心化的设计,因为它的系统不是集中在同一个物理设备上,甚至可能是异构的。但从另外一个角度来看又是一个中心化的服务,因为它是由银行这个组织所控制的。所以,一个服务是中心化还是去中心化的,要看是从哪个角度去考虑的。
ArcBlock 的核心是一种新型的云计算服务,我们的去中心化的概念更多的是从提供应用的服务方来看,而不是从应用的角度来看。逻辑上它是比较去中心化的,但是从技术实现上来讲可以认为微服务本身是包含不少中心化设计的。就是说其实任何一种应用,你从一个角度去看是很去中心化的,但是从另外一个角度去看它可能又是非常中心化的。所以在我们的理念之中,去中心化是不被一个大公司控制,而不是看其是不是采用一个统一的架构。
问
ArcBlock 的智能合约是在 Blocklet 里实现吗?
答
我们这里的智能合约的概念和现在的以太坊智能合约有一定的区别。以太坊的 EVM 可以保证代码执行的一致性,这在某些场合非常的重要,但在另外一些场合则不一定。
一个合约往往需要有很多外部的触发条件,这个被称为 Oracle,其实可以认为 Oracle 也是一种智能合约。一旦合约有了外部数据的触发,就使得合约失去了执行的一致性。因为虽然代码是一致的,但是每次执行时外部条件都可能发生变化或者异常。
我们的 Blocklet 本身其实是一个框架。假如一个应用是用以太坊作为它的底层核心链,并且其合约非常强调本身计算的一致性,那么合约本身应该是原生的 Onchain 的,我们的 Blocklet 可能就主要用来触发合约。但是假如应用有相当多的外部触发条件,那么我们更倾向于把合约放在 Blocklet 里来做,而不是把它放到链上去,因为即使放到链上,可能也达不到它原先的目的,而且在性能上也可能会变得更差。
所以最终智能合约应该在 Blocklet 里面实现还是应该在底层的 Onchain 上实现,还是主要取决于业务本身的定位、功能与设计。
问
在发展路线图的描述中,2018年会上线第一个应用,您比较期待哪类的应用在 ArcBlock 上运行?什么样的应用比较合适在 ArcBlock 上运行?
答
第一个上线的应用我们还是很希望能够给社区一个惊喜的。另外,第一批上线的应用在类别上可能主要是和教育相关的。
作为一个计算平台,我们希望可以用在各行各业、各种不同的场景。我认为将来 ArcBlock 上会运行着相当丰富的、不同类型的应用。总体来讲 ArcBlock 在设计上更偏向和优先支持非金融性应用,非金融性应用是我们相当长一段时间里比较鼓励的一种类型。
问
ArcBlock 对应用开发者有鼓励机制吗?
答
有的。ArcBlock 本质上是一个开发平台,所以我们非常注重开发者。比如,在这次的 Token Sale 过程中,大家都知道我们的份额非常紧张,但在这种情况下,我们的一个原则就是优先让开发者参与。如果对方是一个投资者,哪怕是个大V,也只能对不起,我们额度极其有限。可要是对方是个开发者,哪怕是一个普通的开发者,我们都会给他优先参与的机会。
在2018年我们的系统可能还不够成熟,可能还不能开放给社区的开发者来参与,但是会选择一些比较亲密的合作伙伴先参与进来。另外,我们计划在2019年举办第一次开发者大会,那将是一个分界线,之后会鼓励和吸引更多的开发者来参与开发。
此外,在我们的 Token 分配方案里,有32%的份额是留给将来的开发者社区的,这是一个相当大的份额。
问
目前 ArcBlock 在国内的推广更偏向技术创新方面, 是出于政策的原因还是更希望吸引国内的开发者参与进来?
答
这次的 Token Sale 出于法律层面的考虑,以致中国公民无法参加。我们在中国的推广并不是为了销售 Token,而是我们看到了中国巨大的应用市场和应用开发者群体。ArcBlock 这个应用是全球性的,我们希望有更多的开发者可以通过我们的平台开发出让世界各地的人都能够使用的应用。
另外,由于 ArcBlock 这种能够通过贡献运算资源、贡献固件或者代码的挖矿机制,使得它可以更加有效的实现合理的分工。举个例子,中国有非常优秀的开发者,他们有很强的底层开发能力,但当他们想做一款针对北美用户、东南亚用户的应用的时候,会在使用习惯、用户体验、语言等方面的劣势。在这种情况下,中国的应用开发者可以专注于后端部件开发,而一些对当地用户的使用习惯有更加深入理解的当地团队,他们可以专注于用户界面和使用体验部分的开发。所以,无论你是做前端、后端、中间件开发还是提供整套系统,因为有了这样一套很合理的配合机制,无论开发者在全球哪一个地方,都有机会发挥自己的专长并实现高效协作。
中国有非常多聪明的头脑,非常广泛的开发者团体,同时也有潜力巨大的应用市场,而我们作为一个有非常强中国背景的创业公司,必然需要十分高度重视中国开发者和用户。
问
非常感谢冒总的细致解答,其实关于本次专访有点偏技术和细节了。您觉得还有什么需要补充的吗?
答
本次采访的问题是偏技术与细节,但是非常好也很专业,这也有助于社区真正的理解我们到底要做什么以及怎么做。我们非常需要真正理解和支持我们的人参与进来,不仅仅是做好一件事情,而且是跟我们一起来去实现理想。
本文经授权转载自公众号:
“币探索”
-作者-
Haiyan
-原文链接-
《币探专访 | ArcBlock 创始人冒志鸿: 定义开放链访问协议标准,创建区块链 3.0 应用平台》