二、入门Substrate之Substrate-node-template模板中的pallet-template进行源码分析

本文深入剖析Substrate-node-template中pallet-template的文件结构,源码逻辑,以及如何自定义交易函数、存储类型、事件和错误。通过创建hello_substrate函数,展示存入值大于100时抛出GreaterThan100错误,存入成功则触发HelloStored事件的过程。文章还提及了测试、编译和运行节点的步骤,以及通过Polkdot浏览器进行交互。
摘要由CSDN通过智能技术生成

二、入门Substrate之Substrate-node-template模板中的pallet-template进行源码分析

其实作为Substrate的开发者们,已经为使用框架者提供了类似八股文一样的宏来简化开发,目前你只需要记住这个配置是干什么用的就够了,如果想要自定义pallet,建议直接把模板中的lib.rs直接复制过去,进行修改即可,后续想要深入了解,可以去看substrate的源码。本文将会分析了pallet-template的文件结构,常用配置的作用,并仿照模板自定义一个交易函数、存储类型、事件、错误。

1.文件结构

首先我们打开Substrate-node-template文件夹看看目录结构

我们找到根目录下的pallets->template

image-20211006173635347

  • lib.rs:自定义pallet的主文件,大部分逻辑都在这里
  • mock.rs:为测试文件提供一些配置
  • test.rs:测试文件
  • benchmarking.rs:此文件用于生成发交易使用的weight,在后面的文章中会专门介绍,暂不讨论

2.源码分析

下面我们将lib.rs文件内容复制过来,一行一行进行解释分析

//这个 crate 不应使用 rust 的标准库
#![cfg_attr(not(feature = "std"), no_std)]

pub use pallet::*;

//引入mock
#[cfg(test)]
mod mock;

//引入tests
#[cfg(test)]
mod tests;

//引入benchmarking
#[cfg(feature = "runtime-benchmarks")]
mod benchmarking;

//以下是构建自定义pallet的主体部分
#[frame_support::pallet]
pub mod pallet {
  //使用依赖
  //frame_support主要提供DispatchResult,其实就是一个Rusult,正确执行返回一个Ok(())即可
  //frame_support还定义了一些常用的存储结构,trait
	use frame_support::{dispatch::DispatchResult, pallet_prelude::*};
  //引入frame_system中的一些常用的宏,例如* ensure_signed、ensure_none、ensure_root
	use frame_syste
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值