早春三月,虽然加密货币市场仍处于熊市寒冬,区块链行业却不断传出使人振奋的消息:以太坊完成旨在将 Pow 共识机制切换为 PoS 的君士坦丁堡硬分叉,Cosmos 的主网 Cosmos Hub 正式上线,ArcBlock 区块基石 ABT Network 和 Forge 开发框架即将于 3 月底发布,Polkadot 也计划在将来几个月内上线,不约而同为加速区块链技术落地开辟了一条颇具前瞻性的道路:提供开发者友好便利的开发框架,人人都能按需开发本身的区块链;并打破隔阂,让全部区块链可以连通起来,促进价值无缝流通。算法
和“一条公链搞定一切”的思惟分道扬镳编程
2018 年,众多公链项目沿着以太坊开辟的“世界计算机”方向,聚焦于单条区块链的交易吞吐量和性能的提高进行各类探索设计,一时之间,各类“公链”层出不穷,人人企图为全世界修建一条大而全的公路来解决各类交通运输问题,即便是各类链上分片、链下用侧链/子链/状态通道等扩容技术的方案,也仍然按照这一思惟作文章。结果性能并未获得实质性提高,却诞生愈来愈多技术架构各异、互不连通的公链,让 Dapps 开发者疲于奔命。浏览器
做为专一于 Dapps 开发部署的区块链时代的“云”平台,ArcBlock 的设计初衷是从应用开发角度出发,帮助开发者不只摆脱访问调用不一样区块链的麻烦负担,并且尽量下降应用被底层公链锁定的风险——去年 7 月上线的 OCAP(Open Chain Access Protocol,开放链访问协议)即为 Dapps 访问比特币、以太坊等底层公链提供了统一易用的中间抽象层,在解决增强区块链互操做性的道路上“吾道不孤”:如何终结愈来愈多的公链/许可链之间呈现的割据局面,在一座座价值孤岛之间搭建起价值互通的桥梁,使链与链之间能够互相传递讯息、发送交易,从而造成整个区块链的价值互联网。安全
若是说以太坊公链设计比如是全世界只修一条公路,ArcBlock 等提出的是“织链为网”的全新思路:编织区块链的交通网络,让各类车辆各行其道、各行其是,既须要免费的公路,也须要收费的高速和私家车道。最重要的是,交通网络必须有一个综合平台来协调指挥,才能有效利用路网资源发挥最好的综合性能。网络
除了 ArcBlock 以外,最近发布的 Cosmos,即将发布的号称实现了 ETH 2.0 愿景的 Polkadot,以及在企业联盟链领域耕耘已久的 Hyperledger Farbirc,都是在这个方向上探索前行。 能够说,从 2019 年的动向来看,关于区块链的将来方向,最终可能造成分道扬镳的两大阵营。 数据结构
从“互联网”到“互联链”的发展趋势架构
回顾互联网技术发展史,能够发现历史有着惊人的类似之处:早期的计算机网络是一个个独立的局域网,而后逐渐互联成为更大的通讯网络。计算机网络并无孕育出几个超级通讯网络服务, 相反,去中心的互联网协议取得了巨大的成功。咱们有理由相信,区块链也会朝着相似的趋势发展。 app
在如何实现跨链互联互通方面, 目前的各家技术解决方案也是八仙过海、各显神通,但基本的设计和目的是相似的。有趣的是,这些不一样的跨链技术自己都体现出对其余技术的互联互通性, 理论上它们是互相兼容,能够链接起来的——这与传统的“公链”们各自为政造成鲜明对比。 框架
以 Tendermint 团队为核心团队开发的跨链项目 Cosmos 定义了 IBC(Inter-Blockchain Communication,链间通讯)协议,容许使用 Cosmos SDK 开发的相同结构的区块链以及代理链(遵照原链和 IBC 通讯标准),以 Zone 的形式与 Hub 这一中间枢纽链接通讯,实现链与链的互联互通,最终造成宇宙星云式链网结构。Polkasdot 出如今 Cosmos 以后可能较多受 Cosmos 启发,其设计有相似之处。less
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 的目标就是要构建对开发者极其友好的区块链应用平台,所以追求良好开发者和用户体验是其最高原则。
织链为网的区块链设计,更有可能搭建对开发者友好的应用开发平台和生态,能让区块链更贴近实际应用场景,让去中心化应用在这样的基础土壤中得以万物生长。