【飞鸟社区·区块链价值投资系列课】第 27 期#
嘉宾: 冒志鸿
ArcBlock 创始人,连续创建天择软件、北极星软件、优友地带三家公司,是国内最早的 VoIP 通讯系统和社交网络服务创造提供者。此后加入了微软欧洲研发中心和微软美国研究院,从事社会化计算研究。2017 年,在美国创立 ArcBlock,为区块链 3.0 时代的到来奠定坚实的基础。
时间: 6 月 20 日 20:00~21:30
地点: 飞鸟社区直播群
区块链应用是区块链 3.0 时代的代表,而目前区块链应用存在哪些问题?区块链应用开发者正在面临哪些问题以及该如何解决?ArcBlock 创始人冒志鸿为我们带来精彩的分享。全文包括四部分:
一. 区块链时代的界定
二. 区块链应用目前存在的问题
三. 开发区块链应用的门槛
四. 如何降低区块链开发门槛
以下是分享全文:
大家好!我是 ArcBlock 老冒,非常高兴有机会跟大家分享。今天我们谈的的话题是《区块链 3.0 时代的基础架构》。
区块链时代的界定#
区块链 1.0、2.0、3.0 的定义比较模糊,没有非常明确的界定。最早的界定来自于一本叫做《区块链新经济蓝图》的书,书中认为 区块链 1.0 以比特币为代表, 是一个分布式的账本,账本上所承载的数据都是交易记录;区块链 2.0 以以太坊为代表, 最大的特点是加入了智能合约,它的分布式账本里不仅仅有数据,还可以跑代码;区块链 3.0 更多强调的是应用,这是这本书中最初的划分。而今天关于 区块链 3.0 基本的共识是应用。
简单介绍一下 ArcBlock。ArcBlock 不只是一个区块链项目,也是一个云服务平台,专门为开发和部署区块链应用而设计研发。和传统的云计算平台不同,ArcBlock 提供了一系列独特的服务,让开发者访问区块链、开发区块链应用更容易。
区块链应用目前存在的问题#
区块链 3.0 核心围绕应用,最主要的目的是让用户能更方便使用。
接触过区块链和数字货币的人都能体会到现在的区块链应用很不友好,即使是最方便的钱包,比如 imToken,美国的 Coinbase 已经在如何让用户使用更容易上考虑很多,但它的使用体验与银行系统、支付宝或微信支付相比,却要难用很多。
一些基于以太坊优化的 DApp 提供的服务让人非常失望,这些 DApp 就像网页,打开速度很慢,跟今天微信小程序以及移动 APP 的体验是天上和地下的区别,可以说这些 DApp 仍处于非常原始的状态,更不用谈它的性能。
现在的区块链无论是以太坊还是比特币,性能是所有人心中的痛。经常用的朋友都有这种体会,用钱包打币遇上以太坊堵塞或者其它莫名其妙的错误,你打了半天仍然不确定交易是否成功......从某种角度讲,如果不是数字货币可以变成钱,这样的应用请你用你可能也不一定用。
虽然各种各样的问题一大堆,但并不意味着今天存在的问题将来还会存在。实际上,区块链在应用性、性能、开发者不友好等每一个问题都代表着巨大机会,只要能改善这些问题,哪怕只是一点点,都可能带来一个全新的市场和一个全新的机会。
开发区块链应用的门槛#
作为一个开发过区块链应用的开发者,我们会意识到光是初始开发已经相当不容易。
以以太坊为例,目前以太坊有区块链领域最齐全的技术,无论是开发环境还是 SDK,以及它的文档也写得非常好,容易上手,但要想真正把一个基于以太坊的区块链应用开发出来:首先需要安装一个本地节点,同步节点数据就要花很长时间;然后它有若干个不同的 SDK,你要选择其中一种 SDK 做开发,但每一个 SDK 都需要进行基本的学习。也就是说,想在以太坊上开发一个应用是有进入门槛的,第一步就要折腾很久,需要克服不少问题才能写出第一行代码。
如果想在比特币这样早期的区块链上做开发,需要找一个第三方的 SDK 或者 Library(库),因为比特币就不是为开发者设计的,光是建立开发环境就要大费周章。
更糟糕的是,一开始选型是非常头疼的。如果你没想清在哪一条链上做应用,这意味着你一旦选错轮子,接下来会走很多弯路,在前面轮子上投入了很多成本,切换又要很多新的学习成本。
所以区块链目前存在的问题跟早年的数据库一样,群雄割据,不同的区块链有不同的基础架构、不同的协议、不同的 SDK、不同的开发环境,这就使得开发区块链应用有一个很高的进入门槛。
如何降低区块链开发门槛#
为了解决区块链对开发者不友好的问题,ArcBlock 设计之初首先解决的就是技术问题。 开发者如何访问区块链?如何读取区块链数据来编程序?如何查询数据?如何发送交易?如何把区块链合理的作为应用的一部分?哪些计算应该在链上、哪些应该在链下?我们把这些问题简化后,开发者可以把更多精力花在做应用上,而不是花在怎么装节点、选择 SDK,如何学习区块链开发之上。
在这个设计思想指导下,ArcBlock 有一个非常重要的部件,叫“开放链访问协议(Open Chain Access Protocol)”,简称为 OCAP。目的就是设计出一个抽象的中间层,开发者可以通过这个中间层有效的访问和操作不同的区块链系统,我们同时设计出不同区块链的适配器来实现这个功能。这个月剩下的十天之内,ArcBlock 将会按照计划发布第一个应用,这是一个基于“开放链访问协议”的应用,我们把它称为 OCAP Playground。
顾名思义,Playground 可以翻译成“游乐场”或者“操场”,这是一个针对开发者的应用,开发者可以通过这样的 Playground 随时和底层区块链打交道,查询数据,发送交易,而且非常轻松、容易。如果开发者想在以太坊、比特币或者其它区块链上做一些基础操作,比如查询某一个地址有哪些交易,不需要安装节点、SDK,只需打开 Playground 输入 OCAP 所支持的查询语句,就可以立刻获得数据。类似的,通过 OCAP 发出一些交易的指定,也可以把这些交易通过 OCAP Playground 广播到区块链上去。
为了让查询语言变得简单和标准,我们最终选择了 GraphQL 作为 OCAP 的查询语言,GraphQL 是 Facebook 发明并且贡献到开源社区的一个查询语言,它对前端工程师非常友好,除了得到 Facebook 支持,也得到了不少大公司的支持,但离主流还有一些距离。
简单的总结 OCAP 所干的事就是提供了一个非常简单、规范而且标准化的开发接口,让更多前端的工程师可以参与到区块链的开发之中来,大幅度降低区块链应用开发的门槛,使越来越多聪明才智的开发者可以一起来把区块链应有在各种有趣的应用之上。这对区块链应用的繁荣是一个非常重要的贡献。
再过几天,大家都可以在 ArcBlock 上看到和实验 OCAP Playground,这是一个看起来非常简单的界面,但背后隐藏着相当多的复杂性。首先我们开发了比特币和以太坊的适配器,有不少懂技术朋友,曾经在跟我们私下讨论过这个问题,认为适配器就是把比特币以及以太坊的 API 重新包裹一下,看起来很简单。实际上要想做出一个好的“开放链访问协议”,把适配器做好,今天的区块链技术的底层数据储存是一个巨大的挑战。
底层的数据储存大部分都不是为查询而优化的,比如以太坊提供的 SDK,虽然每人都可以获得区块链完整的数据,但要做一些简单的查询相当困难。OCAP 为了适配比特币和以太坊,除了帮开发者运行比特币和以太坊节点,还做了一个区块链数据的搜索引擎,可以飞快的查找各种数据,这个数据需要不断地跟区块链同步和 index(索引),通过 index 出来的数据,可以随时进行校验保证数据真实性。
顾名思义,适配器的目的就是让老一代的区块链适配新一代的开发协议。随着区块链技术的发展,未来区块链将提供更强大的功能,可能是更强大的 API 支持,甚至可能有更好的数据存储的结构,使得 OCAP 的适配器越来越容易开发,以及让更多开发者意识到 GraphQL 也是一个非常适合于开发区块链应用的查询语言,可能会出现更多的区块链项目。
ArcBlock 究竟是什么?#
花这么多时间讲 OCAP,一方面 OCAP 是第一个提供区块链开发服务的应用,另一方面是因为 OCAP 具有非常重要的意义。不少人都会问 OCAP 是不是一个跨链访问的协议?一个工具?大家都很关心。
ArcBlock 的“开放链访问协议”,首先并不是传统意义的跨链协议。开发者可以通过 OCAP 的一个相同的接口访问背后支持的所有区块链项目。举个例子,比如一个通过 ArcBlock 开发的链,可以同时跟多个链打交道,但是它并不是一个区块链协议,并不试图让资产在不同链间转移或保证不同链之间资产的一致性,这一点和现在常见的区块链很不同。
从应用场景场景来说,OCAP 的目标是把开发者从多种区块链协议,不同区块链技术这些细节之中解放出来,并不是让跨链变得更容易,而是为了解放开发者;另外一方面是从应用适用角度出发,一个应用跨越多个链时,大多数情况在应用层面都可以解决,只有很少数的一种情况需要用到现在的跨链机制。
分布式数据库:#
计算机技术日新月异,每过一段时间都有新的概念出现。当我们看一个新概念比较困惑,看不清它的未来时,可以去类比过去有没有相似的技术?它们过去曾经发生过什么?历史是惊人相似的。我建议把区块链类比数据库,从某种角度来讲两者有非常多共性,区块链的核心是一个分布式的账本,这个分布式账本和分布式数据库有非常多的联系。
大家谈区块链就会谈到共识机制,共识算法,比如 PoW、PoS、DPoS、PBFT。分布式数据库也有共识算法,最重要的共识机制是分布式数据库里不同的数据分散在不同的节点上时要形成一个共识,这个共识就是数据一致。在区块链里面,从某种角度来讲区块链和数据库的储存机制是非常类似的,底层也非常相似。
数据库的日志是数据库非常重要的东西,跟区块链的账本非常相似。区块链的智能合约容易让人联想到数据库的发展过程,这个储存过程曾经引起了非常大的关注,直到现在储存过程仍然是数据库里一个非常重要的性能。
今天储存过程作为数据库里的一个基础的服务,它的重要性也没那么大了。今天开发一个数据库应用,基于 java 或者基于微软的应用服务器,往往是一个完整的基于数据库应用的非常重要的部分。在这样一个重要的应用系统之中,数据库非常重要,它处于中心位置,虽然它很重要,但是大部分的投资和开发其实都花在应用服务器上。再比如区块链分片技术主要是解决区块链性能问题,分片就是从数据库基础里面发展过来的,也是在数据库发展到一定程度,出现的大量的技术之一。
所以当我们去看过去的历史,如果能找到一些比较好的类比对象,就可以用这些历史来分析和思考区块链未来的发展。
今天非常感谢有这样一个机会,恰好在我们这个产品即将发布的时候,让我有时间深入的给大家介绍我们是如何看待区块链 3.0 的走向以及如何用自己的解决方案帮助更多的开发者和我们一起迈向区块链 3.0 时代。今天的区块链就像未开发的西部,大家都在忙着跑马圈地,究竟你走的路正不正确?你代表的方向是不是未来的趋势?谁也是说不清,但是你可以充分发挥自己的创造力,去做自己想做的事情。
区块链 3.0 时代“得应用者得天下”,也就是“得开发者得天下”,只有越来越多应用开发者形成共识,才能创造一个更好的区块链 3.0 的明天。我相信区块链技术本身有成长空间,加密货币、交易所等都有继续成长的空间。但更大、更广阔的机会来自于区块链的应用,我们愿意和大家一起共同找到区块链 3.0 未来最佳的时间路径。
飞鸟回答#
Q1:怎样才能进入区块链 3.0 时代(区块链应用大规模可用,需要哪些条件)
- 对开发者友好
- 对用户友好/不可见
- 性能满足要求
- ……
冒志鸿:毫无疑问,对开发者友好是非常关键的,只有把开发者解放了,将开发者的能量发挥起来,贡献各种各样的智慧和想法,这个生态才能繁荣,才能百花齐放。 如果大家都在做新链,开发者没有被解放,大家仍然是在很一些琐碎的事情,做到应用的繁荣就很难。
开发者的问题解决了,对用户友好的问题自然也就解决了。 用户友好一方面是讲用户体验,另外一方面是讲应用能不能解决用户的实际问题。在解决用户实际问题时,区块链有没有起到创新性、革命性、决定性的作用,这不是区块链设计者关心的问题,而是应用开发者关心的问题。所以只有让应用开发者有精力专心致志的思考应用问题,才能解决对用户友好的问题。
性能也非常重要,任何一个服务,没有好的性能,没有足够快的速度,更不用谈用户体验。我对区块链性能是非常乐观的,最早出现的计算机,体积像一间房子那么大但性能还比不上一个 iPhone,可能连 MP3 里面的一个芯片都比不上。今天的区块链处于早期,性能有问题很正常,这些问题都会解决。
要真正进入区块链 3.0 时代,就要有统一的标准。 区块链的最大的问题是区块链体系架构还没有统一,从上层表现出来就有很多问题,比如区块链的开发语言以及 SDK 非常混乱。以太坊开发了 Solidity 语言是因为在区块链上实现虚拟机必须保证只要输入相同的语句,无论什么情况都应该得出相同的结果。而 hyperledge 的思路就跟以太坊完全不一样,设计思想差别相当大。
还有一个问题来自于应用开发者,究竟怎样才是一个区块链应用?如何开发一个区块链应用?整个行业并没有达成共识,没有最佳的实践。很多应用都要做链,做个打车应用就要做打车链,做个房产应用就要做房产链。还有一些其它思路,比如以太坊要做一个全世界的计算机,计算机的事情都在可以在以太坊搞定,以太坊供应链上可以承载各种各样的应用。
对于这种不同的思路和想法,从好的角度来讲,可以说是百花齐放;从坏的角度来讲,今天还没有形成一个最佳的实践,业界没有共识。
这就好比在互联网早期,写一个 Web 服务器或者应用,有人用 C 和 C++,有人用 Java,有人发明 PHP 的新语言,以 PHP 的脚本去写。在互联网时代想开发一个 Web 应用,一度也是百花齐放,没有最佳实践,但在今天再去开发一个 Web 应用,这个轮子就没有那么多了。区块链 3.0 还处于一个早期,越来越多人意识到要让区块链繁荣,就需要在它里面开发出各种各样的应用,这个显然还属于非常早期的阶段,不同的开发者都有不同的想法。
ArcBlock 作为业内的先行者,开发出像 OCAP 这样开放标准应用,不用重新发明轮子就能把 GraphQL 社区结合进来统一区块链开发的中间层是非常有意义的。如果这个方向正确,它可能对整个区块链的发展,尤其是对区块链应用发展都会产生深远的影响。
对比数据库跟区块链,只要看看当年数据库发展的过程,它曾经走过了哪些弯路,最终是发生了什么事,再拿它过来思考区块链的发展,是非常有启发和有意义的。当年的数据库也是百花齐放,每种不同的数据库都有自己的 SDK、API,都有不同的函数库,但是最终查询语言都被 SQL 统一了,数据库的连接也被一个连接中间件给统一了,最早就是 ODBC,后来 Java 更是把 ODBC 的思路采纳进去,变成了 JDBC。
今天开发数据库应用,几乎没有人会考虑用哪一个原生的 API 或者原生的库去访问数据库了,通常都会采用一个连接的中间件,比如 JDBC 或者 ODBC。进行数据查询、数据操作都会采用 SQL 语言。OCAP 非常接近 ODBC 和 JDBC 在数据库界的地位,而我们采用的 GraphQL,它就非常像 SQL 在数据库查询之中所处于的地位。
ArcBlock 在技术白皮书里不止提出了“开放链访问协议”,还提出了“基石程序(Blocklet)”以及去中心化订阅网关(Decentralized Pub/Sub Gateway)等部件,这些部件后续都会一一开发出来,这一系列步骤可以大幅度降低开发难度,并且提升用户的使用体验。这些事情还需要时间,软件开发是一个非常漫长的过程,有些东西讲起来很容易,但要实现它有非常多的路要走,有非常多的坑要去踩的,所以希望大家能对我们有更多的耐心。
Q2: 亚马逊的 AWS 上也提供区块链服务,它们的服务和 ArcBlock 有什么本质区别?
冒志鸿:最早提供 Blockchain 服务并不是 AWS,而是微软的 Windows Azure 和 IBM 的 Bluemix。无论 Windows Azure、Bluemix 还是亚马逊提出的 Blockchain service,他们主要目的都是帮你快速的部署区块链的节点。以 AWS 为例的话,它提供的工具可以让开发者更快的部署一个以太的节点,这对开发者来说是非常基础的事情。
ArcBlock 所作的事情比部署一个节点要多很多。除了帮助开发者部署好节点,ArcBlock 还能让你通过统一的方法去开发区块链。如果在 AWS 上部署了一个以太坊的节点,还是得拿以太坊自己的 RPC 跟它进行通信,如果部署比特币的话,还是得自己想办法做比特币的工作。固然是帮开发者节省了一些事情,但是距离帮他更容易的做开发还很遥远。IBM Bluemix 基本上是独家的,为自己的 Hyperledger(超级账本)做了不少部署工作。Windows Azure 也是差不多这样的一个设计。
Q2 追问:想请问下数据存储方面是连接微软,阿里云之类,不自己做云服务器么?
ArcBlock 本身是个云服务,但是 ArcBlock 的思路一个叫云上云的概念,它部署区块链服务的思路跟以太坊、比特币非常不同。
今天的以太坊、比特币以及其他一系列区块链的设计基本上都是 P2P 的发展思路,它的每个节点都是一台服务器。ArcBlock 首次提出了云节点的概念,这个节点有可能不是一台物理机器,而是由多台云服务的节点组成的。从这个角度上,我们认为云计算已经逐渐成为一种基础服务,尤其在区块链时代,区块链应用成了一个非常高层的,不像 TCP/IP 的协议,它是一个底层的通信协议。而区块链的协议,即使比特币底层的协议也是相当高的应用存在协议。随着云服务变成一种普遍并且逐渐标准化的服务,完全有可能在云服务之上建立一个新的层次,这个层次它建立在云服务之上,但却是跨云存在的。
在计算机科学里有一句经典的话,它既是一个经典的玩笑,也是一个经典的事实,就是说在计算机科学里面,任何问题都可以通过增加一个新的抽象层来解决。随着云服务的普遍,可以预见不久的将来,在云服务上增加新的 level 是非常现实可行的。
ArcBlock 采用的就是这个思路,今天的云服务其实是在过去些基础上面增加了一个新的 level,因为云服务下面都有一堆虚拟机跑在多个数据中心上,把这些物理数据资源变成云之间的服务,今天的计算机装在一个盒子里,倒退到多年前,计算机是由很多个盒子构成的,而再往前倒退,是一屋子的硬件,一堆的东西连在一起的,这是计算机发展的必然趋势。ArcBlock 走上云节点时,在外面展示的不是一个物理设备,而是跨进了云服务之上的一个逻辑上的节点,这个设计是非常不一样的,我们在白皮书中专门指出了这个设计区别。
Q3: ArcBlock 本身的 Token 经济系统是怎么设计的?如何用它形成良好的生态体系。
冒志鸿:ArcBlock Token 的设计和比特币以及以太坊都不一样,比特币区块链技术是一个非常专用的区块链,这个链上只跑着比特币这一个应用。在比特币这个区块链上,作为奖励的 token 就叫做比特币,所以比特币其实是一个功能专注、单一化的一个区块链的技术和应用。
以太坊往前迈进了很大一步,以太坊出现之前很多人想扩散比特币里面的空白数据来做一些应用。比如彩色币技术,首席科学家 Flavien Charlon 是染色币时代非常重要的一个创新者。但是彩色币技术是基于比特币本身扩展,比特币核心开发组并不喜欢彩色币扩散的方法的思路,在技术上对他们进行了限制,他们没有获得非常好的发展。这时以太坊应运而生,它的设计定位叫“世界的计算机”。以太坊的的愿景是做“世界的计算机”,这个愿景非常伟大、非常了不起,但要想实现非常困难。今天以太坊最大的应用是 ICO,也就是在以太坊发各种各样的 token,比如著名的 ERC20 token,现在无数的 ICO 的项目都是依赖于以太坊能够支持 ERC20 这种方式来发 token。但是在以太坊上发 ERC20 token 只是以太坊里面一个非常小的应用,因为以太坊目标是要做一个图灵完备的计算环境,提供一个通用的计算机。
从这个角度来讲,以太坊如果能实现这个愿景是非常了不起的,然而要想实现非常困难。到今天,大家遇到了一系列问题,比如性能低下,比如说前一段时间爆出的各种各样的智能合约的漏洞问题。这些都导致以太坊距离实现这个宏大愿景越来越远。
在以太坊的 ERC20 token 机制里,ERC20 是一个简单的 token。首先 ERC20 创建的 token 和以太坊上面的以太币完全是不同层级的,它相当于是“二等公民”。而 ArcBlock 有一套自己的 ABT 链,它的设计的思路和比特币、以太坊彻底不同,我们准备自己走一条不同的方向,并将这个定位定义成“可编程的 token”,一切的核心技术都是一个可编程的 token。所以我们不是要做一个图灵完备的通用的计算环境。
ABT 链支持的是特定领域语言,目的是能实现一个高性能的 token 并在 token 上做可编程的计算。ABT 上面的 token 和 ABT 本身一样,都是“一等公民”,也就是说在 ABT 链上所产生的 token,无论是我们自己原生的 ABT,还是应用开发者发行的 token,它的性质和地位是同等的。
另外 ABT 所提供的不止是像 ERC20 提供一个 token 的接口,这个接口就好比在编程序时定义了一个变量一样,只是定义了一个变量,这个变量如何操作?能带来什么样的应用?这一切什么都是没有的,都是空白的,还需要做一系列的工作去实现。ABT 围绕着这个 token 机制,提供了 token service,把一个 token 经济体系之中,帮助用户实现一些最基本的,最常用的功能。要想形成 token 经济最基础的部分,比如说 token 的转移、token 的性质本身、token 上面的一些合约以及 token 的服务,比如 token 的储存转账等一系列的工作,都有基础的服务帮开发者做好,不像 ERC20 只是定义了一个抽象的接口,而没有任何实现。
另外,ArcBlock 计划年底主链上线,如果一切顺利的话才会上线。吸取一些 EOS 主网上线没多少小时就全面崩溃的教训,任何一个新的区块链,即使有自己的原生 token,还是需要多花时间好好测试。ArcBlock 主链上线的时间直接取决于测试的表现。
Q4: BaaS 能否理解成是一个区块链开发者、创业者的孵化器?
冒志鸿:Blockchain as a Service 能让区块链开发者和创业者更容易,孵化一个完整的应用需要考虑很多方面。Blockchain as a Service 只是让开发和部署更加简单和高效,比如微软对于亚马逊。Blockchain as a Service 对于 ArcBlock 相当于是为开发者提供一个完整的开发和部署应用的环境,对区块链的开发者和创意者有更好的支持作用。但是孵化一个项目,包括从想法的验证到孵化,需要做的早期投资,或者帮开发者找资金和客户,是一系列的工作。
ArcBlock 的目标是帮助开发者更好的建立起开发者的社区和生态,所以除了提供技术支持,我们还计划为开发者提供一系列服务,更好的扶持开发者。从一个 idea 的亮相到孵化,提供资金和各方面的支持直到产品变成应用。
Q5: 区块链 3.0 时代基础设施除了公链,跨链,应用服务平台,还有什么?
冒志鸿:在区块链 3.0 时代做好一个应用,除了公链、跨链服务、应用服务平台,还需要很多部件。比如分布式储存,直到今天它还有相当大的市场,以 Filecoin 为代表。
从应用角度来讲,除了链、应用平台、储存,还有很多其它的需要,这都是开发者的机会。通过区块链能让全世界的开发者联合起来建立起一个互相协作、利益共享、利益分配的机制,这个机制建立在区块链基础之上能让有技术的出技术、有资源的出资源、有底层能力的人出底层能力、有应用想法的人专门去做应用、有做共享部件的人做共享部件,可以形成软件开发的全新局面。
除了分布式储存,如何解决去中心化的 ID、去中心化的用户资料以及用户身份和数据可携带性等问题,都是目前没有解决但是在未来可能会需要用到的服务,对开发者来说,有非常多的机会。
从另外一个角度来讲,当区块链的技术服务变成主流之后,现有企业软件都可能为适配区块链、数字货币以及其他新业务而发生变化。很多年前计算机行业遇到的“千年虫”问题就为软件开发、软件咨询企业提供了巨大的机会。拿“千年虫”问题对比区块链、数字货币会为整个软件行业带来多么庞大的新机会。
Q6: 不同基础设施如何与公链做交互?
冒志鸿:举个例子,比如一种分布式储存的基础应用,它本身跟区块链没有必然联系,但是分布式储存里储存的某些内容和公链之间有关系。比如将来出现可以对学历、数字证书进行管理的比较典型的服务的应用,在区块链上储存大量数据是不合适的,假设学历这块需要保存比较多的数据,证书部分数据就需要分布式储存,并设置一些校验码或者数字签名保存在链上。这也是现在比较典型的、常见的做知识产权、内容溯源的一种方法,即链上保存签名,链下保存数据。很多链下数据的保存都仍然是采用中心化的设计做的,如果有一个更好的分布式储存能把这些数据保存在分布式储存系统之上,而用区块链对这个签名进行校验,这是典型的链跟链下的技术服务之间的交互。
Q7: OCAP 本身是中心化的架构吗,比特币其实是没有数据库的,本质是 UTXO,OCAP 是中心化的查询索引吗?
冒志鸿:OCAP 可以被多个节点部署,也就是说 OCAP 可以被多方共同运行,可以由他人来运行。从某种角度来讲,OCAP 是一个去中心化,可以分布的设计。比特币本身没有数据库,它的底层基于 Key Value 数据库。
比特币查询是基于 UTXO 的,每次查询都需要重新计算。当数据量变大,查询性能降低,直接从比特币的底层数据结构做比较特殊的查询非常耗几乎不可能实现。所以 OCAP 实际上是对比特币所有的数据重新 index,目的是让查询更容易。今天大家所用到的比特币、以太坊的各种区块浏览器,Etherscan 区块浏览器,它们都需要在现有的区块链基础上对数据进行重新 index,才能满足查询的要求。
原文链接: https://mp.weixin.qq.com/s?__biz=MzU5ODY0ODgwNA==&mid=2247486234&idx=1&sn=d1b1a39964f10304c18e309b4af349ae&source=41#wechat_redirect