LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > 【Substrate开发教程】07 - Substrate区块链应用开发技术选型

【Substrate开发教程】07 - Substrate区块链应用开发技术选型

2020-10-19 松果 来源:区块链网络


Polkadot开发概述

Polkadot是一个区块链协议,它有两个目标:

为所有连接的平行链提供共享安全;通过XCMP(跨链消息传递协议)为所有连接的链提供互操作性;

随着Substrate和Cumulus之类的PDK(平行链开发套件)的出现,开发和启动新区块链所需的时间已大大减少。

目前的Polkadot网络和开发组件有:

主网:Polkadot;Canary网络:Kusama;测试网:Westend(中继链)、Rococo(平行链);Substrate:v2.0.0;ink!:v3.0;

Polkadot主要由Rust编程语言和Substrate框架构建,Substrate通过捆绑诸如p2p网络协议、共识层、Wasm解释器、运行时模块(pallet)等让开发者可以容易地开发整条区块链。

Cumulus是Substrate的扩展,它允许任何通过Substrate构建的区块链连接到Polkadot并成为其平行链。

Polkadot本身并不支持智能合约,但会有平行链支持。通过使用Substrate FRAME中的contracts模块(for Wasm)或EVM模块,基于Substrate的区块链可以包含智能合约功能。

contracts模块可以使用Wasm编译的合约,这些合约可以根据区块链的特定规则进行部署。

为了促进Wasm智能合约的开发,Parity还开发了ink!,这是Rust内置的dsl(领域特定语言),用于编写智能合约。

平行链、平行线程、智能合约

Polkadot提供多种开发区块链应用程序或DAPP的方法:

平行链上的智能合约;平行链;平行线程;

在使用每种方法时都需要权衡取舍。

平行链是包含其自有运行时逻辑的“平行”的区块链,可受益于Polkadot中继链提供的共享安全性和跨链消息传递。平行链具有高度的灵活性和定制性,但需要更多的精力来创建和维护。

平行线程和平行链类似,使开发人员能够对其应用程序逻辑进行底层控制,两者之间的主要区别是经济性,平行线程的运行成本比平行链要低得多。

平行线程的成本较低的原因是,不需要像平行链那样需要一个插槽并一直与中继链保持连接,平行线程只需赢得单个区块的拍卖并在需要时保持连接。

构建平行线程时使用和平行链相同的工具(如PDK),获得和构建平行链同样的好处。

在Polkadot主网上有充当智能合约平台的平行链,智能合约是仅存在于单个平行链上的可执行程序,复杂度受到限制。

智能合约存在于单个链上,所以它们与同一链上的其他智能合约具有流畅的互操作性,但将始终受到其宿主链的固有特性的约束和限制。

如果需要对应用程序的设计和功能进行大量控制,使用平行链是更好的选择,平行链以治理形式提供了更大的灵活性,可以用较少争议的方式执行完整升级,可以将智能合约用作其测试平台。

平行链、平行线程、智能合约比较

比较项平行链平行线程智能合约开发速度慢慢快部署难度难普通容易逻辑复杂度高高低维护费用高普通低自定义能力高高低资源控制能力低低高原生链特征高高低可扩展性高高低

创建平行链/平行线程

用于构建平行链或平行线程的框架称为平行链开发套件(Parachain Development Kits,PDK),当前可用的PDK是Substrate&Cumulus。

Substrate是构建Polkadot的基础框架,是一个提供了构建区块链所需的必要模块的工具集。Substrate包含一个模块化运行时插件库,可以使用这些插件来组建链的逻辑,也可以编写自己的模块(pallet)供社区使用。

在使用Substrate创建了链的运行时逻辑之后,会将其编译为wasm可执行文件。这个二进制的wasm代码包含链的整个状态转换功能,是项目作为平行链/平行线程部署到Polkadot所必须的。

Polkadot中继链上的验证人(validators)使用提交的wasm代码来验证平行链/平行线程的状态转换。

收集人(collators)是平行链的维护者,他们收集新的候选区块并将其传递给验证人并最终包含到中继链中。

Substrate具有内置的网络层,但仅支持单独链(不能连接到中继链),Cumulus扩展包含一个收集人节点,允许将Substrate构建的逻辑做为平行链/平行线程与Polkadot兼容。

Cumulus的目标是对Substrate进行扩展,使得任何Substrate运行时能够与Polkadot兼容。

Cumulus可以处理任何平行链连接到Polkadot所需的网络兼容性开销,包括:

跨链消息传递;开箱即用的收集人节点;中继链的嵌入式轻客户端;Polkadot出块者兼容性;

为了在Polkadot中部署平行链,需要先通过竞拍方式获得平行链插槽。部署平行线程不需要平行链插槽,而是向中继链付费注册平行线程代码,然后参加单个区块的拍卖。

创建智能合约

Polkadot中继链本身不支持智能合约,但由于连接到Polkadot的平行链可以支持任意状态转换,因此它们可以支持智能合约。

Substrate通过两种方式支持智能合约:

使用FRAME库提供的contracts模块,部署基于Wasm的智能合约;使用FRAME库提供的evm模块,使用以太坊堆栈提供的工具部署从Solidity或Vyper编译的基于EVM的字节码;

contracts模块使用WebAssembly作为其编译目标,任何可以编译成Wasm的编程语言都可以用来编写智能合约,尽管最好使用专用的领域特定语言(domain specific language,dsl),出于这个原因,Parity提供了ink!语言用于编写智能合约。

智能合约必须支付租金或持有足够量的押金以证明其链上存在状态,默认情况下合约会被缓存,因此合约只需部署一次,然后根据需要多次实例化。当合约不再被使用或存款耗尽时,代码会从存储中被删除(reaping)。

可以运行一个本地测试环境的Substrate节点,带有两个智能合约开发模块(contracts、evm)之一以开始编写智能合约。开发完成后将需要研究诸如edgeware等项目,把智能合约部署到实际环境中。

智能合约是链上某个地址存放的一些代码,可以被外部参与者调用,代码上链后任何人都可以执行它。

在不同平行链上部署智能合约的操作会略有不同,但一般是发送一个特殊的交易,然后在账本上创建智能合约,并需要为初始化逻辑和合约占用的存储空间付费。

大多数智能合约平台使用某种形式的gas来限制用户可以执行的操作数量,用户需要先支付gas费用并退还不使用额度gas。

开发者需要考虑智能合约的存储和复杂性,以确保gas使用量保持在合理范围内。链上存储一般都很昂贵,考虑使用IPFS或Storj等去中心化存储方案来存储链外数据。

Edgeware

Edgeware是目前运行的一个带有智能合约模块的基于Substrate的项目,对于创建了智能合约并希望部署到实际环境的开发人员而言,Edgeware是目前的最佳选择。

Edgeware在将来会做为允许智能合约的平行链连接到Polkadot,这样智能合约就能够通过XCMP与Polkadot生态系统的其他部分进行交互。更多内容可查看Edgeware开发文档。

Moonbeam

Moonbeam是另一个将支持智能合约的并计划作为平行链部署到Polkadot的项目,Moonbeam使用Frontier(和现有以太坊工具的互操作性层),将支持针对EVM环境编写的所有应用程序而不会产生任何摩擦。更多内容可查看Moonbeam开发文档。

ink!

ink!是一种dsl(domain specific language,领域特定语言),用于在Rust中编写智能合约并编译为Wasm代码。ink!目前处于试验阶段,但已经有一些项目使用ink!构建应用,比如Plasm的Plasma合约。

ink!为基于Wasm虚拟机并与Substrate链兼容的新智能合约堆栈奠定了很多基础,关于ink!语言的用法可以参考ink! code examples。

—-

编译者/作者:松果

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...