From f9f48a225c864bb0a548a48a3604ceae46c20ec1 Mon Sep 17 00:00:00 2001 From: Bobo Date: Fri, 28 Jul 2023 13:21:57 +0200 Subject: [PATCH 1/3] Uplift to the latest ink! and Openbrush --- contracts/shiden34/Cargo.toml | 16 ++------ contracts/shiden34/lib.rs | 50 +++++++++++++---------- logics/Cargo.toml | 10 ++--- logics/impls/mod.rs | 2 +- logics/impls/payable_mint/payable_mint.rs | 32 +++++---------- logics/lib.rs | 3 +- logics/traits/mod.rs | 2 +- logics/traits/payable_mint.rs | 11 ++--- 8 files changed, 54 insertions(+), 72 deletions(-) diff --git a/contracts/shiden34/Cargo.toml b/contracts/shiden34/Cargo.toml index 5c85f36..7ccc244 100644 --- a/contracts/shiden34/Cargo.toml +++ b/contracts/shiden34/Cargo.toml @@ -1,25 +1,18 @@ [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"] } payable_mint_pkg = { path = "../../logics", default-features = false } [lib] -name = "shiden34" path = "lib.rs" -crate-type = [ - # Used for normal contract Wasm blobs. - "cdylib", -] [features] default = ["std"] @@ -27,7 +20,6 @@ std = [ "ink/std", "scale/std", "scale-info/std", - "openbrush/std", "payable_mint_pkg/std", ] diff --git a/contracts/shiden34/lib.rs b/contracts/shiden34/lib.rs index adc5908..7e88300 100644 --- a/contracts/shiden34/lib.rs +++ b/contracts/shiden34/lib.rs @@ -1,45 +1,53 @@ -#![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 payable_mint_pkg::traits::payable_mint::*; - use openbrush::{ - contracts::ownable::*, - contracts::psp34::extensions::{enumerable::*, metadata::*}, - traits::{Storage, String}, - }; + use openbrush::traits::Storage; + use payable_mint_pkg::impls::payable_mint::*; #[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, + } + + #[overrider(PSP34Mintable)] + #[openbrush::modifiers(only_owner)] + fn mint(&mut self, account: AccountId, id: Id) -> Result<(), PSP34Error> { + psp34::InternalImpl::_mint_to(self, account, id) } - impl PSP34 for Shiden34 {} - impl Ownable for Shiden34 {} - impl PSP34Enumerable for Shiden34 {} - impl PSP34Metadata for Shiden34 {} - impl PayableMint for Shiden34 {} + impl payable_mint::PayableMintImpl 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 + metadata::Internal::_set_attribute( + &mut _instance, + collection_id, + String::from("symbol"), + String::from("SH34"), + ); + _instance } } -} \ No newline at end of file +} diff --git a/logics/Cargo.toml b/logics/Cargo.toml index 85cd8e0..422151e 100644 --- a/logics/Cargo.toml +++ b/logics/Cargo.toml @@ -1,16 +1,14 @@ [package] name = "payable_mint_pkg" -version = "0.3.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] path = "lib.rs" diff --git a/logics/impls/mod.rs b/logics/impls/mod.rs index 9f72851..a6be5d8 100644 --- a/logics/impls/mod.rs +++ b/logics/impls/mod.rs @@ -1 +1 @@ -pub mod payable_mint; \ No newline at end of file +pub mod payable_mint; diff --git a/logics/impls/payable_mint/payable_mint.rs b/logics/impls/payable_mint/payable_mint.rs index 03b6f7e..2186645 100644 --- a/logics/impls/payable_mint/payable_mint.rs +++ b/logics/impls/payable_mint/payable_mint.rs @@ -1,27 +1,17 @@ -pub use crate::traits::payable_mint::PayableMint; +use openbrush::traits::DefaultEnv; use openbrush::{ - contracts::{ - psp34::extensions::{ - enumerable::*, - }, - }, - traits::{ - AccountId, - Storage, - String - }, + contracts::psp34::*, + traits::{AccountId, String}, }; -impl PayableMint for T -where - T: Storage> - + psp34::extensions::metadata::PSP34Metadata - + psp34::Internal, -{ - default fn mint(&mut self, account: AccountId, id: Id) -> Result<(), PSP34Error> { +#[openbrush::trait_definition] +pub trait PayableMintImpl: psp34::InternalImpl { + #[ink(message, payable)] + 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"))) + return Err(PSP34Error::Custom(String::from("BadMintValue"))); } - self._mint_to(account, id) + + psp34::InternalImpl::_mint_to(self, account, id) } -} \ No newline at end of file +} diff --git a/logics/lib.rs b/logics/lib.rs index 78ec771..141abba 100644 --- a/logics/lib.rs +++ b/logics/lib.rs @@ -1,5 +1,4 @@ #![cfg_attr(not(feature = "std"), no_std)] -#![feature(min_specialization)] pub mod impls; -pub mod traits; \ No newline at end of file +pub mod traits; diff --git a/logics/traits/mod.rs b/logics/traits/mod.rs index 9f72851..a6be5d8 100644 --- a/logics/traits/mod.rs +++ b/logics/traits/mod.rs @@ -1 +1 @@ -pub mod payable_mint; \ No newline at end of file +pub mod payable_mint; diff --git a/logics/traits/payable_mint.rs b/logics/traits/payable_mint.rs index 700533c..35db86f 100644 --- a/logics/traits/payable_mint.rs +++ b/logics/traits/payable_mint.rs @@ -1,11 +1,6 @@ use openbrush::{ - contracts::{ - psp34::PSP34Error, - psp34::extensions::enumerable::* - }, - traits::{ - AccountId, - }, + contracts::{psp34::extensions::enumerable::*, psp34::PSP34Error}, + traits::AccountId, }; #[openbrush::wrapper] @@ -15,4 +10,4 @@ pub type PayableMintRef = dyn PayableMint; pub trait PayableMint { #[ink(message, payable)] fn mint(&mut self, account: AccountId, id: Id) -> Result<(), PSP34Error>; -} \ No newline at end of file +} From 789a0d002c8a81e42660df0c2929f93995e3ef17 Mon Sep 17 00:00:00 2001 From: Bobo Date: Fri, 28 Jul 2023 13:35:58 +0200 Subject: [PATCH 2/3] Cleanup --- contracts/shiden34/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/shiden34/lib.rs b/contracts/shiden34/lib.rs index 7e88300..82fdb6e 100644 --- a/contracts/shiden34/lib.rs +++ b/contracts/shiden34/lib.rs @@ -25,7 +25,7 @@ pub mod shiden34 { psp34::InternalImpl::_mint_to(self, account, id) } - impl payable_mint::PayableMintImpl for Shiden34 {} + impl payable_mint::PayableMintImpl for Shiden34 {} impl Shiden34 { #[ink(constructor)] From 1bce6767653540e45a9773f7be3b6d10e6c637aa Mon Sep 17 00:00:00 2001 From: Bobo Date: Fri, 28 Jul 2023 15:14:33 +0200 Subject: [PATCH 3/3] Fix --- contracts/shiden34/lib.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/contracts/shiden34/lib.rs b/contracts/shiden34/lib.rs index 82fdb6e..38261d9 100644 --- a/contracts/shiden34/lib.rs +++ b/contracts/shiden34/lib.rs @@ -32,8 +32,6 @@ pub mod shiden34 { pub fn new() -> Self { 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,