自己做一个托盘
在本教程中,您将编写一个存在于自己的板条箱中的衬底模块,并将其包含在基于衬底-node-template的节点中。
安装节点模板
当您完成教程:创建第一个基底链[1]时,您应该已经编译了2.0.0-alpha。衬底节点模板[2]的8位在您的计算机上。如果没有,请先完成教程。
如果您是一位经验丰富的开发人员,并且希望跳过本教程,那么建议您按照readme中的描述安装节点模板。克隆托盘
我们不直接将托盘作为节点模板的一部分来编写,而是将它作为一个单独的生锈板条箱来编写。这种形式允许我们从节点独立地释放托盘,或者允许其他人轻松地将托盘导入他们的底层运行时。
克隆基板托盘模板在托盘目录下您的节点模板:
cdpalletsgitclone-b2.0.0-alpha.8https: / /github.com/substrate-deeloper-hub/substrate-pallet-templatetest-pallet
在本教程中,我们将托盘模板放置在节点模板的目录结构中。此表格并不需要;你可以把托盘放在任何你想放的地方。另一种流行的方法是将它用作节点模板的兄弟节点。
底物托盘模板
我们从货物开始吧。探索toml文件的底层托盘模板。重命名的板条箱
在容器中。toml文件,您可以更新的名称和作者的板条箱。在本教程中,我们将重点讨论如何创建和使用面板,而不是编写面板逻辑。我们称之为测试托盘。
货物起运。Toml是这样显示的:
托盘/测试-托盘/货物。Toml
[包]作者= [' Substrate DeHub lt; https://github.com/substrate-deeloper.hubgt;'] description = '承印物框架托盘模板' edition = '2018'主页= 'https://substrate。io' license =' Unlicense' name =' test - palette repository =' https://github.com/paritytech/substrate/' ersion =' 2.0.0 - alpha。8’模板Palletldquo的编制;
如果您遵循了本教程中的步骤并将模板模块克隆到节点模板的托盘目录中,则需要将模板模块添加到cargo中。汤姆卷进风筝里。数组成员。在节点模板目录的根目录中;您将需要包括路径和包的名称,所以您需要将这个元素添加到成员数组中:’pallets/test- palette ‘,。
你应该能够成功地编译基板托盘模板使用以下命令:
Cdtest-palletcargobuild——STD发布模块功能
在这个托盘/ test-pallets /托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘/托盘。STD功能全程;,您可以让您的项目访问Rust标准库。这在构建本地二进制文件时非常方便。
然而,Substrate也将运行时代码构建到WebAssemb (Wa)中。在本例中,我们使用cargo函数来禁用Rust标准库。因此,托盘(模块)和整个运行时的所有依赖项必须能够使用’no_std'[4]函数。的容器中。toml文件告诉依赖的模块使用其STD功能,只有当模块也使用其STD功能,如下图所示:
托盘/测试-托盘/货物。Toml
[功能]默认= [' STD '] STD = [' codec/ STD ', 'frame-support/ STD ', 'frame-system/ STD ',]基片依赖关系应一致
所有底层模块都依赖于底层的帧库,如帧系统和帧支持。这些库是从箱子中提取出来的。IO。当人们构建基于框架的运行时,他们也将依赖于这些低级库,您需要确保托盘和运行时是一致的。
托盘/测试-托盘/货物。Toml
# - "-[依赖关系。支持]git = 'https://github.com/paritytech/substrate.git'默认-功能=谬误标签= '8' 2.0.0 - alpha。
从上面的代码片段中,我们可以看到托盘板依赖于2.0.0-alpha版本。8 .低级库。所以它可以在运行时使用,这也依赖于2.0 -alpha.8。模块开发的依赖
开发依赖关系在容器的**一节中指定。toml文件。这些依赖项是在模块测试中需要的,而不是实际模块本身。
托盘/测试-托盘/货物。Toml
# - "- [de -依赖项。Sp - core] git = 'https://github.com/paritytech/substrate.git'默认-功能=谬误标签= '8' 2.0.0 - alpha。
可以通过以下命令确认在承印物托盘模板中的测试是否通过:
cargotest
当更新模块以包含自定义逻辑时,您可能需要将自己的依赖项添加到容器中。toml文件。
将模块添加到节点
一旦我们的模块编译并通过测试,我们就可以开始准备将它添加到我们的节点。
如果您不熟悉其他板条箱的包含和使用,请参阅《货物手册》[5]了解更多信息。
我们首先将新创建的crate作为依赖项添加到运行时容器中。,然后告诉模块只在运行时本身构建时才构建其STD功能,如下图所示:
运行时/货物。Toml
剪断,[依赖性。test - palette]DeFiault-features = falsepath = '..托盘/测试托盘'#往下[功能]默认= [' STD '] STD =['测试托盘/ STD ', # -snip-]底部的托盘/测试托盘'#[特性]默认= [' STD ']
您必须设置DeFiault_features = false,以便运行时将编译为Wa。
接下来,我们将test_palette添加到construct_runtime!在宏中,更新运行时/ SRC /lib。rs来实际使用我们新的运行时托盘。
运行时/ SRC / lib。Rs
/ /添加以下代码::TraitforRuntime {typeEent = Eent;} / / - "- construct_runtime! "(pubenumRuntimewhereBlock = Block, NodeBlock =不透明::Block, uncheckedextr= uncheckedextr{/ / - "- / /添加以下inglinetest托盘:test_托盘::{调用模块,存储,事件lt;t;}});
的节点
此时,您已经将模块打包到自己的模块包中,并将其包含在节点的运行时中。
确保返回节点模板的根,然后使用以下命令编译并运行节点:
Cargobuild——释放
清除所有现有的开发链(当提示时输入y):
。/ target/release/node - templatepurge - chain - de
开始节点:
。/ target/release/node -模板- de
**,启动连接到本地节点[6]的polkadot-应用程序,以确保模块按预期工作。
注意:您还可以在polkadot-应用程序中手动设置节点URL,方法是导航到Settings选项卡,并将远程节点/端点设置为连接到本地节点。
发布模块
一旦你的模块不再是测试版,你应该考虑将其发布到GitHub或crates。IO。发布在GitHub上
要在GitHub上发布,您需要创建一个GitHub存储库并发布模块代码。发布的板条箱。IO
板条箱。IO允许未经授权的分发。你可以按照他们的出版指南学习如何在板条箱上出版。io [9]。
更新运行时依赖项
现在,托盘被发布在GitHub或板条箱上。我们可以更新运行时以使用已发布的代码,而不是硬编码的文件系统路径。GitHub的依赖性
运行时/货物。Toml
(依赖关系。您的palm-name]DeFiault_features = falsegit = ' https://github.com/your-username/your-' branch = 'master'#您可以选择一个特定的提交或标记,而不是分支# re = 'lt;Git - commit;'# tag =' lt;一些taggt;板条箱。IO依赖性
运行时/货物。Toml
(依赖关系。你的掌纹名字]DeFiault_features = '一些兼容版本'
构建完美的
再次编译,注意Cargo现在正在从GitHub或crates抓取您的托盘。IO而不是使用本地文件。
下一个步骤
A:祝贺你!您已经成功地在自己的锈包中编写并发布了一个基板模块。其他区块链开发人员只需在carport中使用4行代码就可以轻松地在运行时使用您的托盘。并更新其运行时的lib. Rs文件。要了解更多
我们也有许多关于衬底开发的概念和技术的教程。
有关运行时开发技术和模式的更多信息,请参见衬底**[11]。资源
货运簿[12]
有关Rust和WebAssemb[13]的更多信息,请参见链接
[1]
创建你的第一个底物链:https://www.substrate.io/tutorials/pallet-inowcrate/tutorials/creyour-firstsubstrate-chain/2.0.0-alpha.8[2]
底层节点模板:https://github.com/substrate-deelope-hub/substrate-nodetemplate [3]
Rust标准库:https://doc.rust-lang.org/std/[4]
No_std: https://rust-embedded.github.io/book/intro/no-std.html [5]
货物手册:https://doc.rust- lang.org/cargo/guide/creating-a-newproject.html [6]
连接到本地节点的应用:https://polkadot..org/apps/#/explorer?RPC = ws: / / 127.0.0.1:9944 [7]
创建一个批量存储库:https://help.github.com/en/articles/crea-repo [8]
发布模块代码:https://help.github.com/en/articles/pushing-to-a-remote [9]
如何在板条箱。IO张贴:https://doc.rust-lang.org/cargo/reference/publishing.html [10]
很多教程:https://www.substrate.io/tutorials [11]
用于**的底物:https://substrate.de/recipes/[12]
货物书籍:https://doc.rust- lang.org/stable/cargo/[13]
Rust和WebAssemb: https://rustwa.github.io/
原:https://www.substrate.io/tutorials/pallet-in-own-crate/2.0.0-alpha.8
PolkaWorld社区
欢迎学习承印物:
https://substrate.de/
对基质发展的关注:
https://github.com/paritytech/substrate
遵循圆点花纹的进展:
https://github.com/paritytech/polkadot
申请训练营:
https://bootcamp.web3.foundation/
文章标题:教程|编写一个基板模块
文章链接:https://www.btchangqing.cn/26844.html
更新时间:2020年05月27日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。