💨
[Astar]コントラクト備忘録10(psp22 Mintableの実装について)
こちらの知見がたまったので、備忘録として残します。
1 概要
- psp22 Mintableの実装
2 内容
こちらのコントラクトを作成しました。
#![cfg_attr(not(feature = "std"), no_std)]
#![feature(min_specialization)]
#[openbrush::contract]
pub mod my_psp22 {
// imports from openbrush
use openbrush::traits::Storage;
use openbrush::contracts::psp22::extensions::mintable::*;
#[ink(storage)]
#[derive(Default, Storage)]
pub struct Contract {
#[storage_field]
psp22: psp22::Data,
}
// Section contains default implementation without any modifications
impl PSP22 for Contract {}
impl PSP22Mintable for Contract {}
impl Contract {
#[ink(constructor)]
pub fn new(initial_supply: Balance) -> Self {
let mut _instance = Self::default();
_instance._mint_to(_instance.env().caller(), initial_supply).expect("Should mint");
_instance
}
}
}
まず、一つ目のポイントとして、OpenBrushから拡張機能である、「mintable」をインポートしています。
次のポイントは、今回は修正を加えることなく、「PSP22Mintable」をContractに実装しています。
「Mitable.rs」を確認すると、このように、「mint」という関数が実装されています。
https://github.dev/Supercolony-net/openbrush-contracts
デプロイを行うと、このように「mint」関数があることが確認できました。
psp22に実装されている、「balanceOf」で確認すると、このように、ミントされていることが確認できました。
Shibuya
aGPzxskzvScjcNBSbqgZFGzT2eT94XD7Y7dyg3TY2V94rLZ
今回は、以上です。
Discussion