Pallets

Cách xây dựng 1 pallet thực tế

 
 
// Định nghĩa 1 pallet -> pub mod pallet 
#[frame_support::pallet]
pub mod pallet {
 // Sử dụng core frame
 use frame_support::pallet_prelude::*;
 use frame_system::pallet_prelude::*;
 
 // Định nghĩa Struct cho Pallet 
 // Để implement traits hoặc methods cho pallet 
 #[pallet::pallet]
 pub struct Pallet<T>(_);
 
 // Định nghĩa chia sẻ hành vi của pallet 
 // Kế thừa từ hành vi của frame_system
 #[pallet::config]
 pub trait Config: frame_system::Config { ... }
 
 // Định nghĩa các onchain storage
 // Định nghĩa hàm READ
 #[pallet::storage]
 #[pallet::getter(fn something)]
 pub type MyStorage<T: Config> = StorageValue<_, u32>;
 
 // Định nghĩa event
 #[pallet::event]
 #[pallet::generate_deposit(pub(super) fn deposit_event)]
 pub enum Event<T: Config> { ... }
 
 // Tự động trigger function khi block được khởi tạo hoặc block được finalize 
 #[pallet::hooks]
 impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> { ... }
 
 // Định nghĩa extrinsic call ( transaction)
 // Hàm WRITE/ READ
 #[pallet::call]
 impl<T:Config> Pallet<T> { ... }
}
 

Tóm lại, gồm có các bước như sau

  • Bước 1: Định nghĩa pallet folder , import pallet vào runtime
  • Bước 2: Định nghĩa Config Trait ( nêú có)
  • Bước 3: Định nghĩa on-chain storage
  • Bước 4: Định nghĩa transaction
  • Bước 5: Error Handling + Emit Event
  • Bước 6: Viết Unit Tests
  • Bước 7: Chạy dev node để test tương tác với client thông qua polkadot js explorer

Tài liệu tham khảo