💨

[Astar]コントラクト備忘録10(psp22 Mintableの実装について)

2023/02/25に公開

こちらの知見がたまったので、備忘録として残します。

1 概要

  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