git.delta.rocks / unique-network / refs/commits / 7a21a78fef2e

difftreelog

Code style update

str-mv2020-09-09parent: #d96245d.patch.diff
in: master

9 files changed

modifiednode/src/cli.rsdiffbeforeafterboth
--- a/node/src/cli.rs
+++ b/node/src/cli.rs
@@ -3,9 +3,9 @@
 
 #[derive(Debug, StructOpt)]
 pub struct Cli {
-	#[structopt(subcommand)]
-	pub subcommand: Option<Subcommand>,
+    #[structopt(subcommand)]
+    pub subcommand: Option<Subcommand>,
 
-	#[structopt(flatten)]
-	pub run: RunCmd,
+    #[structopt(flatten)]
+    pub run: RunCmd,
 }
modifiednode/src/command.rsdiffbeforeafterboth
--- a/node/src/command.rs
+++ b/node/src/command.rs
@@ -21,61 +21,57 @@
 use sc_cli::SubstrateCli;
 
 impl SubstrateCli for Cli {
-	fn impl_name() -> &'static str {
-		"Substrate Node"
-	}
+    fn impl_name() -> &'static str {
+        "Substrate Node"
+    }
 
-	fn impl_version() -> &'static str {
-		env!("SUBSTRATE_CLI_IMPL_VERSION")
-	}
+    fn impl_version() -> &'static str {
+        env!("SUBSTRATE_CLI_IMPL_VERSION")
+    }
 
-	fn description() -> &'static str {
-		env!("CARGO_PKG_DESCRIPTION")
-	}
+    fn description() -> &'static str {
+        env!("CARGO_PKG_DESCRIPTION")
+    }
 
-	fn author() -> &'static str {
-		env!("CARGO_PKG_AUTHORS")
-	}
+    fn author() -> &'static str {
+        env!("CARGO_PKG_AUTHORS")
+    }
 
-	fn support_url() -> &'static str {
-		"support.anonymous.an"
-	}
+    fn support_url() -> &'static str {
+        "support.anonymous.an"
+    }
 
-	fn copyright_start_year() -> i32 {
-		2017
-	}
+    fn copyright_start_year() -> i32 {
+        2017
+    }
 
-	fn executable_name() -> &'static str {
-		env!("CARGO_PKG_NAME")
-	}
+    fn executable_name() -> &'static str {
+        env!("CARGO_PKG_NAME")
+    }
 
-	fn load_spec(&self, id: &str) -> Result<Box<dyn sc_service::ChainSpec>, String> {
-		Ok(match id {
-			"dev" => Box::new(chain_spec::development_config()),
-			"" | "local" => Box::new(chain_spec::local_testnet_config()),
-			path => Box::new(chain_spec::ChainSpec::from_json_file(
-				std::path::PathBuf::from(path),
-			)?),
-		})
-	}
+    fn load_spec(&self, id: &str) -> Result<Box<dyn sc_service::ChainSpec>, String> {
+        Ok(match id {
+            "dev" => Box::new(chain_spec::development_config()),
+            "" | "local" => Box::new(chain_spec::local_testnet_config()),
+            path => Box::new(chain_spec::ChainSpec::from_json_file(
+                std::path::PathBuf::from(path),
+            )?),
+        })
+    }
 }
 
 /// Parse and run command line arguments
 pub fn run() -> sc_cli::Result<()> {
-	let cli = Cli::from_args();
+    let cli = Cli::from_args();
 
-	match &cli.subcommand {
-		Some(subcommand) => {
-			let runner = cli.create_runner(subcommand)?;
-			runner.run_subcommand(subcommand, |config| Ok(new_full_start!(config).0))
-		}
-		None => {
-			let runner = cli.create_runner(&cli.run)?;
-			runner.run_node(
-				service::new_light,
-				service::new_full,
-				nft_runtime::VERSION
-			)
-		}
-	}
-}
\ No newline at end of file
+    match &cli.subcommand {
+        Some(subcommand) => {
+            let runner = cli.create_runner(subcommand)?;
+            runner.run_subcommand(subcommand, |config| Ok(new_full_start!(config).0))
+        }
+        None => {
+            let runner = cli.create_runner(&cli.run)?;
+            runner.run_node(service::new_light, service::new_full, nft_runtime::VERSION)
+        }
+    }
+}
modifiednode/src/main.rsdiffbeforeafterboth
--- a/node/src/main.rs
+++ b/node/src/main.rs
@@ -8,5 +8,5 @@
 mod command;
 
 fn main() -> sc_cli::Result<()> {
-	command::run()
+    command::run()
 }
modifiednode/src/service.rsdiffbeforeafterboth
--- a/node/src/service.rs
+++ b/node/src/service.rs
@@ -188,7 +188,7 @@
             prometheus_registry: service.prometheus_registry(),
             shared_voter_state: SharedVoterState::empty(),
         };
-        
+
         // the GRANDPA voter task is considered infallible, i.e.
         // if it fails we take down the service with it.
         service.spawn_essential_task_handle().spawn_blocking(
modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
5
6use codec::{Decode, Encode};5use codec::{Decode, Encode};
7pub use frame_support::{6pub use frame_support::{
8 decl_event, decl_module, decl_storage,7 construct_runtime, decl_event, decl_module, decl_storage,
9 construct_runtime, parameter_types,8 dispatch::DispatchResult,
9 ensure, parameter_types,
10 traits::{Currency, Get, ExistenceRequirement, KeyOwnerProofSystem, OnUnbalanced, Randomness, WithdrawReason, Imbalance},10 traits::{
11 Currency, ExistenceRequirement, Get, Imbalance, KeyOwnerProofSystem, OnUnbalanced,
12 Randomness, WithdrawReason,
13 },
11 weights::{14 weights::{
12 DispatchInfo, PostDispatchInfo, constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},15 constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},
13 IdentityFee, Weight, WeightToFeePolynomial, GetDispatchInfo, Pays,16 DispatchInfo, GetDispatchInfo, IdentityFee, Pays, PostDispatchInfo, Weight,
17 WeightToFeePolynomial,
14 },18 },
15 StorageValue,
16 dispatch::DispatchResult,
17 IsSubType,19 IsSubType, StorageValue,
18 ensure
19};20};
2021
21use frame_system::{self as system, ensure_signed};22use frame_system::{self as system, ensure_signed};
22use sp_runtime::sp_std::prelude::Vec;23use sp_runtime::sp_std::prelude::Vec;
23use sp_std::prelude::*;
24use sp_runtime::{24use sp_runtime::{
25 FixedU128, FixedPointOperand,
26 transaction_validity::{25 traits::{
27 TransactionPriority, ValidTransaction, InvalidTransaction, TransactionValidityError, TransactionValidity26 DispatchInfoOf, Dispatchable, PostDispatchInfoOf, SaturatedConversion, Saturating,
27 SignedExtension, Zero,
28 },28 },
29 traits::{29 transaction_validity::{
30 Saturating, Dispatchable, DispatchInfoOf, PostDispatchInfoOf, SignedExtension, Zero, SaturatedConversion,30 InvalidTransaction, TransactionPriority, TransactionValidity, TransactionValidityError,
31 ValidTransaction,
31 },32 },
33 FixedPointOperand, FixedU128,
32};34};
35use sp_std::prelude::*;
3336
34#[cfg(test)]37#[cfg(test)]
35mod mock;38mod mock;
385 let target_collection = <Collection<T>>::get(collection_id);394 let target_collection = <Collection<T>>::get(collection_id);
386 Self::check_owner_or_admin_permissions(collection_id, sender.clone())?;395 Self::check_owner_or_admin_permissions(collection_id, sender.clone())?;
387396
388 // TODO: implement other modes
389 match target_collection.mode 397 match target_collection.mode
390 {398 {
391 CollectionMode::NFT(_) => {399 CollectionMode::NFT(_) => {
743 let target_collection = <Collection<T>>::get(collection_id);781 let target_collection = <Collection<T>>::get(collection_id);
744782
745 match target_collection.mode {783 match target_collection.mode {
746 CollectionMode::NFT(_) => <NftItemList<T>>::get(collection_id, item_id).owner == subject,784 CollectionMode::NFT(_) => {
785 <NftItemList<T>>::get(collection_id, item_id).owner == subject
786 }
747 CollectionMode::Fungible(_) => <FungibleItemList<T>>::get(collection_id, item_id).owner == subject,787 CollectionMode::Fungible(_) => {
788 <FungibleItemList<T>>::get(collection_id, item_id).owner == subject
789 }
748 CollectionMode::ReFungible(_, _) => <ReFungibleItemList<T>>::get(collection_id, item_id).owner.iter().any(|i| i.owner == subject),790 CollectionMode::ReFungible(_, _) => {
791 <ReFungibleItemList<T>>::get(collection_id, item_id)
792 .owner
793 .iter()
794 .any(|i| i.owner == subject)
795 }
749 CollectionMode::Invalid => false796 CollectionMode::Invalid => false,
750 }797 }
751 }798 }
752799
808 let item = FungibleItemType {861 let item = FungibleItemType {
809 collection: collection_id,862 collection: collection_id,
810 owner: new_owner.clone(),863 owner: new_owner.clone(),
811 value: val64864 value: val64,
812 };865 };
813866
814 Self::add_fungible_item(item)?;867 Self::add_fungible_item(item)?;
873 // new owner do not have account951 // new owner do not have account
874 new_full_item.owner.push(Ownership { owner: new_owner.clone(), fraction: val64});952 new_full_item.owner.push(Ownership {
953 owner: new_owner.clone(),
954 fraction: val64,
955 });
875 Self::add_token_index(collection_id, item_id, new_owner.clone())?;956 Self::add_token_index(collection_id, item_id, new_owner.clone())?;
876 }957 }
967pub type Multiplier = FixedU128;1058pub type Multiplier = FixedU128;
9681059
969type BalanceOf<T> =1060type BalanceOf<T> = <<T as transaction_payment::Trait>::Currency as Currency<
970 <<T as transaction_payment::Trait>::Currency as Currency<<T as system::Trait>::AccountId>>::Balance;1061 <T as system::Trait>::AccountId,
1062>>::Balance;
971type NegativeImbalanceOf<T> = <<T as transaction_payment::Trait>::Currency as Currency<1063type NegativeImbalanceOf<T> = <<T as transaction_payment::Trait>::Currency as Currency<
972 <T as system::Trait>::AccountId,>>::NegativeImbalance;1064 <T as system::Trait>::AccountId,
977/// in the queue.1068/// in the queue.
978#[derive(Encode, Decode, Clone, Eq, PartialEq)]1069#[derive(Encode, Decode, Clone, Eq, PartialEq)]
979pub struct ChargeTransactionPayment<T: transaction_payment::Trait + Send + Sync>(#[codec(compact)] BalanceOf<T>);1070pub struct ChargeTransactionPayment<T: transaction_payment::Trait + Send + Sync>(
1071 #[codec(compact)] BalanceOf<T>,
1072);
9801073
981impl<T:Trait + transaction_payment::Trait + Send + Sync> sp_std::fmt::Debug for ChargeTransactionPayment<T> {1074impl<T: Trait + transaction_payment::Trait + Send + Sync> sp_std::fmt::Debug
1021 // All other transactions have traditional fees so far1119 // All other transactions have traditional fees so far
1022 let fee = match call.is_sub_type() {1120 let fee = match call.is_sub_type() {
1023 Some(Call::create_collection(..)) => <BalanceOf<T>>::from(1_000_000_000),1121 Some(Call::create_collection(..)) => <BalanceOf<T>>::from(1_000_000_000),
1024 _ => Self::traditional_fee(len, info, tip)1122 _ => Self::traditional_fee(len, info, tip), // Flat fee model, use only for testing purposes
1025
1026 // Flat fee model, use only for testing purposes
1027 // _ => <BalanceOf<T>>::from(100)1123 // _ => <BalanceOf<T>>::from(100)
1032 let sponsor: T::AccountId = match call.is_sub_type() {1128 let sponsor: T::AccountId = match call.is_sub_type() {
1033 Some(Call::create_item(collection_id, _properties, _owner)) => {1129 Some(Call::create_item(collection_id, _properties, _owner)) => {
1034 <Collection<T>>::get(collection_id).sponsor1130 <Collection<T>>::get(collection_id).sponsor
1035 },1131 }
1036 Some(Call::transfer(_new_owner, collection_id, _item_id, _value)) => {1132 Some(Call::transfer(_new_owner, collection_id, _item_id, _value)) => {
1037 <Collection<T>>::get(collection_id).sponsor1133 <Collection<T>>::get(collection_id).sponsor
1038 },1134 }
10391135
1040 _ => T::AccountId::default()1136 _ => T::AccountId::default(),
1041 };1137 };
10421138
1043 let mut who_pays_fee: T::AccountId = sponsor.clone();1139 let mut who_pays_fee: T::AccountId = sponsor.clone();
1177 BalanceOf<T>,
1178 Self::AccountId,
1179 Option<NegativeImbalanceOf<T>>,
1180 BalanceOf<T>,
1181 );
1078 fn additional_signed(&self) -> sp_std::result::Result<(), TransactionValidityError> { Ok(()) }1182 fn additional_signed(&self) -> sp_std::result::Result<(), TransactionValidityError> {
1183 Ok(())
modifiedpallets/nft/src/mock.rsdiffbeforeafterboth
--- a/pallets/nft/src/mock.rs
+++ b/pallets/nft/src/mock.rs
@@ -1,19 +1,19 @@
 // Creating mock runtime here
 
 use crate::{Module, Trait};
+use frame_support::{
+    impl_outer_origin, parameter_types,
+    weights::{
+        constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight},
+        Weight,
+    },
+};
 use frame_system as system;
 use sp_core::H256;
 use sp_runtime::{
     testing::Header,
     traits::{BlakeTwo256, IdentityLookup, Saturating},
     Perbill,
-};
-use frame_support::{
-    parameter_types, impl_outer_origin,
-    weights::{
-        constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight},
-        Weight,
-    },
 };
 
 impl_outer_origin! {
@@ -49,9 +49,9 @@
     type MaximumBlockWeight = MaximumBlockWeight;
     type MaximumBlockLength = MaximumBlockLength;
     type AvailableBlockRatio = AvailableBlockRatio;
-    type BaseCallFilter = (); 
-    type DbWeight = RocksDbWeight; 
-    type BlockExecutionWeight = BlockExecutionWeight; 
+    type BaseCallFilter = ();
+    type DbWeight = RocksDbWeight;
+    type BlockExecutionWeight = BlockExecutionWeight;
     type ExtrinsicBaseWeight = ExtrinsicBaseWeight;
     type MaximumExtrinsicWeight = MaximumExtrinsicWeight;
     type Version = ();
modifiedpallets/nft/src/tests.rsdiffbeforeafterboth
--- a/pallets/nft/src/tests.rs
+++ b/pallets/nft/src/tests.rs
@@ -1,6 +1,6 @@
 // Tests to be written here
 use crate::mock::*;
-use crate::{CollectionMode, Ownership, ApprovePermissions};
+use crate::{ApprovePermissions, CollectionMode, Ownership};
 use frame_support::{assert_noop, assert_ok};
 
 #[test]
@@ -21,9 +21,13 @@
         ));
         assert_eq!(TemplateModule::collection(1).owner, 1);
 
-
-        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,2,3].to_vec(), 1));
-        assert_eq!(TemplateModule::nft_item_id(1,1).data, [1,2,3].to_vec());
+        assert_ok!(TemplateModule::create_item(
+            origin1.clone(),
+            1,
+            [1, 2, 3].to_vec(),
+            1
+        ));
+        assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());
     });
 }
 
@@ -45,10 +49,23 @@
         ));
         assert_eq!(TemplateModule::collection(1).owner, 1);
 
-
-        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,2,3].to_vec(), 1));
-        assert_eq!(TemplateModule::refungible_item_id(1,1).data, [1,2,3].to_vec());
-        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[0], Ownership { owner: 1, fraction: 1000 });
+        assert_ok!(TemplateModule::create_item(
+            origin1.clone(),
+            1,
+            [1, 2, 3].to_vec(),
+            1
+        ));
+        assert_eq!(
+            TemplateModule::refungible_item_id(1, 1).data,
+            [1, 2, 3].to_vec()
+        );
+        assert_eq!(
+            TemplateModule::refungible_item_id(1, 1).owner[0],
+            Ownership {
+                owner: 1,
+                fraction: 1000
+            }
+        );
     });
 }
 
@@ -70,10 +87,15 @@
         ));
         assert_eq!(TemplateModule::collection(1).owner, 1);
 
-        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [].to_vec(), 1));
-        assert_eq!(TemplateModule::fungible_item_id(1,1).owner, 1);
-        assert_eq!(TemplateModule::balance_count(1,1), 1000);
-        assert_eq!(TemplateModule::address_tokens(1,1), [1]);
+        assert_ok!(TemplateModule::create_item(
+            origin1.clone(),
+            1,
+            [].to_vec(),
+            1
+        ));
+        assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 1);
+        assert_eq!(TemplateModule::balance_count(1, 1), 1000);
+        assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
     });
 }
 
@@ -96,37 +118,42 @@
         ));
         assert_eq!(TemplateModule::collection(1).owner, 1);
 
-        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [].to_vec(), 1));
-        assert_eq!(TemplateModule::fungible_item_id(1,1).owner, 1);
-        assert_eq!(TemplateModule::balance_count(1,1), 1000);
-        assert_eq!(TemplateModule::address_tokens(1,1), [1]);
+        assert_ok!(TemplateModule::create_item(
+            origin1.clone(),
+            1,
+            [].to_vec(),
+            1
+        ));
+        assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 1);
+        assert_eq!(TemplateModule::balance_count(1, 1), 1000);
+        assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
 
         // change owner scenario
         assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));
-        assert_eq!(TemplateModule::fungible_item_id(1,1).owner, 2);
-        assert_eq!(TemplateModule::fungible_item_id(1,1).value, 1000);
-        assert_eq!(TemplateModule::balance_count(1,1), 0);
-        assert_eq!(TemplateModule::balance_count(1,2), 1000);
-        assert_eq!(TemplateModule::address_tokens(1,1), []);
-        assert_eq!(TemplateModule::address_tokens(1,2), [1]);
+        assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 2);
+        assert_eq!(TemplateModule::fungible_item_id(1, 1).value, 1000);
+        assert_eq!(TemplateModule::balance_count(1, 1), 0);
+        assert_eq!(TemplateModule::balance_count(1, 2), 1000);
+        assert_eq!(TemplateModule::address_tokens(1, 1), []);
+        assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
 
         // split item scenario
         assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 500));
-        assert_eq!(TemplateModule::fungible_item_id(1,1).owner, 2);
-        assert_eq!(TemplateModule::fungible_item_id(1,2).owner, 3);
-        assert_eq!(TemplateModule::balance_count(1,2), 500);
-        assert_eq!(TemplateModule::balance_count(1,3), 500);
-        assert_eq!(TemplateModule::address_tokens(1,2), [1]);
-        assert_eq!(TemplateModule::address_tokens(1,3), [2]);
+        assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 2);
+        assert_eq!(TemplateModule::fungible_item_id(1, 2).owner, 3);
+        assert_eq!(TemplateModule::balance_count(1, 2), 500);
+        assert_eq!(TemplateModule::balance_count(1, 3), 500);
+        assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
+        assert_eq!(TemplateModule::address_tokens(1, 3), [2]);
 
         // split item and new owner has account scenario
         assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 200));
-        assert_eq!(TemplateModule::fungible_item_id(1,1).value, 300);
-        assert_eq!(TemplateModule::fungible_item_id(1,2).value, 700);
-        assert_eq!(TemplateModule::balance_count(1,2), 300);
-        assert_eq!(TemplateModule::balance_count(1,3), 700);
-        assert_eq!(TemplateModule::address_tokens(1,2), [1]);
-        assert_eq!(TemplateModule::address_tokens(1,3), [2]);
+        assert_eq!(TemplateModule::fungible_item_id(1, 1).value, 300);
+        assert_eq!(TemplateModule::fungible_item_id(1, 2).value, 700);
+        assert_eq!(TemplateModule::balance_count(1, 2), 300);
+        assert_eq!(TemplateModule::balance_count(1, 3), 700);
+        assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
+        assert_eq!(TemplateModule::address_tokens(1, 3), [2]);
     });
 }
 
@@ -149,37 +176,81 @@
         ));
         assert_eq!(TemplateModule::collection(1).owner, 1);
 
-        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,2,3].to_vec(), 1));
-        assert_eq!(TemplateModule::refungible_item_id(1,1).data, [1,2,3].to_vec());
-        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[0], Ownership { owner: 1, fraction: 1000 });
-        assert_eq!(TemplateModule::balance_count(1,1), 1000);
-        assert_eq!(TemplateModule::address_tokens(1,1), [1]);
+        assert_ok!(TemplateModule::create_item(
+            origin1.clone(),
+            1,
+            [1, 2, 3].to_vec(),
+            1
+        ));
+        assert_eq!(
+            TemplateModule::refungible_item_id(1, 1).data,
+            [1, 2, 3].to_vec()
+        );
+        assert_eq!(
+            TemplateModule::refungible_item_id(1, 1).owner[0],
+            Ownership {
+                owner: 1,
+                fraction: 1000
+            }
+        );
+        assert_eq!(TemplateModule::balance_count(1, 1), 1000);
+        assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
 
         // change owner scenario
         assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));
-        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[0], Ownership { owner: 2, fraction: 1000 });
-        assert_eq!(TemplateModule::balance_count(1,1), 0);
-        assert_eq!(TemplateModule::balance_count(1,2), 1000);
-        assert_eq!(TemplateModule::address_tokens(1,1), []);
-        assert_eq!(TemplateModule::address_tokens(1,2), [1]);
+        assert_eq!(
+            TemplateModule::refungible_item_id(1, 1).owner[0],
+            Ownership {
+                owner: 2,
+                fraction: 1000
+            }
+        );
+        assert_eq!(TemplateModule::balance_count(1, 1), 0);
+        assert_eq!(TemplateModule::balance_count(1, 2), 1000);
+        assert_eq!(TemplateModule::address_tokens(1, 1), []);
+        assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
 
         // split item scenario
         assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 500));
-        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[0], Ownership { owner: 2, fraction: 500 });
-        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[1], Ownership { owner: 3, fraction: 500 });
-        assert_eq!(TemplateModule::balance_count(1,2), 500);
-        assert_eq!(TemplateModule::balance_count(1,3), 500);
-        assert_eq!(TemplateModule::address_tokens(1,2), [1]);
-        assert_eq!(TemplateModule::address_tokens(1,3), [1]);
+        assert_eq!(
+            TemplateModule::refungible_item_id(1, 1).owner[0],
+            Ownership {
+                owner: 2,
+                fraction: 500
+            }
+        );
+        assert_eq!(
+            TemplateModule::refungible_item_id(1, 1).owner[1],
+            Ownership {
+                owner: 3,
+                fraction: 500
+            }
+        );
+        assert_eq!(TemplateModule::balance_count(1, 2), 500);
+        assert_eq!(TemplateModule::balance_count(1, 3), 500);
+        assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
+        assert_eq!(TemplateModule::address_tokens(1, 3), [1]);
 
         // split item and new owner has account scenario
         assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 200));
-        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[0], Ownership { owner: 2, fraction: 300 });
-        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[1], Ownership { owner: 3, fraction: 700 });
-        assert_eq!(TemplateModule::balance_count(1,2), 300);
-        assert_eq!(TemplateModule::balance_count(1,3), 700);
-        assert_eq!(TemplateModule::address_tokens(1,2), [1]);
-        assert_eq!(TemplateModule::address_tokens(1,3), [1]);
+        assert_eq!(
+            TemplateModule::refungible_item_id(1, 1).owner[0],
+            Ownership {
+                owner: 2,
+                fraction: 300
+            }
+        );
+        assert_eq!(
+            TemplateModule::refungible_item_id(1, 1).owner[1],
+            Ownership {
+                owner: 3,
+                fraction: 700
+            }
+        );
+        assert_eq!(TemplateModule::balance_count(1, 2), 300);
+        assert_eq!(TemplateModule::balance_count(1, 3), 700);
+        assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
+        assert_eq!(TemplateModule::address_tokens(1, 3), [1]);
     });
 }
 
@@ -201,19 +272,23 @@
         ));
         assert_eq!(TemplateModule::collection(1).owner, 1);
 
+        assert_ok!(TemplateModule::create_item(
+            origin1.clone(),
+            1,
+            [1, 2, 3].to_vec(),
+            1
+        ));
+        assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());
+        assert_eq!(TemplateModule::balance_count(1, 1), 1);
+        assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
 
-        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,2,3].to_vec(), 1));
-        assert_eq!(TemplateModule::nft_item_id(1,1).data, [1,2,3].to_vec());
-        assert_eq!(TemplateModule::balance_count(1,1), 1);
-        assert_eq!(TemplateModule::address_tokens(1,1), [1]);
-
         // default scenario
         assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));
-        assert_eq!(TemplateModule::nft_item_id(1,1).owner, 2);
-        assert_eq!(TemplateModule::balance_count(1,1), 0);
-        assert_eq!(TemplateModule::balance_count(1,2), 1);
-        assert_eq!(TemplateModule::address_tokens(1,1), []);
-        assert_eq!(TemplateModule::address_tokens(1,2), [1]); 
+        assert_eq!(TemplateModule::nft_item_id(1, 1).owner, 2);
+        assert_eq!(TemplateModule::balance_count(1, 1), 0);
+        assert_eq!(TemplateModule::balance_count(1, 2), 1);
+        assert_eq!(TemplateModule::address_tokens(1, 1), []);
+        assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
     });
 }
 
@@ -235,12 +310,16 @@
             mode
         ));
         assert_eq!(TemplateModule::collection(1).owner, 1);
-
 
-        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,2,3].to_vec(), 1));
-        assert_eq!(TemplateModule::nft_item_id(1,1).data, [1,2,3].to_vec());
-        assert_eq!(TemplateModule::balance_count(1,1), 1);
-        assert_eq!(TemplateModule::address_tokens(1,1), [1]);
+        assert_ok!(TemplateModule::create_item(
+            origin1.clone(),
+            1,
+            [1, 2, 3].to_vec(),
+            1
+        ));
+        assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());
+        assert_eq!(TemplateModule::balance_count(1, 1), 1);
+        assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
 
         assert_noop!(
             TemplateModule::transfer_from(origin2.clone(), 1, 3, 1, 1, 1),
@@ -249,13 +328,26 @@
 
         // do approve
         assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));
-        assert_eq!(TemplateModule::approved(1,(1,1)).len(), 1);
+        assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);
         assert_ok!(TemplateModule::approve(origin1.clone(), 10, 1, 1));
-        assert_eq!(TemplateModule::approved(1,(1,1)).len(), 2);
-        assert_eq!(TemplateModule::approved(1,(1,1))[0], ApprovePermissions { approved: 2, amount: 100000000});
+        assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 2);
+        assert_eq!(
+            TemplateModule::approved(1, (1, 1))[0],
+            ApprovePermissions {
+                approved: 2,
+                amount: 100000000
+            }
+        );
 
-        assert_ok!(TemplateModule::transfer_from(origin2.clone(), 1, 3, 1, 1, 1));
-        assert_eq!(TemplateModule::approved(1,(1,1)).len(), 0);
+        assert_ok!(TemplateModule::transfer_from(
+            origin2.clone(),
+            1,
+            3,
+            1,
+            1,
+            1
+        ));
+        assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 0);
     });
 }
 
@@ -278,11 +370,25 @@
         ));
         assert_eq!(TemplateModule::collection(1).owner, 1);
 
-        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,2,3].to_vec(), 1));
-        assert_eq!(TemplateModule::refungible_item_id(1,1).data, [1,2,3].to_vec());
-        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[0], Ownership { owner: 1, fraction: 1000 });
-        assert_eq!(TemplateModule::balance_count(1,1), 1000);
-        assert_eq!(TemplateModule::address_tokens(1,1), [1]);
+        assert_ok!(TemplateModule::create_item(
+            origin1.clone(),
+            1,
+            [1, 2, 3].to_vec(),
+            1
+        ));
+        assert_eq!(
+            TemplateModule::refungible_item_id(1, 1).data,
+            [1, 2, 3].to_vec()
+        );
+        assert_eq!(
+            TemplateModule::refungible_item_id(1, 1).owner[0],
+            Ownership {
+                owner: 1,
+                fraction: 1000
+            }
+        );
+        assert_eq!(TemplateModule::balance_count(1, 1), 1000);
+        assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
 
         assert_noop!(
             TemplateModule::transfer_from(origin2.clone(), 1, 3, 1, 1, 1),
@@ -291,19 +397,38 @@
 
         // do approve
         assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));
-        assert_eq!(TemplateModule::approved(1,(1,1)).len(), 1);
+        assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);
         assert_ok!(TemplateModule::approve(origin1.clone(), 10, 1, 1));
-        assert_eq!(TemplateModule::approved(1,(1,1)).len(), 2);
-        assert_eq!(TemplateModule::approved(1,(1,1))[0], ApprovePermissions { approved: 2, amount: 100000000});
+        assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 2);
+        assert_eq!(
+            TemplateModule::approved(1, (1, 1))[0],
+            ApprovePermissions {
+                approved: 2,
+                amount: 100000000
+            }
+        );
 
-        assert_ok!(TemplateModule::transfer_from(origin2.clone(), 1, 3, 1, 1, 100));
-        assert_eq!(TemplateModule::balance_count(1,1), 900);
-        assert_eq!(TemplateModule::balance_count(1,3), 100);
-        assert_eq!(TemplateModule::address_tokens(1,1), [1]);
-        assert_eq!(TemplateModule::address_tokens(1,3), [1]);
+        assert_ok!(TemplateModule::transfer_from(
+            origin2.clone(),
+            1,
+            3,
+            1,
+            1,
+            100
+        ));
+        assert_eq!(TemplateModule::balance_count(1, 1), 900);
+        assert_eq!(TemplateModule::balance_count(1, 3), 100);
+        assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
+        assert_eq!(TemplateModule::address_tokens(1, 3), [1]);
 
-        assert_eq!(TemplateModule::approved(1,(1,1)).len(), 1);
-        assert_eq!(TemplateModule::approved(1,(1,1))[0], ApprovePermissions { approved: 10, amount: 100000000});
+        assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);
+        assert_eq!(
+            TemplateModule::approved(1, (1, 1))[0],
+            ApprovePermissions {
+                approved: 10,
+                amount: 100000000
+            }
+        );
     });
 }
 
@@ -326,10 +451,15 @@
         ));
         assert_eq!(TemplateModule::collection(1).owner, 1);
 
-        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [].to_vec(), 1));
-        assert_eq!(TemplateModule::fungible_item_id(1,1).owner, 1);
-        assert_eq!(TemplateModule::balance_count(1,1), 1000);
-        assert_eq!(TemplateModule::address_tokens(1,1), [1]);
+        assert_ok!(TemplateModule::create_item(
+            origin1.clone(),
+            1,
+            [].to_vec(),
+            1
+        ));
+        assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 1);
+        assert_eq!(TemplateModule::balance_count(1, 1), 1000);
+        assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
 
         assert_noop!(
             TemplateModule::transfer_from(origin2.clone(), 1, 3, 1, 1, 1),
@@ -338,28 +468,54 @@
 
         // do approve
         assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));
-        assert_eq!(TemplateModule::approved(1,(1,1)).len(), 1);
+        assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);
         assert_ok!(TemplateModule::approve(origin1.clone(), 10, 1, 1));
-        assert_eq!(TemplateModule::approved(1,(1,1)).len(), 2);
-        assert_eq!(TemplateModule::approved(1,(1,1))[0], ApprovePermissions { approved: 2, amount: 100000000});
+        assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 2);
+        assert_eq!(
+            TemplateModule::approved(1, (1, 1))[0],
+            ApprovePermissions {
+                approved: 2,
+                amount: 100000000
+            }
+        );
 
-        assert_ok!(TemplateModule::transfer_from(origin2.clone(), 1, 3, 1, 1, 100));
-        assert_eq!(TemplateModule::balance_count(1,1), 900);
-        assert_eq!(TemplateModule::balance_count(1,3), 100);
-        assert_eq!(TemplateModule::address_tokens(1,1), [1]);
-        assert_eq!(TemplateModule::address_tokens(1,3), [2]);
+        assert_ok!(TemplateModule::transfer_from(
+            origin2.clone(),
+            1,
+            3,
+            1,
+            1,
+            100
+        ));
+        assert_eq!(TemplateModule::balance_count(1, 1), 900);
+        assert_eq!(TemplateModule::balance_count(1, 3), 100);
+        assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
+        assert_eq!(TemplateModule::address_tokens(1, 3), [2]);
 
-        assert_eq!(TemplateModule::approved(1,(1,1)).len(), 1);
-        assert_eq!(TemplateModule::approved(1,(1,1))[0], ApprovePermissions { approved: 10, amount: 100000000});
+        assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);
+        assert_eq!(
+            TemplateModule::approved(1, (1, 1))[0],
+            ApprovePermissions {
+                approved: 10,
+                amount: 100000000
+            }
+        );
 
         assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));
-        assert_ok!(TemplateModule::transfer_from(origin2.clone(), 1, 3, 1, 1, 900));
-        assert_eq!(TemplateModule::balance_count(1,1), 0);
-        assert_eq!(TemplateModule::balance_count(1,3), 1000);
-        assert_eq!(TemplateModule::address_tokens(1,1), []);
-        assert_eq!(TemplateModule::address_tokens(1,3), [2]);
+        assert_ok!(TemplateModule::transfer_from(
+            origin2.clone(),
+            1,
+            3,
+            1,
+            1,
+            900
+        ));
+        assert_eq!(TemplateModule::balance_count(1, 1), 0);
+        assert_eq!(TemplateModule::balance_count(1, 3), 1000);
+        assert_eq!(TemplateModule::address_tokens(1, 1), []);
+        assert_eq!(TemplateModule::address_tokens(1, 3), [2]);
 
-        assert_eq!(TemplateModule::approved(1,(1,1)).len(), 0);
+        assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 0);
     });
 }
 
@@ -433,7 +589,7 @@
             1
         ));
 
-        assert_eq!(TemplateModule::nft_item_id(1,1).data, [1,2,3].to_vec());
+        assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());
 
         // check balance (collection with id = 1, user id = 1)
         assert_eq!(TemplateModule::balance_count(1, 1), 1);
@@ -509,11 +665,14 @@
         assert_ok!(TemplateModule::create_item(
             origin2.clone(),
             1,
-            [1,2,3].to_vec(),
+            [1, 2, 3].to_vec(),
             1
         ));
 
-        assert_eq!(TemplateModule::refungible_item_id(1,1).data, [1,2,3].to_vec());
+        assert_eq!(
+            TemplateModule::refungible_item_id(1, 1).data,
+            [1, 2, 3].to_vec()
+        );
 
         // check balance (collection with id = 1, user id = 2)
         assert_eq!(TemplateModule::balance_count(1, 1), 1000);
@@ -769,7 +928,14 @@
         // approve
         assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));
         assert_eq!(TemplateModule::approved(1, (1, 1))[0].approved, 2);
-        assert_ok!(TemplateModule::transfer_from(origin2.clone(), 1, 2, 1, 1, 1));
+        assert_ok!(TemplateModule::transfer_from(
+            origin2.clone(),
+            1,
+            2,
+            1,
+            1,
+            1
+        ));
 
         // after transfer
         assert_eq!(TemplateModule::balance_count(1, 1), 0);
modifiedruntime/build.rsdiffbeforeafterboth
--- a/runtime/build.rs
+++ b/runtime/build.rs
@@ -1,10 +1,10 @@
 use wasm_builder_runner::WasmBuilder;
 
 fn main() {
-	WasmBuilder::new()
-		.with_current_project()
-		.with_wasm_builder_from_crates("1.0.11")
-		.export_heap_base()
-		.import_memory()
-		.build()
+    WasmBuilder::new()
+        .with_current_project()
+        .with_wasm_builder_from_crates("1.0.11")
+        .export_heap_base()
+        .import_memory()
+        .build()
 }
modifiedruntime/src/lib.rsdiffbeforeafterboth
--- a/runtime/src/lib.rs
+++ b/runtime/src/lib.rs
@@ -16,11 +16,12 @@
 use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
 use sp_runtime::{
     create_runtime_str, generic, impl_opaque_keys,
+    traits::{
+        BlakeTwo256, Block as BlockT, IdentifyAccount, IdentityLookup, NumberFor, Saturating,
+        Verify,
+    },
     transaction_validity::{TransactionSource, TransactionValidity},
     ApplyExtrinsicResult, MultiSignature,
-	traits::{
-        BlakeTwo256, Block as BlockT, IdentifyAccount, IdentityLookup, NumberFor, Saturating, Verify,
-	},
 };
 use sp_std::prelude::*;
 #[cfg(feature = "std")]
@@ -31,22 +32,24 @@
 pub use balances::Call as BalancesCall;
 pub use contracts::Schedule as ContractsSchedule;
 pub use frame_support::{
-    construct_runtime, parameter_types,
-    traits::{Currency, Get, ExistenceRequirement, KeyOwnerProofSystem, OnUnbalanced, Randomness, WithdrawReason},
+    construct_runtime,
+    dispatch::DispatchResult,
+    parameter_types,
+    traits::{
+        Currency, ExistenceRequirement, Get, KeyOwnerProofSystem, OnUnbalanced, Randomness,
+        WithdrawReason,
+    },
     weights::{
-        DispatchInfo, PostDispatchInfo, constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},
-        IdentityFee, Weight, WeightToFeePolynomial, GetDispatchInfo, Pays,
+        constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},
+        DispatchInfo, GetDispatchInfo, IdentityFee, Pays, PostDispatchInfo, Weight,
+        WeightToFeePolynomial,
     },
     StorageValue,
-	dispatch::DispatchResult,
 };
-use system::{self as system};
 #[cfg(any(feature = "std", test))]
 pub use sp_runtime::BuildStorage;
-use sp_runtime::{
-	Perbill,
-};
-
+use sp_runtime::Perbill;
+use system::{self as system};
 
 pub use timestamp::Call as TimestampCall;
 
@@ -492,4 +495,3 @@
         }
     }
 }
-