编者按:本文来自36氪战略合作区块链媒体“Odaily星球日报”(公众号ID:o-daily,APP下载),作者卢晓明。
会不会目前大部分人努力的区块链方向,都是错的?
比如跨链、比如所有人都在谈的区块链3.0。
Odaily星球日报最近跟ArcBlock创始人兼CEO冒志鸿讨论了一下相关的问题。上述两个问题基于圈内对区块链领域所面临的痛点的判断——链与链之间无法互联互通,公链性能无法满足大规模商业应用。如果从根本上否认这两个痛点——都是伪需求,那是不是目前的无数项目显得毫无意义?
在开始聊这个话题之前,先来更新一下ArcBlock的最新进展。这个将会涉及到我们讨论的前两个话题:对标数据库,区块链是不是需要通用查询工具?是不是需要interledger级别的跨链?
Odaily星球日报在今年1月时对ArcBlock做了报道,ArcBlock最主要的目标是降低区块链应用的开发门槛,加速区块链应用的落地。ArcBlock类似PaaS平台,搭建一个去中心化的区块链应用的开发框架,6月30日,ArcBlock区块基石平台上线了它的第一个应用:开放链访问协议实验台(OCAP Playground)。
ArcBlock介绍,这是一个直接面向开发者、构建于开放链访问协议(Open Chain Access Protocol,简称OCAP)之上的开发工具,构建了一个区块链应用开发环境,开发者无需任何下载安装,只要有浏览器就能开始区块链的测试和应用开发。目前公测版OCAP支持比特币、以太坊等底层区块链。
这个工具对于开发者的作用,就是可以在只懂一种语言的情况下,就能把自己的应用部署在不同的链上。这就降低了开发者的学习门槛,不需要因为语言而绑定公链。OCAP采用的Facebook主导和开源的GraphQL语言,冒志鸿认为这也有利于吸引原来GraphQ的开发者群体支持OCAP。
开发者友好不仅需要体现在语言。
冒志鸿还举例了节点部署成本。“以太坊的全节点是用来挖矿,开发者跑应用依然要自己部署一个节点。就像你自己用电一样,电网到处都有电,你也需要有一个配电箱。以太坊基金会也意识到这个问题,因此孵化了一个名为Future的云节点服务,部署好之后卖给开发者,开发者依然需要对云节点付费。OCAP也帮开发者部署全节点。”
“现在大家都意识到一个事情:就是得开发者得天下。区块链很像数据库,本身非常很底层,必须要有开发者支持。”
另一方面,对于某些行业型或者应用类公链而言,如果他们支持了OCAP,可以快速接入社区和开发者,不用重新发明工具。
先看一下以太坊的发展,光有公链和智能合约是不足以让开发者开发应用的,还需要有很多工具,因此以太坊基金会本身也孵化了不少项目去帮助开发者访问链和开发应用。冒志鸿表示,作为一条通用型公链,以太坊也许可以这么做,但对CyberMiles(电商公链)和Eloncity(微电网电力结算)这类应用链来说,并不希望把精力放在这里,他们就可以选择做一个链适配器适配OCAP协议。
冒志鸿认为,类似通用工具未来会是公链的标配。他再次类比数据库,查询SQL数据库,需要有查询工具,“之前所有的厂商都有自己的查询工具,现在是通用,因为所有的数据库都用SQL语言,都用ODBC和JDBC Driver”。
ODBC(Open Database Connectivity,开放数据库互连)是微软开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。JDBC(Java DataBase Connectivity standard)与ODBC类似,也是一个面向对象的应用程序接口(API), 通过它所有Java程序可访问各类关系数据库,是java核心类库的一部分。
OCAP是从ODBC获得的灵感。“今天数据库的厂商都会把自身的ODBC和JDBC驱动开发好,否则没有人来用你的数据库。”冒志鸿认为公链世界也会出现类似的地位的工具,ArcBlock希望未来社区或者公链的开发者自己去开发链适配器。
ArcBlock做的事情某种程度上跟跨链相关,因为其开发平台希望支持开发者将自身的应用部署在不同的区块链上,这就涉及到不同链上资产的交互。然而,今天的跨链机制依然非常不成熟。大部分提到资产“跨链”的团队,实际上做的都是“区块链版Visa和MasterCard”的事,做了一个中间商去兑换两个币种之间的汇率——不就是今天币币交易所钱包。
当Odaily星球日报直接问冒志鸿ArcBlock的跨链如何实现链上数据的保真时,冒志鸿也非常直接地表示要实现这个技术实际上非常难。现在的跨链,包括他们自身,都是没有实现链上数据的保真,本质上都像交易所一样,根据汇率,在两条链上开账户,一增一减。他称这为应用级跨链,每个链并不不知道自己在“跨链”。
另外一种“链自己是知道”的思路,他称为interledger思路,试图将两条链之间的资产双向锚定起来。比如公有链项目Cosmos;闪电网络在他看起来不算跨链(有主侧链之分)。他解释,极度简化的链,就是一个应用。“目的是要做到双向锚定,从A上面发出了交易,是从Transaction的角度,在B链上到账,一旦出现问题,就会回滚,这个安全性更好。”
如果拿着这种技术跟上面的“区块链版跨境汇款”相比,这时候做链间价值转移,就可以直接对接。“如果有一边出现问题,比如分叉了,应用级跨链中,另一边是不知道的;interledger情境中,则是相互知道的。”
因此,他认为两者确实有“很大区别”。可是,他认为这个方案很可能“得不偿失”:
一方面interledger的难度非常高,“interledger就是建起桥梁,两条链的东西还得是一致的,但是两条链确实是不一样的”;一方面实际应用需求很少,“99%都只需要应用级的跨链,只有很少需要interledger级别的跨链,比特币和以太坊为了安全性,可能要这种”。
这个判断,同样是他以“数据库历史”为鉴得出。他介绍,在80、90年代,曾经有一个概念叫联邦分布数据库,愿景是:两家企业用的数据库供应商不同,该技术希望数据库的角度让交易保证数据交易的原子性,难度极其高,但是后来证明在现实中根本不需要。“既然可以通过应用层保证一致性,为什么一定要在底层做呢?因此我们其实在整体设计上比较实用主义。”
如果要预测谁先做成这种级别的跨链技术,他认为第一个能落地可能是Cosmo。
聊完跨链,我问及公链领域的变化、还有以太坊和EOS的智能合约漏洞问题。这个背景是智能合约漏洞频现,为了规避这些问题,某些公链甚至选择将智能合约做成图灵不完备,以此保证公链的安全性。
作为一个致力整合公链开发框架的创业者,冒志鸿的看法简直是要否定以太坊大方向的节奏。
他认为,这半年以来市场没有发生很大的变化,大部分公链都是想做一个更好的以太坊。“凡是想在新公链上做一个虚拟机,都是以太坊的追随者。我有一个大胆的判断:很有可能以太坊都把大家带歪了。以太坊想做全世界的通用计算机,社会需要区块链,但是不一定需要计算机。”
以太坊的智能合约多次出现漏洞,业界普遍认为与智能合约太过灵活有关,即以太坊想把智能合约做成图灵完备。冒志鸿总结,以太坊智能合约漏洞,一是因为太过灵活了;二是由于虚拟机和语言是新做的,不太成熟。“前段时间发出溢出的问题(美图币的问题,都是整数溢出导致的),本来应该在语言层面就解决 。”
“这些都是因为以太坊想做通用计算,愿景太大。”
至于EOS,在冒志鸿看来“走得更歪”:目标方向是更好的以太坊,实际上只是把以太坊做得更中心化,在虚拟机语言的选择上似乎也有问题。
“以太坊之所以选择写一套新语言Solidity,就是为了能实现智能合约代码的一致性。为什么不能用现有的语言,而要用一个VM来实现?这就要看第三方能不能审计。”他认为,EOS所选择的虚拟机语言WebAssembly(WASM) ,本质上底层是JavaScript,能不能做一致性是一个巨大的问题。
Diss毕两家“现象级别”的通用型公链,他的想法是,公链应该承载更多价值传递的事情。“公链可能应该把更多的东西专注在Token上,未来我们想做可编程Token。”
他将此称为公链除了比特币和以太坊之外的第三种方向,这条链所有的东西都是围绕tokenise来实现,专门为token服务,不是图灵完备。
ERC20没有得到足够关注,以太坊只是在这个语言中实现interface,其实作为一个Token,它简陋得不可思议。“只能用token来表征,比如token的智能合约,现在都是当某条件发生的时候,token会从某地址转到某地址,会如何被分掉。”
“现在是一张白纸,token只定义了interface,只是一个接口,我认为它应该要做服务。”
他希望构建一个非常完善的token公开账户体系。“这就是回归到本质,就像一个数据库服务器,有人也提供web接口,但是数据库就应该把查询搜索等做好。区块链应该做回它应该做的事,不应该做通用计算。”
我是Odaily星球日报编辑卢晓明,探索真实区块链,爆料、交流请加微信lohiuming,烦请备注姓名、单位、职务和事由。