2018 中美区块链进化 50 讲:如何通过 ArcBlock 连接底层公链
2018-06-29
前言: 《2018 中美区块链进化 50 讲》是由硅谷密探联合 50 位区块链项目创始人联手打造首套中美区块链进化课程。现在区块链正处于非常早期的阶段,鱼龙混杂,很多用户根本无法识别,2018 硅谷密探将邀请中美 50 位区块链世界的推动者和先行者,分享他们对区块链世界的真知灼见,为像我们这样的区块链的信仰者提供一个学习的机会,并推动区块链技术的运用和落地。
主讲人简介: 冒志鸿,ArcBlock 区块基石创始人兼 CEO,连续创业和技术革新者,连续创建天择软件、北极星软件、优友地带三家公司,是国内最早的 VoIP 通讯系统和社交网络服务创造提供者。此后加入了微软欧洲研发中心和微软美国研究院,从事社会化计算研究。2017 年,在美国创立 ArcBlock,为区块链 3.0 时代的到来奠定坚实的基础。
内容看点:
- ArcBlock 协议层的商业价值
- 如何通过开放链访问协议实现应用跨链而造
- 开发者如何在 ArcBlock 上快速搭建 DAPP
以下为直播分享内容实录:
考虑到不是所有朋友都对我们 ArcBlock 基石项目比较熟悉,先简单的介绍一下 ArcBlock 基石这个项目的愿景,然后再来讲一讲这个我们最近在做什么,以及我们即将要发布的东西是什么?
ArcBlock 基石的目标是设计一个服务性的应用服务的平台,那么这个应用服务平台和这个其他的云计算有什么区别?它是一个专门为区块链应用而优化的平台。
云计算平台有很多种,大部分云计算平台是比较通用的。从云计算平台的发展,也经历了一个相当长的过程,从最初的比如说亚马逊的这个 AWS 为主,他们首先是提供存储服务,然后提供虚拟机的计算服务,比如说像 EC2,逐渐他们提供了一系列各种各样的应用服务,比如说数据库的服务,无服务器的服务等等。
亚马逊取得巨大成功之后,有相当多的公司也都跟进,比如说微软的 Windows Azure 以及国内所知道的阿里云腾讯等等。比较有趣的是这个阿里云的美国的公司,就跟我们在同一栋楼上,而腾讯、华为就在我们边上的一栋楼,我们在美国的办公室周围都是云计算的公司,所以西雅图也被称为是全球的云计算之都。
ArcBlock 的本质是一个云计算的平台。这样一个定位可能跟现在主流的区块链普遍的设计有一点点不同,甚至有点格格不入。因为在区块链这个世界里面听到的声音都是说认为只要是云计算那就是中心化的,那么我们区块链是去中心化的东西,那么只要是允许这种东西,它可能就不是区块链了。
但是我们经过自己思考,认为不是这么样,我们认为在区块链时代,一个未来的真正的区块链能落地的时候,应该是跟云计算更紧密的结合,更有效地结合的这样一个时候。所以我们的 ArcBlock 本质上和普通的云计算平台还有一个更不同的地方,大部分银行平台它有一个特点,它基本上都是一家公司开发与运营,比如亚马逊的 AWS 永远都属于亚马逊,它是自己开发的,那么它的整合、经营、运营的权利全部都是由亚马逊这一家公司拥有的,同样阿里云也是属于阿里巴巴的。在 ArcBlock 的运营思路里面,有一个很大的区别,我们认为一个去中心化的运营,才是一个更加有潜力、有竞争力的一种方式。
我们 ArcBlock 的愿景是开发出 ArcBlock 这样一个软件之后, ArcBlock 服务的提供者除了我们本身以外还有很多伙伴一起来进行。之所以能保持伙伴们在各自运营自己的服务,还能形成有保证的统一的服务质量并且价格合理的这样一个平台,那么这里面最重要的一个机制是什么呢?就是需要通过我们设计有一个 APP 链,那么这个 APP 链在第一阶段,它主要的作用就是作为这个服务平台的 BOSS 系统,可以认为这种就是一个平台的大 BOSS,他管理着整个平台的运营计费和业务支撑。
所以 ArcBlock 在这里面有一个比较创新的地方,就是我们把区块链的去中心化公开,并有一个分布式的账本来公开透明的处理这样的一些机制,把它引入了云计算平台的计费和业务支撑之中,无论有多少方来共同运营 ArcBlock,它背后的便利与系统、业务支撑系统都是统一的,这样才能够使得更多的合作方可以来参与维护运营。
那么这就是 ArcBlock 白皮书中提到的代币经济中矿工的概念,我们把矿工分为两种,一种叫资源矿工,一种叫组件矿工。 那么这两个之间有什么区别?大家都知道要运营一个业务系统,要运行一个软件系统,那么你需要的不仅仅是服务器带宽这个存储,同样也需要软件,我们如果把服务器带宽存储等等这些称为一种资源的话,那么产品的软件也同样的重要,资源跟软件是同等重要的,但并不是所有可以提供出资源的人,都能够写出最好的软件,也不一定是能写出这些好的软件的人,能提供这些资源。
所以我们把矿工分成两类,一类是可以提供资源的人, 也就是它可以提供他的网络带宽服务器一起来参与这个运营。另外一类是成为组建矿工, 他们可以提供一些组件的软件,比如说在我们这个 ArcBlock 里面重要的一个概念称为叫开发链访问协议,那么这个开发链访问协议里面的适配器就可以是一个组件,也就是说任何一个第三方,他觉得 ArcBlock 这个开发链访问协议这种想法不错,我们如果有一个新的区块链技术社区还没有支持,但是却有用户想要能够支持他,我们可以不需要让 ArcBlock 来开发,可以让用户自己来参与开发。用户如果开发的比较理想的话,不仅可以给自己用,还可以把这个协议适配器提供给其他人来用,当然在其他人来用的时候,你就能获得报酬。
这是组建跨矿工的一个例子,这种类型在 ArcBlock 里也认为是一种组件,就是应用级的组件。那么同样的话,这些组件里面还有很底层的,有直接面向用户很高层的,这也有所谓的中间层,也就是说比如说有人他特别擅长于写某个算法,举个例子,如果是要实现一个未来的去中心化的交易所,那么这个去中心化的交易所里面可能有一些撮合的算法,有一些这个量化交易的算法,有一些人他特别擅长于做这些事情,但是呢他们可能并不擅长于开发对用户比较友好的界面,因为开发者他们各自有不同的专长。那么在这种情况下,就可以让一些开发者专注于提供这种算法相关的组件,开发者就可以专注于自己所擅长的这种,比如说是这个用户界面相关的事情。
ArcBlock 这样一个平台是一个非常宏大的愿景,这个愿景最了不起的地方不只是说我们设计出这样一个先进的系统,而是带来了一个先进的理念,这个理念使得无数的第三方可以通过区块链这样一个公开透明的机制来形成一个新的联合体。这个联合体中有钱的出钱,有力的出力,有智慧的出智慧,有用户的出用户,第一次被如此好地团结起来,并且这个价值的分配也在整个这个软件这个开发的发展历史之中,能够有效的把这个价值得到体现。所以从这个角度来讲,ArcBlock 是非常有意义的。
在 ArcBlock 这个设计里面,我们主要分为四大主要的部分,第一个主要的部分就称为叫开放链访问协议。 那么开放链访问协议目标是实现一个开放的中间层,那么这个中间层呢可以你可以通过它去访问任何不同的区块链。也就是说我们开发者通过开放链访问协议可以去访问底层不同的区块链。大家都知道在今天这种万链奔腾的时代,那么想要真正的去做一个开发是很痛苦的。即使像以太坊这样非常友好的一个系统,你跟着它的这个开发者指南去一步步去实现,也需要几个小时,而更糟糕的在今天整个区块链还没有一个统一的架构,这样就使得开发者在初期决定这个项目怎么去开发的时候,光在这个选型上就非常头疼。
大家都知道做一个开发者有的时候没有轮子是很痛苦的,因为你得要去自己重新造轮子,但是有的时候轮子过多是更痛苦,可能你发现这个 A 轮子里面有一半是你需要的,B 轮里面有另外一半是你需要的,这时候往往导致的结果就是很多开发就开发出了 C 轮,最终就导致一堆轮子在那地方,然后每个轮子都不完善,不知道该怎么去做。
现在大部分区块链是从链本身的角度去考虑的,所以每个链出来的 API 也是千差万别的,但如果我们从这个应用的角度去入手的话,我们能总结出一些需求的话,那么我们就有希望开发出这样一个有效的中间层,这个中间层能使得它可能满足百分之八九十这种应用的需求,那么那么剩下的那个可能 10~20% 的应用可能需要调用一些比较高级的 API,他最重要的是解决就是说绝大部分应用的问题。
我们开发链访问协议这个设计相当大程度的受到了数据库的整个发展的这样一个启示,在一个计算机的系统里面,它非常像一个数据库的地位。数据库的地位今天大家已经是有目共睹的,大家用到 99% 的应用都是一个有数据库支撑的应用。但是数据库本身并不在整个系统之中,他虽然是极其重要的,但是它并不能起到这个 99% 的这一个部分。
其实数据库虽然是一个非常中心化的非常核心的这样一个部件,但是一个应用系统往往更多的开发更多的这个价值体现在这个应用。这既体现在数据之外,那么区块链也有一个相当大的这样一个共性,从某种角度来讲,现在大家都说公链非常重要,它的价值是很大,然而就是作为一个完整的应用系统,这个区块链本身在这整个系统之中只是占了很小的一部分,就像今天的数据库一样,数据库是几乎是 99% 应用的核心,但是数据库本身所占到的只是这个系统相当小的一部分。
区块链的今天非常类似于像数据库早年一样,有无数种不同的实践方法,有无数种不同的协议,但是作为我们开发者来说,我们不需要这些,而且对于有一个统一的开放的标准,对整个这个应用的这个生态的形成有非常大的这个价值。我们在这里面试图贡献我们的力量。
明天我们将开始发布我们第一个版本的“开放链访问协议”,简称 OCAP,在我们采用了现在已经有的一个 GraphQL 的这样一个查询语言, GraphQL 是 Facebook 主导推出,并且在几年之前已经开源的一套查询语言,你可以认认为它是一个产品,也可以认为它是一个应用框架,我们通过 GraphQL 我们一下子就团结了 GraphQL 现在整个生态及生态里的各种工具,也就是说大家在我们这个 APP 上面进行这种开发,不需要重新去学这个新的语言,不需要去发明新的轮子,而是说现有的整个 GraphQL 里面的这个大部分工具都可以直接使用。
而从另外一个角度来讲,我们 ArcBlock 也是对 GraphQL 社区的一个重大的贡献,因为在在此之前 GraphQL 主要都是用来做 API 或者说这个数据库的这种查询的这种接口,而当我们开放链访问协议推出来后,GraphQL 开发者可以非常轻松的来访问各种各样不同的区块链,所以从这个角度来讲也是一个比较大的贡献。
OCAP 是我们是我们第一个应用,他是一个让大家去实验和玩的地方,本身并不能作为一个独立的应用去执行,因此就是我们在 OCAP 推出之后,紧接着将会推出一个称为叫 OCAP Playground 的概念,这个 OCAP Playground 其实是是一个比较有趣的想法,也就是当你用这个 OCAP Playground,很多人可能他拿到这个的时候,他仍然会知道不知所措,因为你不知道这里面可以干什么。那么在这种情况之下,可能大家最容易看到的事情就是一些例子的程序。
举个例子,我们可以去查询这个中本聪的第一个这个创始区块里面写的什么写的东西是什么?还有比如说我们国内著名的一个七彩神仙鱼,它它在这个比特币上写了一个这个浪漫的爱的宣言,那个区块里面数据在哪里写的什么东西?比如在前一段时间中国这个北大发生的事情,有人把一个这个学校很不喜欢的一个一封信把它写在一个地方,那么这样去找到类似的这种事情就等等,这些例子都可以都可以很容易的去做到,而且呢就是说并且可以把它分享出来,那么能把这些历程有效的分享,这个东西呢我们把它把它整治把它结合在一起,我们就把它就我们就会推出一个第二个应用,我们称为 OCAP Playbook。
这个 OCAP Playbook 的作用,一方面是使得大家可以把推广的这个应用进行分享,另外一方面呢也可以使得就是大家把如何使用这 OCAP 来开发区块链这样的一个这种思路变的充分的普及。
区块链开发的最大的一个痛点是它的后端的部署成本和开发成本都比较大, 大家今天用这个区块链的时候也是这样一种情况,你需要去弄那么难记的钱包地址,为什么要付这个 gas? gas 调高调低是什么概念大家都不清楚,实际上这些事情用户是不需要知道的,那么这件事情是我们开发者知道,我们开发者应该把这些事情把它做好,做完了之后让最终的用户解放出来。
我们 OCAP 就是把这些很扎实的这种后端的事情把你给搞定了,换句话说就是说你通过这个 OCAP 就实现了非常多的一个后端,那么你只要把主要的精力花在要让后端来干什么?以及让这个前端怎么做的这个事情,我们还会推出 OCAP 的 SDK,IOS 的 SDK 与安卓的 SDK,也就是说有开发 IOS 和安卓经验的开发者,通过 OCAP 就可以非常容易地在原来应用上增加对区块链的支持。
问答环节
Q1:因为公链的不同,所以现在数字货币钱包都只支持一种公链上的 Token,比如说 imToken 他只支持以太坊和这个以太坊 Token,而无法支持 BTC 或者 EOS 那 ArcBlock 这个跨链协议的功能,到时候能不能诞生出一种支持所有 Token 的钱包?
老冒: 是的,如果采用开放链访问协议,那么完全可能出现一种超级钱包的应用,这个钱包的应用可以支持所有的开发公链,开放访问协议支持各种不同的钱包绝对没有问题,我们协议是一个非常好的选择,但这需要用户去开发,我们并没有去开发一个跨链的钱包。
区块链里面的这些钱包,并不是真正的你的钱在这个钱包里面,你用的这个钱包的这个 APP 首先它是个地址的查询器,也就是说你给他一些地址,他能知道这些地址里面有多少余额,然后可以查到这个地址曾经发生过哪些交易。如果要发送这些钱,钱包需要对这个交易进行签名,也就是说这些钱包需要掌握你的私钥,现在我们用的这个 APP 都是在这个设备上进行签名的,相对来讲这个钱包的安全程度不是那么高。
任何一个钱包他有一个接口能够访问这个区块链,能从区块链的查询到某一个地址上面有多少余额,查询到这个地址相关的这一个交易,同时呢他也能产生一个交易,并且把它广播的这个区块链上去,让这个区块链去执行这个转账或者执行这个合约。那么有了这个开放链访问协议之后,那么你可以通过这个开放链访问协议去向不同的链去发出查询,查询他的地址余额,查询它的转账记录,查询他的同时呢你也可以把签好名的这个交易通过开发利用范围协议在这个链上进行发送,从而达到转账的目的。
即使你是一个区块链的新手,你通过这个 OCAP 就可以看到别人写好的一些查询,你可以简单的修改一下参数,就可以把它拿来用在自己的应用之中了。这样的话就是说更大程度的来降低这个降低这个应用的成本。所以前面有朋友问到就是说能不能用 OCAP 坐 ERC20 的钱包那当然是可以了,我相信当 OCAP 否这个逐渐的完善之后,一定会出现这个这样超级钱包一定是在上面会出现了一种一种典型的应用。
Q2:这个 ArcBlock 是自己开发的吗?
老冒: ArcBlock 是我们自己开发的,但不完全是从零开始的,我们是基于 GraphQL 语言开发的,我们可以从 GraphQL 里面采用了很多已经有了好的东西,我们并不是从头开始的,但是我们在这个 GraphQL 上面做了很多这个跟区块链相关的这些东西,所以也相当于是一个我们自己开发的 ID 但是从 GraphQL 的社区的现有的基础上发展出来的,我们将来也会把它开源,所以也就相当于贡献给社区了。
Q3:中心化或许是区块链进程中的噩梦,请问 ArcBlock 在依托云计算中心化的过程,如何防止中心化?
老冒: 什么是去中心化?我觉得对一个系统来说他是中心还是去中心化的,你要从不同的维度去看,基本上我觉得至少可以从三个维度去,第一个维度是这个物理层次的,也就是说它的节点分布,它的系统是不是去中心化。第二个维度是这个治理层面上,也就是说它是有一家公司控制的。那么第三个层次是逻辑层面上,逻辑层面上比较容易理解,就是这一件事情,他这一个组合在一起的东西,它是可以有效的拆成两样不同的东西,每一样东西都可以独立的工作,互相不影响,但组合在一起又可以变成一个完整的服务,这如果是的话,那么他就是逻辑上去中心化,拿阿里云为例,阿里巴巴的这个云服务,它在物理上是去中心化的。
阿里巴巴一定有很多个机房,里面有很多台机器,很多台机器通常为了这个做各种灾备,通常有很多不同的数据中心。它们是不同的机器里面会有可能会采用不同的操作系统,不同的一些软件的部件。所以从某种角度来讲,就是说今天几乎任何一个云计算的服务,它都是高度去中心化的物理上的这个设计。然而阿里云它是属于阿里巴巴的,所以不管怎么样阿里巴巴可以决定它怎样去运营,它是怎样具备怎样的规则,那么同时阿里云也是不可以说随便什么人都敢去加入的,你想去成为一个阿里云的节点没门对吧?这是由阿里巴巴来管理的,所以在治理层面上它是高度中心化,它就属于阿里巴巴的一家。
逻辑上某种角度上是去中心化的,举个例子,比如说阿里云里面可能提供了这个函数式计算,对函数式计算本身是可以作为一个独立的业务来提供的。阿里云里面提供了存储的服务,这个存储的服务和它的计算服务,每一个服务其实都是相对独立的,他其实可以切割成很多幅度可以单独去用的,所以从逻辑上呢是比较去中心化。
作为 ArcBlock 的角度来讲,不要认为把这个区块链平台部署在云之上,做一个云上云,因为是用云计算就就变成是中心化的。我们最重要的一个思路,要能够让很多方跟我们一起来运营这样一个 ArcBlock 服务。那么从这个角度来讲,就是说我们在治理上去中心化的。那么另外一点毫无疑问,作为一个应用的平台,我们在产品可以跑很多种不同的应用,很多不同的应用之间可以通过这个 APP 这样一种方式来形成有效的这种合作和价值组合,所以我们在逻辑上也是高度去中心化的。
所以我觉得从 ArcBlock 这个设计角度来讲,我们是在物理上逻辑上和这个治理上都是去中心化的。
Q4:作为一个没有区块链开发经验的后端开发,如何入手?APP 的开发网站文档在哪里?
老冒: 我们会有 OCAP 及 GraphQL 支持这个文档,会把它提供出来。没有区块链开发经验的后端,我觉得 ArcBlock 恰恰就是为你们而设计的,你们可能只要比较熟悉 GraphQL 或者稍微去学习 GraphQL,这是一个非常容易掌握的这样一个技术。就可以非常容易地去开发这个区块链的应用了,而且更重要的是你开发了这个应用之后,你的部署也非常容易,ArcBlock 在这个角度上还是做了不少考量,我觉得只有让开发者不但容易开发,同时也非常容易部署,让他们在这些后端的这种部署这些角度上就是不需要花太多的这个时间去担心,这样呢才能够更加有效地促进这个应用生态的繁荣。
关于收费的问题,我们在 ABT 这个链正式上线之前,我们的服务都是免费的,测试链中我们虽然不需要收费,但是要使用这个 ArcBlock 所有的服务都必须要有 ABT,也就是说你必须持有 ABT 才能调用这些 API 才能开始在里面做这种开发跟各种各样的开发,但是只需要你持有就行了,不会去消耗的。等我们就是说等到业务完全跑起来之后,有很多服务都会是收费,这也是 ABT 设计的目的。
原文链接: 如何通过 ArcBlock 连接底层公链