-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tutorial step 2 - Uplift to latest ink! and Openbrush #14
base: tutorial/mint-step2
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,58 +1,59 @@ | ||
#![cfg_attr(not(feature = "std"), no_std)] | ||
#![feature(min_specialization)] | ||
#![cfg_attr(not(feature = "std"), no_std, no_main)] | ||
|
||
#[openbrush::implementation(PSP34, PSP34Enumerable, PSP34Metadata, PSP34Mintable, Ownable)] | ||
#[openbrush::contract] | ||
pub mod shiden34 { | ||
use openbrush::{ | ||
contracts::ownable::*, | ||
contracts::psp34::extensions::{enumerable::*, metadata::*, mintable::*}, | ||
traits::{Storage, String}, | ||
}; | ||
use openbrush::traits::Storage; | ||
|
||
#[ink(storage)] | ||
#[derive(Default, Storage)] | ||
pub struct Shiden34 { | ||
#[storage_field] | ||
psp34: psp34::Data<enumerable::Balances>, | ||
psp34: psp34::Data, | ||
#[storage_field] | ||
ownable: ownable::Data, | ||
#[storage_field] | ||
metadata: metadata::Data, | ||
#[storage_field] | ||
enumerable: enumerable::Data, | ||
} | ||
|
||
impl PSP34 for Shiden34 {} | ||
impl Ownable for Shiden34 {} | ||
impl PSP34Mintable for Shiden34 { | ||
#[ink(message)] | ||
#[openbrush::modifiers(only_owner)] | ||
fn mint(&mut self, account: AccountId, id: Id) -> Result<(), PSP34Error> { | ||
self._mint_to(account, id) | ||
} | ||
#[overrider(PSP34Mintable)] | ||
#[openbrush::modifiers(only_owner)] | ||
fn mint(&mut self, account: AccountId, id: Id) -> Result<(), PSP34Error> { | ||
psp34::InternalImpl::_mint_to(self, account, id) | ||
} | ||
Comment on lines
+21
to
25
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This code is not needed since we added mint() in the contract implementation. |
||
impl PSP34Enumerable for Shiden34 {} | ||
impl PSP34Metadata for Shiden34 {} | ||
|
||
impl Shiden34 { | ||
#[ink(constructor)] | ||
pub fn new() -> Self { | ||
let mut instance = Self::default(); | ||
instance._init_with_owner(instance.env().caller()); | ||
let collection_id = instance.collection_id(); | ||
instance._set_attribute( | ||
let mut _instance = Self::default(); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. do not use |
||
ownable::Internal::_init_with_owner(&mut _instance, Self::env().caller()); | ||
psp34::Internal::_mint_to(&mut _instance, Self::env().caller(), Id::U8(1)) | ||
.expect("Can mint"); | ||
let collection_id = psp34::PSP34Impl::collection_id(&_instance); | ||
metadata::Internal::_set_attribute( | ||
&mut _instance, | ||
collection_id.clone(), | ||
String::from("name"), | ||
String::from("Shiden34"), | ||
); | ||
instance._set_attribute(collection_id, String::from("symbol"), String::from("SH34")); | ||
instance | ||
metadata::Internal::_set_attribute( | ||
&mut _instance, | ||
collection_id, | ||
String::from("symbol"), | ||
String::from("SH34"), | ||
); | ||
_instance | ||
} | ||
|
||
#[ink(message, payable)] | ||
pub fn mint(&mut self, account: AccountId, id: Id) -> Result<(), PSP34Error> { | ||
if Self::env().transferred_value() != 1_000_000_000_000_000_000 { | ||
if self.env().transferred_value() != 1_000_000_000_000_000_000 { | ||
return Err(PSP34Error::Custom(String::from("BadMintValue"))); | ||
} | ||
self._mint_to(account, id) | ||
|
||
psp34::InternalImpl::_mint_to(self, account, id) | ||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
add new line