From 293c7e8ff640a2367c2ceff2b5f17afc5d9cef7a Mon Sep 17 00:00:00 2001 From: Bobo Date: Thu, 27 Jul 2023 14:17:32 +0200 Subject: [PATCH 1/4] Uplift ink! and Openbrush --- contracts/shiden34/Cargo.toml | 17 +++------- contracts/shiden34/lib.rs | 62 +++++++++++++++++------------------ 2 files changed, 35 insertions(+), 44 deletions(-) diff --git a/contracts/shiden34/Cargo.toml b/contracts/shiden34/Cargo.toml index d78c70b..3275284 100644 --- a/contracts/shiden34/Cargo.toml +++ b/contracts/shiden34/Cargo.toml @@ -1,24 +1,17 @@ [package] name = "shiden34" -version = "1.0.0" +version = "3.1.0" authors = ["Astar builder"] edition = "2021" [dependencies] -ink = { version = "~4.0.0", default-features = false} - +ink = { version = "4.2.1", default-features = false } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } -scale-info = { version = "2.3", default-features = false, features = ["derive"], optional = true } - -openbrush = { tag = "3.0.0", git = "https://github.com/727-Ventures/openbrush-contracts", default-features = false, features = ["psp34", "ownable"] } +scale-info = { version = "2.6", default-features = false, features = ["derive"], optional = true } +openbrush = { tag = "v4.0.0-beta", git = "https://github.com/Brushfam/openbrush-contracts", default-features = false, features = ["psp34", "ownable"] } [lib] -name = "shiden34" path = "lib.rs" -crate-type = [ - # Used for normal contract Wasm blobs. - "cdylib", -] [features] default = ["std"] @@ -29,4 +22,4 @@ std = [ "openbrush/std", ] -ink-as-dependency = [] +ink-as-dependency = [] \ No newline at end of file diff --git a/contracts/shiden34/lib.rs b/contracts/shiden34/lib.rs index f6ce0ee..a900621 100644 --- a/contracts/shiden34/lib.rs +++ b/contracts/shiden34/lib.rs @@ -1,58 +1,56 @@ -#![cfg_attr(not(feature = "std"), no_std)] -#![feature(min_specialization)] +#![cfg_attr(not(feature = "std"), no_std, no_main)] +#[openbrush::implementation(PSP34, Ownable, PSP34Enumerable, PSP34Metadata, PSP34Mintable)] #[openbrush::contract] pub mod shiden34 { - use openbrush::{ - contracts::ownable::*, - contracts::psp34::extensions::{enumerable::*, metadata::*, mintable::*}, - traits::{Storage, String}, - }; + use openbrush::contracts::traits::psp34::extensions::mintable::*; + use openbrush::traits::Storage; #[ink(storage)] #[derive(Default, Storage)] pub struct Shiden34 { #[storage_field] - psp34: psp34::Data, + 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(PSP34MintableImpl)] + #[ink(message, payable)] + #[openbrush::modifiers(only_owner)] + fn mint(&mut self, account: AccountId, id: Id) -> Result<(), PSP34Error> { + if Self::env().transferred_value() != 1_000_000_000_000_000_000 { + return Err(PSP34Error::Custom(String::from("BadMintValue"))) } + + psp34::InternalImpl::_mint_to(&mut self, account, id) } - 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(); + 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 - } - - #[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 { - return Err(PSP34Error::Custom(String::from("BadMintValue"))); - } - self._mint_to(account, id) + metadata::Internal::_set_attribute( + &mut _instance, + collection_id, + String::from("symbol"), + String::from("SH34"), + ); + _instance } } -} +} \ No newline at end of file From 8b0db4dddb6a6ecf9c837770cc77a54b6f4b5426 Mon Sep 17 00:00:00 2001 From: Bobo Date: Fri, 28 Jul 2023 08:41:19 +0200 Subject: [PATCH 2/4] Another attempt to override mint --- contracts/shiden34/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/shiden34/lib.rs b/contracts/shiden34/lib.rs index a900621..e6bd38e 100644 --- a/contracts/shiden34/lib.rs +++ b/contracts/shiden34/lib.rs @@ -20,8 +20,8 @@ pub mod shiden34 { } #[overrider(PSP34MintableImpl)] - #[ink(message, payable)] - #[openbrush::modifiers(only_owner)] + #[ink(payable)] + #[modifiers(only_owner)] fn mint(&mut self, account: AccountId, id: Id) -> Result<(), PSP34Error> { if Self::env().transferred_value() != 1_000_000_000_000_000_000 { return Err(PSP34Error::Custom(String::from("BadMintValue"))) From 41e6a3f6caff14edc68d14c2f5527d073f00a9a5 Mon Sep 17 00:00:00 2001 From: Bobo Date: Fri, 28 Jul 2023 11:11:09 +0200 Subject: [PATCH 3/4] Mint message --- contracts/shiden34/lib.rs | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/contracts/shiden34/lib.rs b/contracts/shiden34/lib.rs index e6bd38e..efa1281 100644 --- a/contracts/shiden34/lib.rs +++ b/contracts/shiden34/lib.rs @@ -1,9 +1,8 @@ #![cfg_attr(not(feature = "std"), no_std, no_main)] -#[openbrush::implementation(PSP34, Ownable, PSP34Enumerable, PSP34Metadata, PSP34Mintable)] +#[openbrush::implementation(PSP34, PSP34Enumerable, PSP34Metadata, Ownable)] #[openbrush::contract] pub mod shiden34 { - use openbrush::contracts::traits::psp34::extensions::mintable::*; use openbrush::traits::Storage; #[ink(storage)] @@ -19,17 +18,6 @@ pub mod shiden34 { enumerable: enumerable::Data, } - #[overrider(PSP34MintableImpl)] - #[ink(payable)] - #[modifiers(only_owner)] - fn mint(&mut self, account: AccountId, id: Id) -> Result<(), PSP34Error> { - if Self::env().transferred_value() != 1_000_000_000_000_000_000 { - return Err(PSP34Error::Custom(String::from("BadMintValue"))) - } - - psp34::InternalImpl::_mint_to(&mut self, account, id) - } - impl Shiden34 { #[ink(constructor)] pub fn new() -> Self { @@ -52,5 +40,15 @@ pub mod shiden34 { ); _instance } + + #[ink(message, payable)] + #[openbrush::modifiers(only_owner)] + pub fn mint(&mut self, account: AccountId, id: Id) -> Result<(), PSP34Error> { + if self.env().transferred_value() != 1_000_000_000_000_000_000 { + return Err(PSP34Error::Custom(String::from("BadMintValue"))); + } + + psp34::InternalImpl::_mint_to(self, account, id) + } } -} \ No newline at end of file +} From 387636772360d919129ab01827ea5518df055117 Mon Sep 17 00:00:00 2001 From: Bobo Date: Fri, 28 Jul 2023 11:51:21 +0200 Subject: [PATCH 4/4] Mint overriden and implemented --- contracts/shiden34/lib.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/contracts/shiden34/lib.rs b/contracts/shiden34/lib.rs index efa1281..15c8a83 100644 --- a/contracts/shiden34/lib.rs +++ b/contracts/shiden34/lib.rs @@ -1,6 +1,6 @@ #![cfg_attr(not(feature = "std"), no_std, no_main)] -#[openbrush::implementation(PSP34, PSP34Enumerable, PSP34Metadata, Ownable)] +#[openbrush::implementation(PSP34, PSP34Enumerable, PSP34Metadata, PSP34Mintable, Ownable)] #[openbrush::contract] pub mod shiden34 { use openbrush::traits::Storage; @@ -18,6 +18,12 @@ pub mod shiden34 { enumerable: enumerable::Data, } + #[overrider(PSP34Mintable)] + #[openbrush::modifiers(only_owner)] + fn mint(&mut self, account: AccountId, id: Id) -> Result<(), PSP34Error> { + psp34::InternalImpl::_mint_to(self, account, id) + } + impl Shiden34 { #[ink(constructor)] pub fn new() -> Self { @@ -42,7 +48,6 @@ pub mod shiden34 { } #[ink(message, payable)] - #[openbrush::modifiers(only_owner)] pub fn mint(&mut self, account: AccountId, id: Id) -> Result<(), PSP34Error> { if self.env().transferred_value() != 1_000_000_000_000_000_000 { return Err(PSP34Error::Custom(String::from("BadMintValue")));