什么是Substrate

2020-08-15 10:34 栏目:经验之谈 来源:网络整理 查看()

利用现有的区块链进行二次开发是非常痛苦的。以邰方为例进行二次开发。以太网把所有的功能放在一个过程中,所以当使用以太网进行开发时,经常会发生全身受到影响的情况。例如,如果我们想给以太网添加一个事务结构(投票事务),让我们看看哪些模块会受到影响。首先,它必须是事务模块。事务需要被打包成块,因此块模块需要相应地被修改,并且块需要在本地被同意(POW证明),因此一致性模块需要相应地被修改,并且一致性之后的块需要在整个网络上被广播,因此p2p块同步也应该相应地被修改。仅仅增加一个新的事务就需要这么多的联合修改,这会给我们的开发代码带来巨大的不必要的工作量。因此,我们需要一个框架来帮助我们发展区块链项目。就像用spring boot开发web应用程序一样,开发人员只需要关注业务。

基板简介

Substrate是一个可扩展的、模块化的、开源的区块链框架,它实现了区块链开发中最常见的功能,如p2p网络、一致性算法、通用加密算法、数据存储、事务管理等。同时,基底抽象出与区块链相关的业务逻辑,所以开发者只能关心业务逻辑的实现,关注区块链业务。

什么是Substrate

为什么基底是一个框架而不是一个库?请参见上图了解框架和库的区别。如果我们在开发代码时需要调用其他代码,那么被调用的代码可以被称为库,它只是一个函数的集合,需要被其他人调用。框架的定义特征是控制反转,这将主动调用我们的代码。程序执行的控制流和数据流受框架控制。因此,当我们使用基底时,基底框架将控制何时建立p2p网络、何时将事务添加到事务池、何时生成块以及何时就块达成共识。我们需要做的是实现特定的函数并等待框架调用。

什么是Substrate

以下是基板为我们提供的构建区块链的所有组件。

资料库

建立关系网

事务队列

一致

“运行时”

什么是Substrate

资料库

区块链的本质是共享账簿,所以数据应该是持久的。Substrate没有对上区块链业务中使用什么样的块结构以及存储什么内容做出任何假设。基底在数据层使用最简单的键值对存储,实现方法是MPT。MPT存储结构可以检查一个键是否在树中,这对轻量级客户端非常重要。当与区块链网络互动时,轻型客户端需要依靠这种墨克尔证据来确认某个交易或状态是否存在于主链中。

什么是Substrate

建立关系网

区块链的节点分布在世界各地,因此需要点对点网络协议来连接这些节点以形成网络,并且所有节点可以共享网络上的事务、块和其他信息。基板采用libp2p模块化p2p网络堆栈,libp2p不会限制我们使用该网络协议,我们可以在libp2p上定制自己的网络协议

Libp2p是一个模块化的网络堆栈,它使得开发人员可以通过结合各种传输和p2p协议来构建大型且健壮的p2p网络。

什么是Substrate

事务队列

网络上的事务由挖掘者处理并打包成块,然后挖掘者将按顺序执行块中的事务以生成下一个状态,其中块中的事务顺序将影响分类帐的最终状态。

什么是Substrate

基底为我们提供了一种在交易池中定制交易订单的方法。基底假设交易具有用于确定交易打包优先级的权重属性和用于创建交易相关性的标签属性。最简单的事务依赖是线性的,但是也有复杂的依赖,基底会自动处理这些复杂性。

什么是Substrate

一致

共识是达成共识的一种方式。为了创建和提升区块链的地位,网络中的所有节点都必须达成一致意见。这是分散网络中的节点保持彼此同步的方式。如果在分散的区块链中的节点之间没有共识,则不可能确保一个节点相信的真实状态被其他节点共享。共识的目的是在参与者有自己的“主观观点”的网络中提供对国家的“客观观点”。这是这些节点通信并达成一致的过程,并且可以产生新的块。

一致性算法是一种使分布式网络中的节点同意某一状态的方法。在区块链如以太网中,一致性引擎与其他区块链组件紧密耦合,因此很难替换新的一致性算法。基底设计了一个抽象的一致性层,在实际开发过程中可以很容易地替代一致性算法,即使在区块链运算过程中,一致性算法也可以进行热交换。各种一致算法模板被构建到基底中,例如工作负载证明功率、光环等等。衬底一致性算法的特殊特征是将块生产(BABE)与块最终确认(爷爷)分开。

贝比/爷爷混合共识机制

贝比走出街区,高效走出街区,最快2秒一个街区

爷爷有大量的高效确认块,可以一次确认

什么是Substrate

运行时间

区块链中的状态改变是通过基于前一个块执行一系列事务来完成的,并且每个事务的执行规则由状态转换函数来确定。状态转换函数可以非常简单。例如,在密码货币系统中,状态转移函数可以简单地定义为:“只有拥有货币所有权的用户才能消费某种货币”,也可以非常复杂。例如,我们可以将状态转移函数定义为具有图灵完备性的虚拟机。

什么是Substrate

在基底中,开发人员可以通过运行时定制他们自己的状态转换函数。在区块链,状态转换函数是开发人员最需要关注的业务逻辑。为了使运行时的开发尽可能的灵活和简单,基底提供了一系列的内置模块,称为托盘,开发人员可以自由地将这些模块组合到运行时中。例如,如果您需要在区块链拥有智能契约功能,您只需要将契约模块添加到运行时中。

什么是Substrate

除了内置托盘之外,开发人员还可以定制托盘,它由以下五个部分组成,每个部分都可以通过定制的托盘来实现。

//1。导入和依赖项

//托盘支持使用任何编译的Rust库

//带有“no_std”标志。

使用support:{decl_module,decl_event,decl_storage,{}

//2 .运行时配置特征

//所有的运行时类型和常量都在这里。如果托盘

//依赖于特定的其他托盘,然后是它们的配置特征

//应该添加到遗传性状列表中。

pub trait : system 3360: trait {.{}

//3 .运行时事件

//事件是报告特定条件和情况的简单方法

//用户、Dapps和/或链探索者会发现

//有趣,否则难以察觉。

decl_event!{.{}

//4 .运行时存储

//这允许衬底存储数据库的类型安全使用,因此您可以

//把东西放在街区之间。

decl_storage!{.{}

//5 .托盘声明

//这定义了最终从此托盘导出的“模块”结构。

//它定义了这个托盘公开和编排的可调用函数

//该托盘在整个块执行过程中采取的动作。

decl模块!{.{}

运行时无分叉升级

任何代码都将涉及升级现有的功能、修复错误和添加新的功能。然而,运行时属于链上的状态转移函数,修改链上的状态转移函数会影响整个网络的一致性,甚至导致链分叉。目前,网络上的一个节点运行STF V1版本的状态转换功能,而另一个节点运行STF V2的升级版本。此时,在执行块#3中的事务之后,它们将获得两种不同的状态,这导致了链分支。

什么是Substrate

基础是通过让整个网络的节点在执行运行时代码之前就要升级的运行时代码达成一致来解决分叉问题。首先,主链中的数据得到整个网络节点的同意,所以基底将运行时代码编译成wasm二进制格式,然后将运行时二进制代码存储在主链中。任何正在运行的节点都可以检查链上的运行时代码是否是最新的。如果链上有最新的运行时代码,将执行链上的代码,如果没有最新的代码,将执行本地运行时代码

什么是Substrate

这样,衬底可以升级链中的逻辑而不会分叉。

摘要

Substrate是一个可扩展、模块化和开源的区块链框架,具有以下优势:

它可以升级而不会分叉。通过将运行时代码编译成wasm代码并将其存储在链中,代码在网络上的节点之间达成一致后被升级

高效,基底是用铁锈开发的,它具有内存安全性,避免了没有垃圾收集的性能问题,并避免了编译强类型系统时的错误

模块化设计,开发者可以根据自己的需求定制存储、共识和p2p网络

polkadot生态系统可以无缝连接Polkadot并融入更大的生态系统,而无需从头开始构建自己的社区。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发