Skip to main content
Version: 3.2.0

PSP34 Burnable

This example shows how you can reuse the implementation of PSP34 token with PSP34Burnable extension.

How to use this extension​

First, you should implement basic version of PSP34.

After you can just add implementation of PSP34Burnable via #[openbrush::implementation(PSP34Burnable)] attribute.

Final code​

#![cfg_attr(not(feature = "std"), no_std, no_main)]

#[openbrush::implementation(PSP34, PSP34Burnable)]
#[openbrush::contract]
pub mod my_psp34_burnable {
use openbrush::traits::Storage;

#[derive(Default, Storage)]
#[ink(storage)]
pub struct Contract {
#[storage_field]
psp34: psp34::Data,
}

impl Contract {
/// The constructor
#[ink(constructor)]
pub fn new() -> Self {
let mut instance = Self::default();

psp34::Internal::_mint_to(&mut instance, Self::env().caller(), Id::U8(0u8))
.expect("Should mint token with id 0");
psp34::Internal::_mint_to(&mut instance, Self::env().caller(), Id::U8(1u8))
.expect("Should mint token with id 1");
psp34::Internal::_mint_to(&mut instance, Self::env().caller(), Id::U8(2u8))
.expect("Should mint token with id 2");

instance
}
}
}

And that's it! Your PSP34 is now extended by the PSP34Burnable extension and ready to use its functions! You can check an example of the usage of PSP34 Burnable.