# 使用Substrate实现一个存证模块 **Published by:** [Lenny](https://paragraph.com/@lenny-4/) **Published on:** 2023-05-16 **URL:** https://paragraph.com/@lenny-4/substrate ## Content 存证功能的作用快速开始第一步,下载template-node源代码代码如下:git clone -b polkadot-v0.9.30 --depth 1 https://github.com/substrate-developer-hub/substrate-node-template.git 解释一下参数:-b polkadot-v0.9.30 表示我们选择v0.9.30这个分支的代码, --depth 1 表示我们只选择当前分支下的最近1次提交,这样可以保证我们不会下载很多历史代码,没必要。 如果不懂polkadot版本和substrate版本之间的对应关系,可以查看这个网站: 下载成功后,就会在本地看到一个文件夹,打开文件夹,内部的文件如下图所示template-node内部结构第二步,打开polkadot.js网站链接: https://polkadot.js.org/apps/#/explorer 这个网站监听本地的9944端口,当我们在本地运行区块链节点的时候,这个网站就会记录出现数据,现在因为没有run 节点,所以不会有任何显示, 右上角会持续显示“waiting to establish a connection …”没有启动区块链节点之前现在,我们启动下载好的template-node.(attention! 如果启动不起来,查看报错信息,多半是rust环境有问题,你所碰到的问题,都可以在网上找到解决方案),因为我做这个项目的时候是2023年的3月份,所以使用的rust版本如下:rustup install nightly-2023-01-01 rustup target add wasm32-unknown-unknown --toolchain nightly-2023-01-01 cargo +nightly-2023-01-01 build --release 编译成功后,启动一个测试节点,下面代码的意思是,编译成功后的二进制文件会出现在./target/release/node-template中,我们以dev的方式启动,同时添加--tmp选项,表示当我们停止节点之后,节点的数据将全部消失。./target/release/node-template --dev --tmp 第三步,运行template-node先在本地run 一下template-node, 看看能否成功出块。第四步,编写我们的palletpallet就类似于我们写代码的时候经常写的module, 每一个pallet 代表着一个功能模块;这些pallet 最后会在runtime包中进行调用,最后runtime包的代码会被编译成wasm(wasm是一堆二进制文件),等部署到链上的时候机会执行我们在runtime中的逻辑。第五步,编译第六步,运行修改过的template-node第七步,在polkadot.js上查看链上数据总结本次只是一个小的demo for coding a pallet, d如果没有按照本次教程运行自己的节点没关系,我刚开始学rust的时候也是经常出错,多看官方的文档; ## Publication Information - [Lenny](https://paragraph.com/@lenny-4/): Publication homepage - [All Posts](https://paragraph.com/@lenny-4/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@lenny-4): Subscribe to updates