Cosmos SDK 介绍(上)

引言

区块链是人类的巅峰科技成果组合而成的全新架构,对于生产关系的变革有巨大的潜力。数与科技团队致力于在实践中探索更加开放的加密经济基础设施,我们将逐步拆解主流区块链的底层技术细节,并且尝试将碎片化的区块链知识整理成树状知识图谱分享给社区,也欢迎有兴趣的朋友一起加入。

Cosmos是一套成熟且高可用区块链开发框架,拥有模块化设计、基于Golang开发、支持跨链协议等特点,是目前比较主流的区块链开发框架。通过Cosmos SDK,开发者可以快速构建出属于自己的区块链,高效地进行一系列个性化开发。

本文为Cosmos文档翻译系列第一篇。

 

Cosmos SDK 概述

 

1 什么是Cosmos SDK

Cosmos-SDK是开源框架,用于构建类似Cosmos Hub等基于POS共识算法的多元资产公有区块链,以及基于权威证明共识算法的许可链。使用Cosmos SDK构建的区块链通常被称为专用区块链(application-specific blockchains)。

Cosmos SDK的目标是让开发者可以快速地构建一条能与其他区块链以原生的方式进行互操作的可定制区块链。在我们的设想中,这套SDK就像Web应用框架一样,可以让开发者迅速构建出基于Tendermint算法的安全区块链应用程序。由Cosmos SDK的区块链由组合式模块构建,其中大部分模块都是开源的,且任何开发者均可使用。任何人都能为Cosmos SDK创建新的模块,集成已经构建的模块就像将他们导入你的区块链应用程序一样简单。还有一点,Cosmos SDK是基于功能(capabilities)的系统,这允许开发者可以更好地考虑模块之间交互的安全性。更深入地了解功能,请跳至本节。

 

2 什么是专用区块链

目前在区块链领域中,一种开发模式是通过像以太坊这样的虚拟机区块链展开,即开发者在现有的区块链上通过智能合约的方式去构建去中心化应用。虽然智能合约在单用途应用场景下非常有用,但在构建复杂的去中心化平台时无法达到要求。更具体地说,智能合约在灵活性、所有权、性能方面会受到限制。

专用区块链提供了与虚拟机区块链截然不同的开发模式。专用区块链是面向单个具体应用程序的高度定制化区块链:开发者可以完全自由地做出让应用程序可以达到最佳运行状态的设计决策。他们也可以提供更好的主导权、安全性和性能。

 

3 为什么选择Cosmos SDK?

Cosmos SDK是目前最先进的构建可定制化专用区块链的框架。以下是一些可能让你希望通过Cosmos SDK构建去中心化应用的原因:

  • Cosmos SDK 默认的共识引擎是Tendermint Core. Tendermint是目前最成熟的、唯一的BFT共识引擎。它被广泛应用于行业中,被认为是构建POS系统的最佳标准共识引擎。

  • Cosmos SDK是开源的,你可以通过组合式模块轻松地构建出区块链。随着SDK生态中各种开源模块的发展,通过Cosmos SDK构建复杂的去中心化平台会变得越来越容易。

  • Cosmos SDK 受基于功能的安全性所启发,并受益于多年来在区块链状态机领域的经验。这让Cosmos SDK成为一个非常安全的构建区块链的环境。

  • 最重要的是,Cosmos SDK已经构建出了多个正在运行中的专用区块链。例如,Cosmos HUB,IRIS HUB,Binance Chain, Terra 和 Kava。更多基于Cosmos SDK构建的区块链参考这里。

 

4 开始使用Cosmos SDK

了解如何从头建立专用区块链,请参考SDK教程(https://docs.cosmos.network/)。

 

专用区块链

1 概要

本文档解释了什么是专用区块链,以及为什么开发者更希望构建专用区块链,而不是开发智能合约。

 

2 什么是专用区块链?

专用区块链是面向单个具体应用程序的高度定制化区块链。与基于像以太坊这样的底层区块链搭建去中心化应用不同,开发者需要从头构建他们自己的区块链。这意味着构建全节点客户端、轻节点客户端和所有必要的接口(CLI, REST, 等等)来和节点交互。

Cosmos SDK 介绍(上)_第1张图片

 

3 智能合约的局限是什么?

早在2014年,像Ethereum这样的虚拟机区块链就满足了可编程性的需求。当时,开发去中心化应用的选项非常有限。许多开发者只能在复杂且有限制的比特币脚本语言上开发,或者fork难以运行和定制化的比特币代码。

虚拟机区块链在当时提出了新的价值主张。他们的状态机集成了虚拟机,从而能够执行被称为智能合约的图灵完备程序。虽然智能合约在一次性事件的应用场景下非常有用,但在构建复杂的去中心化平台时无法达到要求。以下是原因:

智能合约通常由可以被底层虚拟机解释的特定编程语言开发。这些编程语言常常并不成熟,并受限于虚拟机本身。例如,以太坊虚拟机并不允许开发者实现代码的自动执行。开发或者也被限制于EVM的账户体系,他们只能从一组有限的功能中进行加密操作。虽然这些只是示例,但它们展现了智能合约环境通常缺少灵活性。

智能合约都运行在同一台虚拟机上,这意味着它们会相互争夺资源,并严重影响执行效果。即使状态机分分成多个子集(例如通过分片技术),智能合约依然需要由虚拟机解释,比起在状态机上实现的本地应用程序,这依然限制了合约应用的性能。( 我们的基准测试表明,在删除虚拟机后,应用程序的性能提高了10倍。)

智能合约共享底层环境带来的另一个问题是主导权的最终限制。去中心化应用是一个涉及众多参与者的生态系统,如果去中心化应用建立在通用的虚拟机区块链上,利益相关者(stakeholders)对他们的应用程序就只有非常有限的主导权,并最终会被底层区块链的治理所取代。如果该应用程序还存在着漏洞,那任何人都无能为力。

专用区块链的出现,就是要解决上述问题。

 

4 专用区块链的优势

灵活性

专用区块链赋予了开发者最大的灵活性:

1. 在Cosmos区块链中,状态机通常通过被称为ABCI的接口和底层共识引擎连接。该接口可以被包装为任何编程语言,开发者可以自己决定用哪种编程语言来构建状态机。

2. 开发者在构建状态机时有多种选择,目前最常用的是Cosmos SDK,但也有其他的框架,如Lotion和Weave等。开发者通常都是基于他们使用的编程语言来选择使用哪一种框架(Cosmos SDK和Weave基于Golang,Lotion则基于JavaScript)。

3. ABCI允许开发者更换专用链的共识引擎。目前只有Tendermint共识可以投入使用,但在未来还会有更多共识引擎可被使用。

4. 即使已经选好了开发框架和共识引擎,但如果他们不能完全符合原始格式的要求,开发者依然可以对其进行调整。

5. 开发者可以自由探索出最能满足实际需求的方案(如验证人数量 vs Transaction吞吐量;安全性 vs 异步可用性等)和链的设计选项(如DB存储或IAVL树;UTXO或账户模型,等)。

6. 开发者可以实现代码的自动执行。在Cosmos SDK 中,每个块的开头和结尾都可以自动触发逻辑。与虚拟机区块链环境下的合约开发者不同,专用区块链的开发者可以自由地选择应用程序所需要的加密库,而不会受到底层环境的功能限制。

上述的列表展示了专用区块链给予开发者的充分灵活性。Cosmos 和 Cosmos SDK 的目标是让开发者工具尽可能的通用化、模块化,从而在保持兼容的情况下对堆栈的每个部分进行分叉、调整和优化。随着社区的不断发展,每个核心构建模块都将有更多可替代方案,为开发者提供更多选项。

 

性能

基于智能合约的去中心化应用在性能方面会天然地受到底层环境的限制。如果一个去中心化应用要进行性能优化,就需要将其构建为专用区块链。以下是专用区块链在性能方面的优势:

1. 专用区块链开发者可以选择像 Tendermint BFT 这样的新型共识引擎。与目前被大多数虚拟机区块链使用的POW共识相比,Tendermint BFT 在吞吐量方面有显著提高。

2. 一个专用区块链只运行单个应用程序,所以该应用程序不需要和其他程序去竞争计算资源和存储资源。这与目前所有非分片虚拟机区块链正好相反,在这些区块链中的智能合约都会争夺计算和存储资源。

3. 即使某种虚拟机区块链能够提供基于应用程序的分片和高效的共识算法,其性能也依然会被虚拟机本身所限制。真正的吞吐量瓶颈在于状态机,要求Transaction由虚拟机解释会大大增加处理它们的计算复杂度。

 

安全性

安全性很难进行量化,而且不同区块链平台之间存在很大差异。以下是专用区块链所能带来的重要优势:

1. 与不成熟的智能合约编程语言相反,开发者可以在构建专用区块链时选择像Golang这种可靠性已被验证的编程语言。

2. 开发者不会局限于底层虚拟机所提供的加密功能,他们可以使用自定义的加密技术,也可以依赖经过可靠审核的加密库。

3. 开发者无需担心底层虚拟机中潜在的漏洞或可被利用的机制,从而可以更容易地确保应用程序的安全性。

 

主导权

专用区块链的一大好处是主导权。去中心化应用是一个涉及众多参与者的生态系统,如用户、开发者、第三方服务,等等。当开发者在多个去中心化应用共存的虚拟机区块链上开发应用程序时,出现的一个问题是围绕应用程序所组成的社区人群和底层链的社区人群并不是一样的,但后者却会在治理的过程中取代前者。如果应用程序中存在一个漏洞,或者需要上线新的功能,应用的stakeholders几乎没有任何办法升级代码。如果底层区块链社区拒绝执行,那应用程序就无法升级。

根本问题是应用程序的治理和网络治理并不是统一的,而这个问题可以通过专用区块链解决。因为专用区块链只专门运行单个应用程序,所以应用的stakeholders对整条链有完全的主导权。这能确保社区在漏洞被发现时不会卡住,而且有充分的自由去选择链和应用程序的演化方向。

 

 

关于我们:

杭州数与科技于2017年在中国杭州成立,由来自EOSIO、COSMOS等开源社区的核心开发者组成。我们致力于在实践中探索主流区块链底层技术,建设开放的信任经济基础设施、消除信任建立成本。

 

Cosmos SDK 介绍(上)_第2张图片

你可能感兴趣的:(Cosmos SDK 介绍(上))