Substrate: 最好的区块链搭建工具
原文文章:
Tabrizi, S. 2019. What is Substrate. Accessed:
编译 / ShawnRingLin
编辑 / Emily Yang
11月12日,Polkadot官方举办了Parity线上分享会,Joe和David介绍了您为什么要成为介绍人、提名人、经济学基础、账号设置和验证人基础结构。
公众号后台输入【关键词】:“节点” 领取PPT:Parity线上分享会“在Polkadot运行验证人节点”领取英译中【完整版】。
PPT页面精选
<< 滑动查看下一张图片 >>
在本文中,我尝试以任何具有一点技术经验的人都可以理解的方式,来解释Substrate是什么、 Substrate能做什么、由什么组成。
您可能之前了解过Substrate是用于构建区块链的可扩展的、模块化的和开源的框架。但是,如何系统性地理解?
Substrate内置构建区块链所需的所有核心组件:
- 数据库
- 联网
- 交易队列
- 共识
尽管以上层面都是能扩展的,但Substrate不要求普通的区块链开发人员去深究这些组件的具体实现细节。相反,Substrate的核心理念是使区块链的状态转换功能(State Transition)的开发尽可能灵活和容易。该层称为“Substrate runtime”- 执行链逻辑的函数代码。
但是在我们深入研究之前,首先我们需要统一定性:区块链的含义和运行逻辑。
从搭建角度,定义什么是区块链
01
从区块的搭建和推进角度来看,区块链是一种数据结构,其中数据块链接在一起形成有顺序的链。区块链的具体细节可能取决于该链的功能。但是,在较高的层次上,所有区块链应该共享一些共同的属性。
区块的继承和推进
区块链中的每个区块都有一些数据,数据生成了该区块的唯一标识符 ID 。该数据的一部分是前一个块的唯一标识符,称为“父区块”。每个块都有一个指向其父块的指针,区块按照这指针进行排序。
对块中数据的任何细微更改都会更改其唯一ID。由于此区块的ID已更改,因此其后的区块(“子区块”)也会更改,其后的区块以此类推……最初修改的父区块之后的所有块都必须更改其唯一ID以维护链! 如果,两条链的数据完全一样,那么最后一个区块的唯一标示符也一样。
区块的生成 Block Production
由于这种标识符,区块链系统可以用于跟踪一个共享的账本。账本的内容不是通过更改现有区块来更改,而是通过向区块链添加新块来进行更改。其中在区块之间更改账本的指令,这些指令也被称为交易。
更改账本的规则,由状态转换函数定义。在加密货币系统里有一些非常简单的规则。例如:用户只能花费自己拥有的资金。
收集到一组有效的交易后,将它们放入一个区块中,然后将该块放置在链的末尾。这个区块的生产过程使得链的状态随一直在变换。
区块的最终确认 Block Finalization
在一本共享账本上也有其他人在生成新的区块。但是,根据更改账本的原则,新生成的不同的区块要在链的末尾竞争同一位置。 不同的“区块确认机制”来有不同的规则来规定哪条链是最终的“规范链”。对于任何给定的区块链,共享账本只有一个最终的状态。任何其他状态的出现都被称为“分叉”。
分叉时有发生。区块确认的过程能帮助“非规范链”重新同步。在本文的后面,我们将回到分叉这个主题。
节点 Nodes
区块链是分布式和去中心化的。五湖四海的用户不需要中介就能跟踪此账本。每个账本的参与者都可以运行一个节点, 计算机里运行的节点是遵循区块链网络规则并连接至所有节点,不存在中心网络。区块链系统通常是“开放”系统,这意味着任何人都可以参与。为了防止恶意行为者,网络建立了规则来激励良好行为、同时惩罚不良行为。通过所有这些机制,区块链系统能够自我优化持续运行。
Substrate的组件
02
从区块链的构建角度,您已经有一个深入的了解。现在可以开始了解Substrate是如何构建区块链的。关于Substrate框架的第一个主张是它是可扩展的。这意味着这一搭建系统被设计的尽可能通用,能适用于各种类型的区块链。
数据库:Patricia Merkle树
区块链的核心是其共享账本,必须对其进行维护和存储。Substrate不对区块链中数据的内容或结构做深究,substrate的底层数据库层使用简单的键值存储(key-value storage)。并在其之上使用Patricia Merkle树(trie),融合了默克尔数和前缀树的数据机构,可以轻松地验证任意一项是否在该数据库中。
联网:链与链共享
为了使分散的区块链系统进行通信,它需要建立对等网络协议。Substrate将libp2p用作模块化的对等网络堆栈。
Libp2p: 一套点对点的网络协议,用来发现、连接、转移节点。
通过该协议,基于Substrate的区块链之间能分享交易信息、区块信息,不需要中心服务器。根据Substrate的理念,libp2p的独特之处在于它对所对接的网络协议不做预先假设。 因此,您能够在基于Substrate的区块链之上实施和使用不同的传输方式。
交易队列:管理队列和自动处理
每一次交易的信息会被收集、储存进区块,交易的队列最终决定了链如何变化。但是,多个交易的不同顺序可能会影响链的最终状态,继续在最长链上还是会分叉。使用Substrate,可以完全控制网络上交易的依赖包和队列管理。Substrate仅假设事务具有权重和一组用于创建依赖关系图的先决条件标记。并且Substrate会自动处理复杂的依存关系图。
共识 Consensus:共识层设计实现热插拔
不同的共识机制决定区块链的变化和推进。在以前,共识机制的引擎和区块链的各种要素紧密绑定。但是,Substrate设计了一个额外的共识层 (consensus layer),能让开发者更轻松地修改共识机制。这样就能使主链不需要离线就能实现共识机制的“热插拔”(hot swap)! 有各种共识机制被预先内置在substrate工具,例如传统的工作量证明(PoW),授权证明 (Auro) 和Polkadot的混合共识,
Substrate Runtime:可定制
Substrate尽力追求保持通用性和可扩展性。保持通用性的同时,开发者也可以对Substrate的runtime进行定制。
Substrate认为,一般的区块链开发人员不需要太在乎上面列出的substrate的各个要素。只要通过测试并投入运作,如何执行和实施就不那么重要了。但是,设定一个独特的区块链如何运作的逻辑代码对于任何项目都很重要。
重述一遍,Substrate的核心理念是使区块链runtime的开发设计能尽可能的灵活和容易。
Substrate Runtime模组库: 大量可选
Substrate runtime被划分为多个单独的逻辑组件 (logical components),这些逻辑组件称为runtime模组。 模组可理解为整个搭建系统的“插件”。模组都预先安装在substrate里,在模组库里选择自己需要的就能导入到自己的区块链搭建框架里。
例如“余额”模组,用于管理链的币种; 例如“民主”和“选举”,用于设定决策和治理机制。再例如,“合同”模组,能一键将这条链的功能转换成智能合约平台。
Forkless Runtime Upgrade
03
基于目前的Substrate模块生态系统比,我们还必须解决如何更新和升级的问题。
如果共识机制转换了,网络中其中一个节点更新到新共识,而另一个节点运行老版本的共识,则这两个节点将无法达成共识。 他们对账本状态的共识不一致,从而导致分叉。
而Substrate把共识机制也导入了共享账本中使得共识机制能做到全网一致,从而避免了这一难题。使用Wasm二进制格式,我们能够将Substrate运行时代码作为共享账本的一部分放在区块链上。 这意味着运行节点的任何人都可以验证其节点具有最新逻辑。 如果没有,它将直接执行链上的Wasm。 这意味着可以在实时网络上实时进行区块链的运行时升级,而无需分叉。
秉承Substrate的灵活性,您根本不需要启用此功能。 如果要禁用链上升级,则可以。 确实,Substrate为您提供了创建生动,令人呼吸的区块链所需的所有工具。
免费、开源、可生产的代码
04
Substrate是一个完全免费的开源项目。 它是使用Rust编程语言构建的,该语言旨在创建快速且安全的程序。Substrate的协调和开发是通过GitHub和Riot等公开社区进行的,有100多个个人贡献者。
Substrate也是一个来自Polkadot的项目,一个拥有许多可互操作区块链的更大的视野。Substrate不仅助力区块链的搭建、也能搭建所有连接到公共网络的所有区块链。Substrate希望在未来能成为区块链创新者的绝对最佳平台,也是任何正在考虑构建区块链的人的自然选择。
总结
05
读完以上,相信已经明白Substrate是用于构建区块链系统的可扩展、模块化和开源平台。 在Substrate开发过程的每个阶段,保持通用性始终是优先事项。Substrate框架是能用作未来技术、和尚未实现的技术的搭建平台。
编译 / ShawnRingLin
编辑 / Emily Yang
Tips: 公众号后台输入【关键词】:“节点” 领取PPT:Parity线上分享会“在Polkadot运行验证人节点”领取英译中【完整版】。
关于PolkaBase
PolkaBase是以波卡技术为基础的区块链3.0生态,致力于打造一个能推动区块链技术与应用落地、产生优质内容和产品价值、并吸引区块链行业外部资源与团队的新一代社区;在技术普及、生态孵化、高校与产业联合、价值用户和国际化五大方面,弥补现有社群的不足,推动生态的深化与发展。