🌟
[Astar]コントラクト備忘録17(psp34 Burnableについて)
こちらの知見がたまったので、備忘録として残します。
1 概要
- psp34 Burnableについて
2 内容
こちらのコントラクトを作成しました。
OpenBrushのexampleの中身そのままです。
#![cfg_attr(not(feature = "std"), no_std)]
#![feature(min_specialization)]
#[openbrush::contract]
pub mod my_psp34 {
use ink_storage::traits::SpreadAllocate;
use openbrush::{
contracts::psp34::extensions::burnable::*,
traits::Storage,
};
#[derive(Default, SpreadAllocate, Storage)]
#[ink(storage)]
pub struct Contract {
#[storage_field]
psp34: psp34::Data,
}
impl PSP34 for Contract {}
impl PSP34Burnable for Contract {}
impl Contract {
/// The constructor
#[ink(constructor)]
pub fn new() -> Self {
ink_lang::codegen::initialize_contract(|instance: &mut Self| {
instance
._mint_to(Self::env().caller(), Id::U8(0u8))
.expect("Should mint token with id 0");
instance
._mint_to(Self::env().caller(), Id::U8(1u8))
.expect("Should mint token with id 1");
instance
._mint_to(Self::env().caller(), Id::U8(2u8))
.expect("Should mint token with id 2");
})
}
}
}
Burnと直接関係するわけではないですが、こちらの「new」を見てみましょう。
3つのトークンをミントしています。
「0u8」と書くことで、「u8」型の0になるというのは押さえておくのが良いと思いました。
「Burnable」を実装することで、こちらのburnが使えるようになります。
https://github.dev/Supercolony-net/openbrush-contracts
では、実際にやってみましょう。
最初は3つミントされるので、「balanceOf」は「3」です。
「burn」をしてみます。
もう一度、「balanceOf」を見てみると、「2」になっていることが確認できました。
shibuya
YDjXdL3AQZPHaUeLrgHUKm2ZXugM3SGWzg9xJRrQxZpecC8
今回は以上です。
Discussion