difftreelog
Merge pull request #144 from usetech-llc/feature/NFTPAR-413_inflation
in: master
Feature/nftpar 413 inflation
11 files changed
Cargo.lockdiffbeforeafterboth1# This file is automatically @generated by Cargo.1# This file is automatically @generated by Cargo.2# It is not intended for manual editing.2# It is not intended for manual editing.3version = 343[[package]]5[[package]]4name = "Inflector"6name = "Inflector"3606 "pallet-contracts-primitives",3608 "pallet-contracts-primitives",3607 "pallet-contracts-rpc-runtime-api",3609 "pallet-contracts-rpc-runtime-api",3608 "pallet-grandpa",3610 "pallet-grandpa",3611 "pallet-inflation",3609 "pallet-nft",3612 "pallet-nft",3610 "pallet-randomness-collective-flip",3613 "pallet-randomness-collective-flip",3611 "pallet-sudo",3614 "pallet-sudo",3919 "sp-std",3922 "sp-std",3920]3923]39243925[[package]]3926name = "pallet-inflation"3927version = "3.0.0"3928dependencies = [3929 "frame-benchmarking",3930 "frame-support",3931 "frame-system",3932 "pallet-balances",3933 "pallet-randomness-collective-flip",3934 "pallet-timestamp",3935 "parity-scale-codec",3936 "serde",3937 "sp-core",3938 "sp-io",3939 "sp-runtime",3940 "sp-std",3941]392139423922[[package]]3943[[package]]3923name = "pallet-nft"3944name = "pallet-nft"pallets/inflation/Cargo.tomldiffbeforeafterbothno changes
pallets/inflation/src/benchmarking.rsdiffbeforeafterbothno changes
pallets/inflation/src/lib.rsdiffbeforeafterbothno changes
pallets/inflation/src/tests.rsdiffbeforeafterbothno changes
pallets/nft/src/benchmarking.rsdiffbeforeafterboth1#[cfg(feature = "runtime-benchmarks")]1#![cfg(feature = "runtime-benchmarks")]2// mod benchmarking {23 use super::*;3use super::*;4use crate::Module as Nft;54 use sp_std::prelude::*;6use sp_std::prelude::*;5 use frame_system::RawOrigin;7use frame_system::RawOrigin;6 // use frame_support::{ensure, traits::OnFinalize};7 use frame_benchmarking::{benchmarks, account, whitelisted_caller}; // , TrackedStorageKey, 8use frame_benchmarking::{benchmarks, account, whitelisted_caller}; // , TrackedStorageKey, 8 use crate::Module as Nft;9910 const SEED: u32 = 1;10const SEED: u32 = 1;1111/*12 fn default_nft_data() -> CreateItemData {12fn default_nft_data() -> CreateItemData {13 CreateItemData::NFT(CreateNftData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })13 CreateItemData::NFT(CreateNftData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })14 }14}15 1516 fn default_fungible_data () -> CreateItemData {16fn default_fungible_data () -> CreateItemData {17 CreateItemData::Fungible(CreateFungibleData { })17 CreateItemData::Fungible(CreateFungibleData { })18 }18}19 1920 fn default_re_fungible_data () -> CreateItemData {20fn default_re_fungible_data () -> CreateItemData {21 CreateItemData::ReFungible(CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })21 CreateItemData::ReFungible(CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })22 }22}2323*/242425 benchmarks! {25benchmarks! {2627 _ {}282629 create_collection {27 create_collection {30 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();28 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();31 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();29 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();32 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();30 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();33 let mode: CollectionMode = CollectionMode::NFT;31 let mode: CollectionMode = CollectionMode::NFT;34 let caller: T::AccountId = account("caller", 0, SEED);32 let caller: T::AccountId = account("caller", 0, SEED);35 }: create_collection(RawOrigin::Signed(caller.clone()), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode)33 }: _(RawOrigin::Signed(caller.clone()), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode)36 verify {34/*37 assert_eq!(Nft::<T>::collection(2).owner, caller);35 verify {38 }36 assert_eq!(Nft::<T>::collection_id(2).owner, caller);3937 }40 destroy_collection {38 destroy_collection {41 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();39 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();42 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();40 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();43 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();41 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();44 let mode: CollectionMode = CollectionMode::NFT;42 let mode: CollectionMode = CollectionMode::NFT;45 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());43 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());46 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;44 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;47 }: destroy_collection(RawOrigin::Signed(caller.clone()), 2)45 }: _(RawOrigin::Signed(caller.clone()), 2)484649 add_to_white_list {47 add_to_white_list {50 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();48 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();51 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();49 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();52 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();50 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();53 let mode: CollectionMode = CollectionMode::NFT;51 let mode: CollectionMode = CollectionMode::NFT;54 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());52 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());55 let whitelist_account: T::AccountId = account("admin", 0, SEED);53 let whitelist_account: T::AccountId = account("admin", 0, SEED);56 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;54 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;57 }: add_to_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)55 }: add_to_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)585659 remove_from_white_list {57 remove_from_white_list {60 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();58 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();61 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();59 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();62 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();60 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();63 let mode: CollectionMode = CollectionMode::NFT;61 let mode: CollectionMode = CollectionMode::NFT;64 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());62 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());65 let whitelist_account: T::AccountId = account("admin", 0, SEED);63 let whitelist_account: T::AccountId = account("admin", 0, SEED);66 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;64 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;67 Nft::<T>::add_to_white_list(RawOrigin::Signed(caller.clone()).into(), 2, whitelist_account.clone())?;65 Nft::<T>::add_to_white_list(RawOrigin::Signed(caller.clone()).into(), 2, whitelist_account.clone())?;68 }: remove_from_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)66 }: remove_from_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)696770 set_public_access_mode {68 set_public_access_mode {71 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();69 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();72 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();70 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();73 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();71 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();74 let mode: CollectionMode = CollectionMode::NFT;72 let mode: CollectionMode = CollectionMode::NFT;75 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());73 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());76 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;74 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;77 }: set_public_access_mode(RawOrigin::Signed(caller.clone()), 2, AccessMode::WhiteList)75 }: set_public_access_mode(RawOrigin::Signed(caller.clone()), 2, AccessMode::WhiteList)787679 set_mint_permission {77 set_mint_permission {80 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();78 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();81 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();79 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();82 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();80 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();83 let mode: CollectionMode = CollectionMode::NFT;81 let mode: CollectionMode = CollectionMode::NFT;84 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());82 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());85 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;83 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;86 }: set_mint_permission(RawOrigin::Signed(caller.clone()), 2, true)84 }: set_mint_permission(RawOrigin::Signed(caller.clone()), 2, true)878588 change_collection_owner {86 change_collection_owner {89 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();87 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();90 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();88 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();91 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();89 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();92 let mode: CollectionMode = CollectionMode::NFT;90 let mode: CollectionMode = CollectionMode::NFT;93 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());91 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());94 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;92 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;95 let new_owner: T::AccountId = account("admin", 0, SEED);93 let new_owner: T::AccountId = account("admin", 0, SEED);96 }: change_collection_owner(RawOrigin::Signed(caller.clone()), 2, new_owner)94 }: change_collection_owner(RawOrigin::Signed(caller.clone()), 2, new_owner)979598 add_collection_admin {96 add_collection_admin {99 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();97 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();100 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();98 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();101 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();99 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();102 let mode: CollectionMode = CollectionMode::NFT;100 let mode: CollectionMode = CollectionMode::NFT;103 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());101 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());104 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;102 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;105 let new_admin: T::AccountId = account("admin", 0, SEED);103 let new_admin: T::AccountId = account("admin", 0, SEED);106 }: add_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)104 }: add_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)107105108 remove_collection_admin {106 remove_collection_admin {109 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();107 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();110 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();108 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();111 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();109 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();112 let mode: CollectionMode = CollectionMode::NFT;110 let mode: CollectionMode = CollectionMode::NFT;113 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());111 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());114 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;112 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;115 let new_admin: T::AccountId = account("admin", 0, SEED);113 let new_admin: T::AccountId = account("admin", 0, SEED);116 Nft::<T>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), 2, new_admin.clone())?;114 Nft::<T>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), 2, new_admin.clone())?;117 }: remove_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)115 }: remove_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)118116119 set_collection_sponsor {117 set_collection_sponsor {120 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();118 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();121 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();119 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();122 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();120 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();123 let mode: CollectionMode = CollectionMode::NFT;121 let mode: CollectionMode = CollectionMode::NFT;124 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());122 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());125 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;123 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;126 }: set_collection_sponsor(RawOrigin::Signed(caller.clone()), 2, caller.clone())124 }: set_collection_sponsor(RawOrigin::Signed(caller.clone()), 2, caller.clone())127125128 confirm_sponsorship {126 confirm_sponsorship {129 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();127 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();130 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();128 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();131 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();129 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();132 let mode: CollectionMode = CollectionMode::NFT;130 let mode: CollectionMode = CollectionMode::NFT;133 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());131 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());134 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;132 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;135 Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;133 Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;136 }: confirm_sponsorship(RawOrigin::Signed(caller.clone()), 2)134 }: confirm_sponsorship(RawOrigin::Signed(caller.clone()), 2)137135138 remove_collection_sponsor {136 remove_collection_sponsor {139 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();137 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();140 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();138 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();141 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();139 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();142 let mode: CollectionMode = CollectionMode::NFT;140 let mode: CollectionMode = CollectionMode::NFT;143 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());141 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());144 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;142 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;145 Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;143 Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;146 Nft::<T>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), 2)?;144 Nft::<T>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), 2)?;147 }: remove_collection_sponsor(RawOrigin::Signed(caller.clone()), 2)145 }: remove_collection_sponsor(RawOrigin::Signed(caller.clone()), 2)148146149 // nft item147 // nft item150 create_item_nft {148 create_item_nft {151 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();149 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();152 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();150 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();153 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();151 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();154 let mode: CollectionMode = CollectionMode::NFT;152 let mode: CollectionMode = CollectionMode::NFT;155 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());153 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());156 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;154 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;157 let data = default_nft_data();155 let data = default_nft_data();158 156 159 }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)157 }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)160158161 #[extra]159 #[extra]162 create_item_nft_large {160 create_item_nft_large {163 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();161 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();164 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();162 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();165 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();163 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();166 let mode: CollectionMode = CollectionMode::NFT;164 let mode: CollectionMode = CollectionMode::NFT;167 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());165 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());168 let mut nft_data = CreateNftData {166 let mut nft_data = CreateNftData {169 const_data: vec![],167 const_data: vec![],170 variable_data: vec![]168 variable_data: vec![]171 };169 };172 for i in 0..1998 {170 for i in 0..1998 {173 nft_data.const_data.push(10);171 nft_data.const_data.push(10);174 nft_data.variable_data.push(10);172 nft_data.variable_data.push(10);175 }173 }176 let data = CreateItemData::NFT(nft_data);174 let data = CreateItemData::NFT(nft_data);177 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;175 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;178176179 }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)177 }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)180178181 // fungible item179 // fungible item182 create_item_fungible {180 create_item_fungible {183 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();181 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();184 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();182 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();185 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();183 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();186 let mode: CollectionMode = CollectionMode::Fungible(3);184 let mode: CollectionMode = CollectionMode::Fungible(3);187 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());185 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());188 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;186 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;189 let data = default_fungible_data();187 let data = default_fungible_data();190188191 }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)189 }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)192190193 // refungible item191 // refungible item194 create_item_refungible {192 create_item_refungible {195 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();193 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();196 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();194 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();197 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();195 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();198 let mode: CollectionMode = CollectionMode::ReFungible(3);196 let mode: CollectionMode = CollectionMode::ReFungible(3);199 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());197 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());200 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;198 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;201 let data = default_re_fungible_data();199 let data = default_re_fungible_data();202200203 }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)201 }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)204202205 burn_item {203 burn_item {206 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();204 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();207 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();205 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();208 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();206 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();209 let mode: CollectionMode = CollectionMode::NFT;207 let mode: CollectionMode = CollectionMode::NFT;210 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());208 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());211 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;209 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;212 let data = default_nft_data();210 let data = default_nft_data();213 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;211 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;214212215 }: burn_item(RawOrigin::Signed(caller.clone()), 2, 1)213 }: burn_item(RawOrigin::Signed(caller.clone()), 2, 1)216214217 transfer_nft {215 transfer_nft {218 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();216 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();219 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();217 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();220 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();218 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();221 let mode: CollectionMode = CollectionMode::NFT;219 let mode: CollectionMode = CollectionMode::NFT;222 let recipient: T::AccountId = account("recipient", 0, SEED);220 let recipient: T::AccountId = account("recipient", 0, SEED);223 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());221 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());224 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;222 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;225 let data = default_nft_data();223 let data = default_nft_data();226 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;224 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;227225228 }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)226 }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)229 227 230 transfer_fungible {228 transfer_fungible {231 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();229 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();232 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();230 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();233 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();231 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();234 let mode: CollectionMode = CollectionMode::Fungible(3);232 let mode: CollectionMode = CollectionMode::Fungible(3);235 let recipient: T::AccountId = account("recipient", 0, SEED);233 let recipient: T::AccountId = account("recipient", 0, SEED);236 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());234 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());237 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;235 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;238 let data = default_fungible_data();236 let data = default_fungible_data();239 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;237 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;240238241 }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)239 }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)242240243 transfer_refungible {241 transfer_refungible {244 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();242 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();245 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();243 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();246 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();244 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();247 let mode: CollectionMode = CollectionMode::ReFungible(3);245 let mode: CollectionMode = CollectionMode::ReFungible(3);248 let recipient: T::AccountId = account("recipient", 0, SEED);246 let recipient: T::AccountId = account("recipient", 0, SEED);249 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());247 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());250 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;248 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;251 let data = default_re_fungible_data();249 let data = default_re_fungible_data();252 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;250 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;253251254 }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)252 }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)255253256 approve {254 approve {257 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();255 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();258 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();256 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();259 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();257 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();260 let mode: CollectionMode = CollectionMode::ReFungible(3);258 let mode: CollectionMode = CollectionMode::ReFungible(3);261 let recipient: T::AccountId = account("recipient", 0, SEED);259 let recipient: T::AccountId = account("recipient", 0, SEED);262 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());260 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());263 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;261 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;264 let data = default_re_fungible_data();262 let data = default_re_fungible_data();265 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;263 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;266264267 }: approve(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1)265 }: approve(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1)268266269 // Nft267 // Nft270 transfer_from_nft {268 transfer_from_nft {271 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();269 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();272 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();270 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();273 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();271 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();274 let mode: CollectionMode = CollectionMode::NFT;272 let mode: CollectionMode = CollectionMode::NFT;275 let recipient: T::AccountId = account("recipient", 0, SEED);273 let recipient: T::AccountId = account("recipient", 0, SEED);276 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());274 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());277 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;275 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;278 let data = default_nft_data();276 let data = default_nft_data();279 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;277 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;280 Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;278 Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;281279282 }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)280 }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)283281284 // Fungible282 // Fungible285 transfer_from_fungible {283 transfer_from_fungible {286 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();284 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();287 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();285 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();288 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();286 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();289 let mode: CollectionMode = CollectionMode::Fungible(3);287 let mode: CollectionMode = CollectionMode::Fungible(3);290 let recipient: T::AccountId = account("recipient", 0, SEED);288 let recipient: T::AccountId = account("recipient", 0, SEED);291 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());289 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());292 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;290 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;293 let data = default_fungible_data();291 let data = default_fungible_data();294 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;292 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;295 Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;293 Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;296294297 }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)295 }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)298296299 // ReFungible297 // ReFungible300 transfer_from_refungible {298 transfer_from_refungible {301 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();299 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();302 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();300 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();303 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();301 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();304 let mode: CollectionMode = CollectionMode::ReFungible(3);302 let mode: CollectionMode = CollectionMode::ReFungible(3);305 let recipient: T::AccountId = account("recipient", 0, SEED);303 let recipient: T::AccountId = account("recipient", 0, SEED);306 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());304 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());307 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;305 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;308 let data = default_re_fungible_data();306 let data = default_re_fungible_data();309 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;307 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;310 Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;308 Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;311309312 }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)310 }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)313311314 enable_contract_sponsoring {312 enable_contract_sponsoring {315 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());313 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());316314317 }: enable_contract_sponsoring(RawOrigin::Signed(caller.clone()), caller.clone(), true)315 }: enable_contract_sponsoring(RawOrigin::Signed(caller.clone()), caller.clone(), true)318316319 set_offchain_schema {317 set_offchain_schema {320 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();318 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();321 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();319 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();322 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();320 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();323 let mode: CollectionMode = CollectionMode::ReFungible(3);321 let mode: CollectionMode = CollectionMode::ReFungible(3);324 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());322 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());325 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;323 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;326324327 }: set_offchain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())325 }: set_offchain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())328326329 set_const_on_chain_schema {327 set_const_on_chain_schema {330 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();328 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();331 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();329 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();332 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();330 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();333 let mode: CollectionMode = CollectionMode::ReFungible(3);331 let mode: CollectionMode = CollectionMode::ReFungible(3);334 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());332 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());335 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;333 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;336 }: set_const_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())334 }: set_const_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())337 335 338 set_variable_on_chain_schema {336 set_variable_on_chain_schema {339 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();337 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();340 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();338 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();341 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();339 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();342 let mode: CollectionMode = CollectionMode::ReFungible(3);340 let mode: CollectionMode = CollectionMode::ReFungible(3);343 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());341 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());344 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;342 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;345 }: set_variable_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())343 }: set_variable_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())346344347 set_variable_meta_data {345 set_variable_meta_data {348 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();346 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();349 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();347 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();350 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();348 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();351 let mode: CollectionMode = CollectionMode::NFT;349 let mode: CollectionMode = CollectionMode::NFT;352 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());350 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());353 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;351 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;354 let data = default_nft_data();352 let data = default_nft_data();355 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;353 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;356354357 }: set_variable_meta_data(RawOrigin::Signed(caller.clone()), 2, 1, [1, 2, 3].to_vec())355 }: set_variable_meta_data(RawOrigin::Signed(caller.clone()), 2, 1, [1, 2, 3].to_vec())358356359 set_schema_version {357 set_schema_version {360 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();358 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();361 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();359 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();362 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();360 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();363 let mode: CollectionMode = CollectionMode::NFT;361 let mode: CollectionMode = CollectionMode::NFT;364 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());362 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());365 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;363 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;366 }: set_schema_version(RawOrigin::Signed(caller.clone()), 2, SchemaVersion::Unique)364 }: set_schema_version(RawOrigin::Signed(caller.clone()), 2, SchemaVersion::Unique)367365368 set_chain_limits {366 set_chain_limits {369 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());367 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());370 let limits = ChainLimits { 368 let limits = ChainLimits { 371 collection_numbers_limit: 0,369 collection_numbers_limit: 0,372 account_token_ownership_limit: 0,370 account_token_ownership_limit: 0,373 collections_admins_limit: 0,371 collections_admins_limit: 0,374 custom_data_limit: 0,372 custom_data_limit: 0,375 nft_sponsor_transfer_timeout: 0,373 nft_sponsor_transfer_timeout: 0,376 fungible_sponsor_transfer_timeout: 0,374 fungible_sponsor_transfer_timeout: 0,377 refungible_sponsor_transfer_timeout: 0375 refungible_sponsor_transfer_timeout: 0378 };376 };379 }: set_chain_limits(RawOrigin::Signed(caller.clone()), limits)377 }: set_chain_limits(RawOrigin::Signed(caller.clone()), limits)380378381 set_contract_sponsoring_rate_limit {379 set_contract_sponsoring_rate_limit {382 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();380 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();383 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();381 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();384 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();382 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();385 let mode: CollectionMode = CollectionMode::NFT;383 let mode: CollectionMode = CollectionMode::NFT;386 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());384 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());387 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;385 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;388 let block_number: T::BlockNumber = 0.into(); 386 let block_number: T::BlockNumber = 0.into(); 389 }: set_contract_sponsoring_rate_limit(RawOrigin::Signed(caller.clone()), caller.clone(), block_number)387 }: set_contract_sponsoring_rate_limit(RawOrigin::Signed(caller.clone()), caller.clone(), block_number)390388391 set_collection_limits{389 set_collection_limits{392 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();390 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();393 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();391 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();394 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();392 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();395 let mode: CollectionMode = CollectionMode::NFT;393 let mode: CollectionMode = CollectionMode::NFT;396 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());394 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());397 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;395 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;398 396 399 let cl = CollectionLimits {397 let cl = CollectionLimits {400 account_token_ownership_limit: 0,398 account_token_ownership_limit: 0,401 sponsored_data_size: 0,399 sponsored_data_size: 0,402 token_limit: 0,400 token_limit: 0,403 sponsor_transfer_timeout: 0401 sponsor_transfer_timeout: 0404 };402 };405403406 }: set_collection_limits(RawOrigin::Signed(caller.clone()), 2, cl)404 }: set_collection_limits(RawOrigin::Signed(caller.clone()), 2, cl)407405408 add_to_contract_white_list{406 add_to_contract_white_list{409 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());407 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());410 }: add_to_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())408 }: add_to_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())411409412 remove_from_contract_white_list{410 remove_from_contract_white_list{413 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());411 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());414 Nft::<T>::add_to_contract_white_list(RawOrigin::Signed(caller.clone()).into(), caller.clone(), caller.clone())?;412 Nft::<T>::add_to_contract_white_list(RawOrigin::Signed(caller.clone()).into(), caller.clone(), caller.clone())?;415 }: remove_from_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())413 }: remove_from_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())416414417 toggle_contract_white_list{415 toggle_contract_white_list{418 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());416 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());419 }: toggle_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), true)417 }: toggle_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), true)418*/420}419}420runtime/Cargo.tomldiffbeforeafterboth262627# local dependencies27# local dependencies28pallet-nft = { path = '../pallets/nft', default-features = false, version = '3.0.0' }28pallet-nft = { path = '../pallets/nft', default-features = false, version = '3.0.0' }29pallet-inflation = { path = '../pallets/inflation', default-features = false, version = '3.0.0' }293030# Substrate dependencies31# Substrate dependencies31frame-benchmarking = { default-features = false, optional = true, version = '3.0.0' }32frame-benchmarking = { default-features = false, optional = true, version = '3.0.0' }72 'pallet-balances/runtime-benchmarks',73 'pallet-balances/runtime-benchmarks',73 'pallet-timestamp/runtime-benchmarks',74 'pallet-timestamp/runtime-benchmarks',74 'pallet-nft/runtime-benchmarks',75 'pallet-nft/runtime-benchmarks',76 'pallet-inflation/runtime-benchmarks',75 'sp-runtime/runtime-benchmarks',77 'sp-runtime/runtime-benchmarks',76]78]77std = [79std = [95 'pallet-treasury/std',97 'pallet-treasury/std',96 'pallet-vesting/std',98 'pallet-vesting/std',9799100 'pallet-inflation/std',98 'pallet-nft/std',101 'pallet-nft/std',99 'sp-api/std',102 'sp-api/std',100 'sp-block-builder/std',103 'sp-block-builder/std',runtime/src/lib.rsdiffbeforeafterboth525 pub const CollectionCreationPrice: Balance = 100 * UNIQUE;525 pub const CollectionCreationPrice: Balance = 100 * UNIQUE;526}526}527527528/// Used for the module nft in `./nft.rs`528/// Used for the pallet nft in `./nft.rs`529impl pallet_nft::Config for Runtime {529impl pallet_nft::Config for Runtime {530 type Event = Event;530 type Event = Event;531 type WeightInfo = nft_weights::WeightInfo;531 type WeightInfo = nft_weights::WeightInfo;534 type TreasuryAccountId = TreasuryAccountId;534 type TreasuryAccountId = TreasuryAccountId;535}535}536537/// Reimport pallet inflation538extern crate pallet_inflation;539pub use pallet_inflation::*;540541parameter_types! {542 pub const InflationBlockInterval: BlockNumber = 100; // every time per how many blocks inflation is applied543}544545/// Used for the pallet inflation546impl pallet_inflation::Config for Runtime {547 type Currency = Balances;548 type TreasuryAccountId = TreasuryAccountId;549 type InflationBlockInterval = InflationBlockInterval;550}536551537construct_runtime!(552construct_runtime!(538 pub enum Runtime where553 pub enum Runtime where549 Balances: pallet_balances::{Module, Call, Storage, Config<T>, Event<T>},564 Balances: pallet_balances::{Module, Call, Storage, Config<T>, Event<T>},550 TransactionPayment: pallet_transaction_payment::{Module, Storage},565 TransactionPayment: pallet_transaction_payment::{Module, Storage},551 Sudo: pallet_sudo::{Module, Call, Config<T>, Storage, Event<T>},566 Sudo: pallet_sudo::{Module, Call, Config<T>, Storage, Event<T>},567 Inflation: pallet_inflation::{Module, Call, Storage},552 Nft: pallet_nft::{Module, Call, Config<T>, Storage, Event<T>},568 Nft: pallet_nft::{Module, Call, Config<T>, Storage, Event<T>},553 Treasury: pallet_treasury::{Module, Call, Storage, Config, Event<T>},569 Treasury: pallet_treasury::{Module, Call, Storage, Config, Event<T>},554 Vesting: pallet_vesting::{Module, Call, Config<T>, Storage, Event<T>},570 Vesting: pallet_vesting::{Module, Call, Config<T>, Storage, Event<T>},759 let params = (&config, &whitelist);775 let params = (&config, &whitelist);760776761 add_benchmark!(params, batches, pallet_nft, Nft);777 add_benchmark!(params, batches, pallet_nft, Nft);778 add_benchmark!(params, batches, pallet_inflation, Inflation);762779763 if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }780 if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }764 Ok(batches)781 Ok(batches)tests/package.jsondiffbeforeafterboth50 "testSetContractSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setContractSponsoringRateLimit.test.ts",50 "testSetContractSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setContractSponsoringRateLimit.test.ts",51 "testSetOffchainSchema": "mocha --timeout 9999999 -r ts-node/register ./**/setOffchainSchema.test.ts",51 "testSetOffchainSchema": "mocha --timeout 9999999 -r ts-node/register ./**/setOffchainSchema.test.ts",52 "testOverflow": "mocha --timeout 9999999 -r ts-node/register ./**/overflow.test.ts",52 "testOverflow": "mocha --timeout 9999999 -r ts-node/register ./**/overflow.test.ts",53 "testSetVariableMetadataSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetadataSponsoringRateLimit.test.ts"53 "testSetVariableMetadataSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetadataSponsoringRateLimit.test.ts",54 "testInflation": "mocha --timeout 9999999 -r ts-node/register ./**/inflation.test.ts"54 },55 },55 "author": "",56 "author": "",56 "license": "SEE LICENSE IN ../LICENSE",57 "license": "SEE LICENSE IN ../LICENSE",tests/src/creditFeesToTreasury.test.tsdiffbeforeafterboth18} from './util/helpers';18} from './util/helpers';191920import { default as waitNewBlocks } from './substrate/wait-new-blocks';20import { default as waitNewBlocks } from './substrate/wait-new-blocks';21import { ApiPromise } from '@polkadot/api';212222chai.use(chaiAsPromised);23chai.use(chaiAsPromised);23const expect = chai.expect;24const expect = chai.expect;30let alice: IKeyringPair;31let alice: IKeyringPair;31let bob: IKeyringPair;32let bob: IKeyringPair;3334// Skip the inflation block pauses if the block is close to inflation block 35// until the inflation happens36function skipInflationBlock(api: ApiPromise): Promise<void> {37 const promise = new Promise<void>(async (resolve, reject) => {38 const blockInterval = parseInt((await api.consts.inflation.inflationBlockInterval).toString());39 const unsubscribe = await api.rpc.chain.subscribeNewHeads(head => {40 const currentBlock = parseInt(head.number.toString());41 if (currentBlock % blockInterval < blockInterval - 10) {42 unsubscribe();43 resolve();44 } else {45 console.log(`Skipping inflation block, current block: ${currentBlock}`);46 }47 });48 });4950 return promise;51}325233describe('integration test: Fees must be credited to Treasury:', () => {53describe('integration test: Fees must be credited to Treasury:', () => {34 before(async () => {54 before(async () => {406041 it('Total issuance does not change', async () => {61 it('Total issuance does not change', async () => {42 await usingApi(async (api) => {62 await usingApi(async (api) => {63 await skipInflationBlock(api);43 await waitNewBlocks(api, 1);64 await waitNewBlocks(api, 1);446545 const totalBefore = new BigNumber((await api.query.balances.totalIssuance()).toString());66 const totalBefore = new BigNumber((await api.query.balances.totalIssuance()).toString());598060 it('Sender balance decreased by fee+sent amount, Treasury balance increased by fee', async () => {81 it('Sender balance decreased by fee+sent amount, Treasury balance increased by fee', async () => {61 await usingApi(async (api) => {82 await usingApi(async (api) => {83 await skipInflationBlock(api);62 await waitNewBlocks(api, 1);84 await waitNewBlocks(api, 1);638564 const alicePrivateKey = privateKey('//Alice');86 const alicePrivateKey = privateKey('//Alice');8110382 it('Treasury balance increased by failed tx fee', async () => {104 it('Treasury balance increased by failed tx fee', async () => {83 await usingApi(async (api) => {105 await usingApi(async (api) => {106 await skipInflationBlock(api);84 await waitNewBlocks(api, 1);107 await waitNewBlocks(api, 1);8510886 const bobPrivateKey = privateKey('//Bob');109 const bobPrivateKey = privateKey('//Bob');101124102 it('NFT Transactions also send fees to Treasury', async () => {125 it('NFT Transactions also send fees to Treasury', async () => {103 await usingApi(async (api) => {126 await usingApi(async (api) => {127 await skipInflationBlock(api);104 await waitNewBlocks(api, 1);128 await waitNewBlocks(api, 1);105129106 const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());130 const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());119143120 it('Fees are sane', async () => {144 it('Fees are sane', async () => {121 await usingApi(async (api) => {145 await usingApi(async (api) => {146 await skipInflationBlock(api);122 await waitNewBlocks(api, 1);147 await waitNewBlocks(api, 1);123148124 const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());149 const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());135160136 it('NFT Transfer fee is close to 0.1 Unique', async () => {161 it('NFT Transfer fee is close to 0.1 Unique', async () => {137 await usingApi(async (api) => {162 await usingApi(async (api) => {163 await skipInflationBlock(api);138 await waitNewBlocks(api, 1);164 await waitNewBlocks(api, 1);139165140 const collectionId = await createCollectionExpectSuccess();166 const collectionId = await createCollectionExpectSuccess();147173148 // console.log(fee.toString());174 // console.log(fee.toString());149 const expectedTransferFee = 0.1;175 const expectedTransferFee = 0.1;150 const tolerance = 0.00001;176 const tolerance = 0.001;151 expect(fee.dividedBy(1e15).minus(expectedTransferFee).abs().toNumber()).to.be.lessThan(tolerance);177 expect(fee.dividedBy(1e15).minus(expectedTransferFee).abs().toNumber()).to.be.lessThan(tolerance);152 });178 });153 });179 });tests/src/inflation.test.tsdiffbeforeafterbothno changes