为什么Compound选择使用Substrate进行独立链的开发

Mike Tang

Compound(https://compund.finanice)在 2021年3月正式上线了其独立链网络 Gateway(原名 Compound Chain)。Gateway是一条独立的链,它的目标是成为一个统一的 Defi 枢纽,实现跨链的 Defi——你可以质押链 A 上的资产,在链 B 上借款——从而将所有链的资产全部打通,提升全网络资产利用率和流动性。

Gateway 的出现基于如下的判断:未来世界一定是一个多链的世界,即没有一条区块链能解决所有问题。未来会有很多条链,很多种可能性。于是人们的资产会被分散到各个独立的平台。如何提升这些分散的资产的利用率,就是 Gateway 要研究和解决的问题。

Gateway 的系统架构

为什么Compound选择使用Substrate进行独立链的开发

Gateway 架构图

如架构图所示,Gateway通过针对各种链(Peer Chain)开发特定的 Starport(Peer Chain上的一组合约或组件),来连接所有的链。

本文不会在 Gateway 的 Defi 相关事物上做过多叙述,本文主要就 Gateway 为何选择 Substrate 进行开发做一个简要的分析。

为什么要选择 Substate

Compound 官方的说法:

We chose Substrate so that we could focus on building application code, instead of inventing consensus algorithms; it’s a modern framework built on a modern language, Rust. (https://medium.com/compound-finance/gateway-623f6f48d2b6)

我们选择 Substrate 以便我们可以聚焦在构建应用代码上,而不是去发明共识算法;并且它是一个现代框架,构建在现代语言 Rust 之上。

Rust语言是一门面向安全的现代编程语言。关于Rust语言的良好口碑,本文也不再赘述,感兴趣的朋友可以阅读《2020 开发者调查报告:Rust 再次成为最受欢迎的语言》。Rust几乎已成为当今区块链开发的首选语言,比如:Polkadot, Near, Solana, Dfinity,FileCoin 的底层等等都是Rust 实现的。Rust语言有以下显著特性:

  • 内存安全:其独有的所有权和生命期设计,理论上保证不会出现内存错误。解决了底层系统缺陷中的70%的问题
  • 并发安全:在并发编程(多线程,多协程)中,能保证并发的安全性
  • 高性能:与C/C++是同一级的性能,目前主流语言中的顶级
  • 零开销抽象:此特性让Rust能够无缝连接 C 语言的既有生态,而没有性能损失
  • 强大的抽象表达能力:Rust借鉴了很多函数式语言的表达力,让其表达更干练
  • 现代的工程化设施:Cargo 和 crates.io 这种现代化的辅助系统,让 Rust 构建复杂工程时轻松自在
  • 积极活跃的社区:Rust从一开始就是以社区模式开发迭代的,这点其实非常有意思,与go这种集权式开发显著不同

了解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也有自己的不足:

  • 新引入一些概念名词(比如:extrinsic&#


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部