早春三月,虽然加密货币市场仍处于熊市寒冬,区块链行业却不断传出令人振奋的消息:以太坊完成旨在将 Pow 共识机制切换为 PoS 的君士坦丁堡硬分叉,Cosmos 的主网 Cosmos Hub 正式上线,ArcBlock 区块基石 ABT Network 和 Forge 开发框架即将于 3 月底发布,Polkadots 也计划在未来几个月内上线,不约而同为加速区块链技术落地开辟了一条颇具前瞻性的道路:提供开发者友好便利的开发框架,人人都能按需开发自己的区块链;并打破隔阂,让所有区块链能够连通起来,促进价值无缝流通。
和「一条公链搞定一切」的思维分道扬镳
2018 年,众多公链项目沿着以太坊开辟的「世界计算机」方向,聚焦于单条区块链的交易吞吐量和性能的提升进行各种探索设计,一时之间,各种「公链」层出不穷,人人企图为全世界修建一条大而全的公路来解决各种交通运输问题,即使是各种链上分片、链下用侧链 / 子链 / 状态通道等扩容技术的方案,也仍然按照这一思维做文章。结果性能并未得到实质性提升,却诞生越来越多技术架构各异、互不连通的公链,让 Dapps 开发者疲于奔命。
作为专注于 Dapps 开发部署的区块链时代的「云」平台,ArcBlock 的设计初衷是从应用开发角度出发,帮助开发者不仅摆脱访问调用不同区块链的麻烦负担,而且尽可能降低应用被底层公链锁定的风险——去年 7 月上线的 OCAP (Open Chain Access Protocol,开放链访问协议)即为 Dapps 访问比特币、以太坊等底层公链提供了统一易用的中间抽象层,在解决加强区块链互操作性的道路上「吾道不孤」:如何终结越来越多的公链 / 许可链之间呈现的割据局面,在一座座价值孤岛之间搭建起价值互通的桥梁,使链与链之间可以互相传递讯息、发送交易,从而形成整个区块链的价值互联网。
如果说以太坊公链设计好比是全世界只修一条公路,ArcBlock 等提出的是「织链为网」的全新思路:编织区块链的交通网络,让各种车辆各行其道、各行其是,既需要免费的公路,也需要收费的高速和私家车道。最重要的是,交通网络必须有一个综合平台来协调指挥,才能有效利用路网资源发挥最好的综合性能。
除了 ArcBlock 之外,最近发布的 Cosmos,即将发布的号称实现了 ETH 2.0 愿景的 Polkadot,以及在企业联盟链领域耕耘已久的 Hyperledger Farbirc,都是在这个方向上探索前行。 可以说,从 2019 年的动向来看,关于区块链的未来方向,最终可能形成分道扬镳的两大阵营。
从「互联网」到「互联链」的发展趋势
回顾互联网技术发展史,可以发现历史有着惊人的相似之处:早期的计算机网络是一个个独立的局域网,然后逐渐互联成为更大的通信网络。计算机网络并没有孕育出几个超级通信网络服务, 相反,去中心的互联网协议取得了巨大的成功。我们有理由相信,区块链也会朝着类似的趋势发展。
在如何实现跨链互联互通方面, 目前的各家技术解决方案也是八仙过海、各显神通,但基本的设计和目的是类似的。有趣的是,这些不同的跨链技术本身都体现出对其他技术的互联互通性, 理论上它们是互相兼容,可以连接起来的——这与传统的「公链」们各自为政形成鲜明对比。
以 Tendermint 团队为核心团队开发的跨链项目 Cosmos 定义了 IBC (Inter-Blockchain Communication,链间通信)协议,允许使用 Cosmos SDK 开发的相同结构的区块链以及代理链(遵守原链和 IBC 通信标准),以 Zone 的形式与 Hub 这一中间枢纽连接通信,实现链与链的互联互通,最终形成宇宙星云式链网结构。Polkasdot 出现在 Cosmos 之后可能较多受 Cosmos 启发,其设计有类似之处。
Hyperledger Farbric 由于主要定位是企业联盟链的场景,经常被人忽视,但是 Fabric 的设计思路相当超前,当各家公链还在喧嚣之时,Hyperledger Fabric 从其「Fabric」这个名字上就体现了其多链交错设计的特色。不过由于 Fabric 的设计目标是联盟链环境,其多链主要体现在其一个应用中采用 Channel 的方式来切分多条链的设计,在跨链通信方面没有重视。
ArcBlock 的 ABT Network 与前述设计不同,采用的是独创的三维稀疏矩阵的组网思路,所有的链都是平行空间的设计,用 DID (去中心化 ID)和可编程通证(Programmable Token)来巧妙地实现链与链的互联和通信。ABT Network 中链和链之间的通信不需要通过任何中间人的「中继(relay)」或 Hub 进行,更为去中心化,组网更为自由。
多链互联设计的另一个显著优势是不再需要去区分「私链」、「联盟链」和「公链」,不必陷入「许可链(Permissioned Chain)」和「无许可链(Permissionless Chain)」这些无谓的「名词之争」。当各条链可以有效互联,必然有一部分是公共的,有一部分是私有或者联盟的,必然有需要许可的,有无需许可的,恰如今天的互联网一般。
无论上述哪一种技术,其基本思路都和现在的「一条公链搞定一切」的单链设计思路有着截然不同的世界观。无论从技术发展的趋势来看,还是从「去中心化」程度本身来分析,我们有理由相信,这种「互联链」的方向是未来去中心化世界的趋势,也许 2019 年是这一共识形成的分水岭。
个人自主的去中心化 ID 技术是连接 Dapps 的关键
当应用被去中心化的区块链拆分成很多的部分之后,是什么把这些去中心化的应用部件组织成一个完整的应用来呈现给用户? 答案就是去中心化的数字用户 ID。
DID,是万维网联盟(W3C )今年 1 月制定的用户自主身份(Self-Sovereign Identity)的数字 ID 技术标准,业界刚刚开始研究开发其在区块链技术架构和应用中的价值与功能:DID 在技术上支持用户自主身份在互联网中的实现,奠定了更好的保护用户隐私、用户资产安全、保障用户数据主权等一系列重要基础, 也是实现去中心化应用的关键技术。
目前为止把其中心化 ID 设计为关键部件的只有 ArcBlock。 ArcBlock 的 DID 设计是从底层开始贯彻始终。未来会有越来越多的区块链可能会采用侧链或者智能合约的方法来实现 DID,但是 ArcBlock 的 DID 则是从最底层支持的,属于非常彻底支持 DID 的方案。Hyperledger 可能是出于其企业联盟链的场景,继承了传统的企业认证机制,这在企业内部可能是可行的,但限制了其跨越组织的应用场景。
值得一提的是 ArcBlock 的平台把支持 DID 的钱包作为一个重要基础部件,加密钱包将不只是一个数字资产的管理工具, 更是用户去中心化 ID 的管理利器。
组件化设计,让「一键发链」和「万链互联」成为现实
授人以鱼,不如授人以渔。ArcBlock 和 Cosmos 都将一条区块链的开发由下而上分离出三层:网络层(底层数据结构和通信协议设计)、共识层(共识机制设计)和应用层(具体业务逻辑设计),将网络层和共识层设计封装为内核,应用层的通用功能分离成可插拔的模块,组成 SDK 开发工具,让开发者能够一键发链:他们不再需要设计整条区块链,而只需要实现核心的业务功能。
ArcBlock 提供的开发者发链框架是 Forge 框架。如上图所示,其在系统架构位置上和 Cosmos SDK 是一致的,更好的帮助开发者发布根据自己的需求定制的区块链,并与自己的 Dapps 无缝连接:Forge 内核以 RPC (远程过程调用)的方式调用共识引擎、状态引擎和存储引擎,帮助用户定制的区块链实现共识达成、状态同步和分布式存储,而这三个引擎均可插拔(比如目前 Forge 共识引擎调用的是 Tendermint,未来可插拔切换为其他共识算法);FABI (Forge Application Blockchain Interface,Forge 应用区块链接口)连接 Forge 内核与更为丰富的应用层:DID API、区块链 API 和 OCAP API 帮助安全连接其他用 Forge 打造的链以及比特币、以太坊等为 OCAP 支持访问的公链。在这之上支撑 Dapps 还有更多开发者可以直接使用的工具:管理控制台、命令行工具、区块浏览器,而不只是框架。
对开发者而言,ArcBlock 的 Forge 开发框架更为简单实用,属于「开箱即用」的设计。Forge 框架目标是让开发区块链如同用 Ruby On Rails 来开发 Web 般的革命和简单。两者相比,Cosmos 在理论上可以更加灵活,而 ABT Network 和 Forge 框架更加简单易用。ArcBlock 牺牲了一定灵活性来换取简单和高性能,Cosmos 是追求充分的灵活性而牺牲简单性。这种区别属于设计理念的区别,无所谓高下优劣, ArcBlock 的目标就是要构建对开发者极其友好的区块链应用平台,因此追求良好开发者和用户体验是其最高原则。
织链为网的区块链设计,更有可能搭建对开发者友好的应用开发平台和生态,能让区块链更贴近实际应用场景,让去中心化应用在这样的基础土壤中得以万物生长。