了解Rust的这些特性后,我们再去理解“Rust语言几乎已成为当今区块链开发的首选语言”这句话就显得很自然了。区块链本身以安全性为第一位,这点与Rust的设计理念完全一致。区块链中要做大量的计算,也需要高性能,这点Rust也是当仁不让。区块链系统一般比较复杂,对工程相关基础设施的要求很高,而Rust强大的工程性设计,让其在团队、开源社区开发中,特别适合大型项目的协作。 以注重安全性闻名的 Paritytech 公司,用 Rust 语言开发了以太坊的 parity 客户端。然后继续用Rust 开发了新项目 Polkadot,在开发 Polkadot 的过程中,逐渐形成了一个重大决定:将区块链的所有功能,拆解成抽象的设计,实现到一个开源的、通用的区块链框架中,并以此框架为工具,构建 Polkadot 产品。而这个区块链框架的重大成果,就是本文的主角——Substrate。 Substrate是一个用Rust语言开发的以通用性为目标的区块链开发框架。它的设计元素,比如密码学算法、存储结构MPT树,账户体系等,大部分借鉴自有史以来最成功的以太坊的基础设施,(这个可以理解,Paritytech 最早就是做以太坊客户端起家的,Gavin Wood 也是以太坊的联合创始人之一)。一个框架,要做到通用,就需要高度抽象。而高度抽象的代价往往会显得结构复杂,不易于使用。所以 Substrate 也提供了很多 DSL(领域特定语言),方便新手学习使用。简单归纳一下,Substrate具有如下特点: 1.面向通用。其设计面向通用领域,而不是专为某一条链做开发的 SDK。每个团队都可以使用 Substrate 开发出一条完全独立的不依赖于任何既有网络的链出来(比如,使用Substrate 开发的区块链可以与 Polkadot 无关,这也是 Paritytech 的设计目标之一) 2.功能全面。能覆盖区块链几乎所有的场景,可以说是目前市面上功能最全面的区块链框架 3.Runtime 代码编译成 wasm 执行。Wasm是当今区块链业界主流的VM字节码选择 4.可定制性超强。Substrate 本身是一堆分散的组件,可以在一套规范约束下,自由替换组件,自由组合 工程设计就是做取舍,当它强调一方面的时候,在另一方面,就会有一定的妥协。Substrate也有自己的不足:
|