From cd46563e1f10edca6a25711383d2da3fe1a3701b Mon Sep 17 00:00:00 2001
From: tuxmain <tuxmain@zettascript.org>
Date: Sun, 5 Jun 2022 17:12:03 +0200
Subject: [PATCH] style: replace tabs with spaces

---
 Cargo.toml                                 |   22 +-
 node/src/command.rs                        |    4 +-
 node/src/service.rs                        |    8 +-
 node/src/service/client.rs                 |   20 +-
 pallets/authority-members/Cargo.toml       |    6 +-
 pallets/certification/Cargo.toml           |    2 +-
 pallets/duniter-account/Cargo.toml         |    2 +-
 pallets/duniter-account/src/lib.rs         |    6 +-
 pallets/duniter-test-parameters/Cargo.toml |    2 +-
 pallets/duniter-wot/Cargo.toml             |    2 +-
 pallets/identity/Cargo.toml                |    2 +-
 pallets/membership/Cargo.toml              |    2 +-
 pallets/provide-randomness/Cargo.toml      |    2 +-
 pallets/ud-accounts-storage/Cargo.toml     |    2 +-
 pallets/universal-dividend/Cargo.toml      |    2 +-
 pallets/upgrade-origin/Cargo.toml          |    2 +-
 primitives/duniter/Cargo.toml              |    4 +-
 primitives/membership/Cargo.toml           |    4 +-
 runtime/common/Cargo.toml                  |    2 +-
 runtime/common/src/apis.rs                 |  432 ++++-----
 runtime/common/src/entities.rs             |   52 +-
 runtime/common/src/pallets_config.rs       | 1012 ++++++++++----------
 runtime/g1/Cargo.toml                      |   52 +-
 runtime/gdev/Cargo.toml                    |   52 +-
 runtime/gtest/Cargo.toml                   |   52 +-
 25 files changed, 874 insertions(+), 874 deletions(-)

diff --git a/Cargo.toml b/Cargo.toml
index d65ee7cec..e826d2d80 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -23,12 +23,12 @@ g1 = ["g1-runtime"]
 gdev = ["gdev-runtime"]
 gtest = ["gtest-runtime"]
 runtime-benchmarks = [
-	'g1-runtime',
-	'g1-runtime/runtime-benchmarks',
-	'gdev-runtime',
-	'gdev-runtime/runtime-benchmarks',
-	'gtest-runtime',
-	'gtest-runtime/runtime-benchmarks',
+    'g1-runtime',
+    'g1-runtime/runtime-benchmarks',
+    'gdev-runtime',
+    'gdev-runtime/runtime-benchmarks',
+    'gtest-runtime',
+    'gtest-runtime/runtime-benchmarks',
 ]
 try-runtime = [
 	"g1-runtime/try-runtime",
@@ -122,21 +122,21 @@ try-runtime-cli = { git = "https://github.com/librelois/substrate.git", branch =
 resolver = "2"
 
 members = [
-	'end2end-tests',
+    'end2end-tests',
     'pallets/certification',
     'pallets/duniter-test-parameters',
     'pallets/duniter-test-parameters/macro',
     'pallets/duniter-wot',
     'pallets/identity',
-	'pallets/membership',
-	'pallets/authority-members',
+    'pallets/membership',
+    'pallets/authority-members',
     'pallets/ud-accounts-storage',
     'pallets/universal-dividend',
-	'pallets/upgrade-origin',
+    'pallets/upgrade-origin',
     'primitives/membership',
     'runtime/common',
     'runtime/gdev',
-	'xtask',
+    'xtask',
 ]
 
 # The list of dependencies below (which can be both direct and indirect dependencies) are crates
diff --git a/node/src/command.rs b/node/src/command.rs
index 90d9ca2bc..750a3c0eb 100644
--- a/node/src/command.rs
+++ b/node/src/command.rs
@@ -7,7 +7,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-// 	http://www.apache.org/licenses/LICENSE-2.0
+// http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -266,7 +266,7 @@ pub fn run() -> sc_cli::Result<()> {
                 }
             } else {
                 Err("Benchmarking wasn't enabled when building the node. \
-				You can enable it with `--features runtime-benchmarks`."
+                    You can enable it with `--features runtime-benchmarks`."
                     .into())
             }
         }
diff --git a/node/src/service.rs b/node/src/service.rs
index 65e0e0da3..d3d68763b 100644
--- a/node/src/service.rs
+++ b/node/src/service.rs
@@ -545,10 +545,10 @@ where
                         let timestamp = sp_timestamp::InherentDataProvider::from_system_time();
 
                         let slot =
-							sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration(
-									*timestamp,
-									slot_duration,
-								);
+                            sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration(
+                                    *timestamp,
+                                    slot_duration,
+                                );
 
                         Ok((timestamp, slot, uncles))
                     }
diff --git a/node/src/service/client.rs b/node/src/service/client.rs
index 6abfbc56a..da65a7991 100644
--- a/node/src/service/client.rs
+++ b/node/src/service/client.rs
@@ -61,16 +61,16 @@ impl From<Arc<super::FullClient<gdev_runtime::RuntimeApi, super::GDevExecutor>>>
 }
 
 macro_rules! match_client {
-	($self:ident, $method:ident($($param:ident),*)) => {
-		match $self {
-			#[cfg(feature = "g1")]
-			Self::G1(client) => client.$method($($param),*),
-			#[cfg(feature = "gtest")]
-			Self::GTest(client) => client.$method($($param),*),
-			#[cfg(feature = "gdev")]
-			Self::GDev(client) => client.$method($($param),*),
-		}
-	};
+    ($self:ident, $method:ident($($param:ident),*)) => {
+        match $self {
+            #[cfg(feature = "g1")]
+            Self::G1(client) => client.$method($($param),*),
+            #[cfg(feature = "gtest")]
+            Self::GTest(client) => client.$method($($param),*),
+            #[cfg(feature = "gdev")]
+            Self::GDev(client) => client.$method($($param),*),
+        }
+    };
 }
 
 impl sc_client_api::UsageProvider<Block> for Client {
diff --git a/pallets/authority-members/Cargo.toml b/pallets/authority-members/Cargo.toml
index a3bd2700f..4ddbbc6bb 100644
--- a/pallets/authority-members/Cargo.toml
+++ b/pallets/authority-members/Cargo.toml
@@ -17,14 +17,14 @@ std = [
     'frame-support/std',
     'frame-system/std',
     'frame-benchmarking/std',
-	'log/std',
+    'log/std',
     'pallet-session/std',
     'serde',
     'sp-core/std',
     'sp-membership/std',
     'sp-runtime/std',
-	'sp-staking/std',
-	'sp-std/std',
+    'sp-staking/std',
+    'sp-std/std',
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/pallets/certification/Cargo.toml b/pallets/certification/Cargo.toml
index 8e821d9ac..20774a15c 100644
--- a/pallets/certification/Cargo.toml
+++ b/pallets/certification/Cargo.toml
@@ -20,7 +20,7 @@ std = [
     'serde',
     'sp-core/std',
     'sp-runtime/std',
-	'sp-std/std',
+    'sp-std/std',
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/pallets/duniter-account/Cargo.toml b/pallets/duniter-account/Cargo.toml
index 0bb55aa80..7bd145de7 100644
--- a/pallets/duniter-account/Cargo.toml
+++ b/pallets/duniter-account/Cargo.toml
@@ -24,7 +24,7 @@ std = [
     'sp-core/std',
     'sp-io/std',
     'sp-runtime/std',
-	'sp-std/std',
+    'sp-std/std',
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/pallets/duniter-account/src/lib.rs b/pallets/duniter-account/src/lib.rs
index c6f0a1888..0615fbd99 100644
--- a/pallets/duniter-account/src/lib.rs
+++ b/pallets/duniter-account/src/lib.rs
@@ -191,9 +191,9 @@ pub mod pallet {
                             );
                             T::OnUnbalanced::on_unbalanced(imbalance);
                             let request_id = pallet_provide_randomness::Pallet::<T>::force_request(
-								pallet_provide_randomness::RandomnessType::RandomnessFromTwoEpochsAgo,
-								H256(T::AccountIdToSalt::convert(account_id.clone())),
-							);
+                                pallet_provide_randomness::RandomnessType::RandomnessFromTwoEpochsAgo,
+                                H256(T::AccountIdToSalt::convert(account_id.clone())),
+                            );
                             PendingRandomIdAssignments::<T>::insert(request_id, account_id);
                             total_weight += 200_000;
                         }
diff --git a/pallets/duniter-test-parameters/Cargo.toml b/pallets/duniter-test-parameters/Cargo.toml
index 3e80d9453..6058421ef 100644
--- a/pallets/duniter-test-parameters/Cargo.toml
+++ b/pallets/duniter-test-parameters/Cargo.toml
@@ -18,7 +18,7 @@ std = [
     'frame-benchmarking/std',
     'serde',
     "sp-io/std",
-	"sp-std/std",
+    "sp-std/std",
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/pallets/duniter-wot/Cargo.toml b/pallets/duniter-wot/Cargo.toml
index 4851ee2b1..eea96cbea 100644
--- a/pallets/duniter-wot/Cargo.toml
+++ b/pallets/duniter-wot/Cargo.toml
@@ -25,7 +25,7 @@ std = [
     'sp-io/std',
     'sp-membership/std',
     'sp-runtime/std',
-	'sp-std/std',
+    'sp-std/std',
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/pallets/identity/Cargo.toml b/pallets/identity/Cargo.toml
index d5eac3102..9fc3fc9e6 100644
--- a/pallets/identity/Cargo.toml
+++ b/pallets/identity/Cargo.toml
@@ -20,7 +20,7 @@ std = [
     'serde',
     'sp-core/std',
     'sp-runtime/std',
-	'sp-std/std',
+    'sp-std/std',
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/pallets/membership/Cargo.toml b/pallets/membership/Cargo.toml
index 8fa13e2b8..18d8ba8b5 100644
--- a/pallets/membership/Cargo.toml
+++ b/pallets/membership/Cargo.toml
@@ -21,7 +21,7 @@ std = [
     'sp-core/std',
     'sp-membership/std',
     'sp-runtime/std',
-	'sp-std/std',
+    'sp-std/std',
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/pallets/provide-randomness/Cargo.toml b/pallets/provide-randomness/Cargo.toml
index f7d8a9f84..d3581c757 100644
--- a/pallets/provide-randomness/Cargo.toml
+++ b/pallets/provide-randomness/Cargo.toml
@@ -18,7 +18,7 @@ std = [
     'frame-benchmarking/std',
     "sp-core/std",
     "sp-io/std",
-	"sp-std/std",
+    "sp-std/std",
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/pallets/ud-accounts-storage/Cargo.toml b/pallets/ud-accounts-storage/Cargo.toml
index c0591fc74..3a7dc7135 100644
--- a/pallets/ud-accounts-storage/Cargo.toml
+++ b/pallets/ud-accounts-storage/Cargo.toml
@@ -17,7 +17,7 @@ std = [
     'frame-support/std',
     'frame-system/std',
     'frame-benchmarking/std',
-	"sp-std/std",
+    "sp-std/std",
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/pallets/universal-dividend/Cargo.toml b/pallets/universal-dividend/Cargo.toml
index a6b483655..fd100ced2 100644
--- a/pallets/universal-dividend/Cargo.toml
+++ b/pallets/universal-dividend/Cargo.toml
@@ -18,7 +18,7 @@ std = [
     'frame-benchmarking/std',
     "sp-arithmetic/std",
     "sp-io/std",
-	"sp-std/std",
+    "sp-std/std",
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/pallets/upgrade-origin/Cargo.toml b/pallets/upgrade-origin/Cargo.toml
index f235cbc95..52065c3f6 100644
--- a/pallets/upgrade-origin/Cargo.toml
+++ b/pallets/upgrade-origin/Cargo.toml
@@ -17,7 +17,7 @@ std = [
     'frame-system/std',
     'frame-benchmarking/std',
     "sp-io/std",
-	"sp-std/std",
+    "sp-std/std",
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/primitives/duniter/Cargo.toml b/primitives/duniter/Cargo.toml
index 18ccc04f9..e4e9820a0 100644
--- a/primitives/duniter/Cargo.toml
+++ b/primitives/duniter/Cargo.toml
@@ -14,8 +14,8 @@ default = ['std']
 std = [
     'codec/std',
     'frame-support/std',
-	'sp-runtime/std',
-	'sp-std/std',
+    'sp-runtime/std',
+    'sp-std/std',
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/primitives/membership/Cargo.toml b/primitives/membership/Cargo.toml
index 88755880e..a79dd7a28 100644
--- a/primitives/membership/Cargo.toml
+++ b/primitives/membership/Cargo.toml
@@ -15,8 +15,8 @@ std = [
     'codec/std',
     'frame-support/std',
     'serde',
-	'sp-runtime/std',
-	'sp-std/std',
+    'sp-runtime/std',
+    'sp-std/std',
 ]
 try-runtime = ['frame-support/try-runtime']
 
diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml
index 509b0b192..e26cc3c97 100644
--- a/runtime/common/Cargo.toml
+++ b/runtime/common/Cargo.toml
@@ -23,7 +23,7 @@ std = [
     'duniter-primitives/std',
     'frame-support/std',
     'frame-system/std',
-	'log/std',
+    'log/std',
     'pallet-authority-members/std',
     'pallet-babe/std',
     'pallet-certification/std',
diff --git a/runtime/common/src/apis.rs b/runtime/common/src/apis.rs
index 417eaac07..cb1321f87 100644
--- a/runtime/common/src/apis.rs
+++ b/runtime/common/src/apis.rs
@@ -16,135 +16,135 @@
 
 #[macro_export]
 macro_rules! runtime_apis {
-	{$($custom:tt)*} => {
-		impl_runtime_apis! {
-			$($custom)*
-
-			impl sp_authority_discovery::AuthorityDiscoveryApi<Block> for Runtime {
-				fn authorities() -> Vec<sp_authority_discovery::AuthorityId> {
-					AuthorityDiscovery::authorities()
-				}
-			}
-
-			impl sp_consensus_babe::BabeApi<Block> for Runtime {
-				fn configuration() -> sp_consensus_babe::BabeGenesisConfiguration {
-					// The choice of `c` parameter (where `1 - c` represents the
-					// probability of a slot being empty), is done in accordance to the
-					// slot duration and expected target block time, for safely
-					// resisting network delays of maximum two seconds.
-					// <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
-					use frame_support::traits::Get as _;
-					sp_consensus_babe::BabeGenesisConfiguration {
-						slot_duration: Babe::slot_duration(),
-						epoch_length: EpochDuration::get(),
-						c: BABE_GENESIS_EPOCH_CONFIG.c,
-						genesis_authorities: Babe::authorities().to_vec(),
-						randomness: Babe::randomness(),
-						allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots,
-					}
-				}
-
-				fn current_epoch_start() -> sp_consensus_babe::Slot {
-					Babe::current_epoch_start()
-				}
-
-				fn current_epoch() -> sp_consensus_babe::Epoch {
-					Babe::current_epoch()
-				}
-
-				fn next_epoch() -> sp_consensus_babe::Epoch {
-					Babe::next_epoch()
-				}
-
-				fn generate_key_ownership_proof(
-					_slot: sp_consensus_babe::Slot,
-					authority_id: sp_consensus_babe::AuthorityId,
-				) -> Option<sp_consensus_babe::OpaqueKeyOwnershipProof> {
-					use codec::Encode;
-
-					Historical::prove((sp_consensus_babe::KEY_TYPE, authority_id))
-						.map(|p| p.encode())
-						.map(sp_consensus_babe::OpaqueKeyOwnershipProof::new)
-				}
-
-				fn submit_report_equivocation_unsigned_extrinsic(
-					equivocation_proof: sp_consensus_babe::EquivocationProof<<Block as BlockT>::Header>,
-					key_owner_proof: sp_consensus_babe::OpaqueKeyOwnershipProof,
-				) -> Option<()> {
-					let key_owner_proof = key_owner_proof.decode()?;
-
-					Babe::submit_unsigned_equivocation_report(
-						equivocation_proof,
-						key_owner_proof,
-					)
-				}
-			}
-
-			impl sp_api::Core<Block> for Runtime {
-				fn version() -> RuntimeVersion {
-					VERSION
-				}
-
-				fn execute_block(block: Block) {
-					Executive::execute_block(block)
-				}
-
-				fn initialize_block(header: &<Block as BlockT>::Header) {
-					Executive::initialize_block(header)
-				}
-			}
-
-			impl sp_api::Metadata<Block> for Runtime {
-				fn metadata() -> OpaqueMetadata {
-					OpaqueMetadata::new(Runtime::metadata().into())
-				}
-			}
-
-			impl sp_block_builder::BlockBuilder<Block> for Runtime {
-				fn apply_extrinsic(extrinsic: <Block as BlockT>::Extrinsic) -> ApplyExtrinsicResult {
-					Executive::apply_extrinsic(extrinsic)
-				}
-
-				fn finalize_block() -> <Block as BlockT>::Header {
-					Executive::finalize_block()
-				}
-
-				fn inherent_extrinsics(
-					data: sp_inherents::InherentData,
-				) -> Vec<<Block as BlockT>::Extrinsic> {
-					data.create_extrinsics()
-				}
-
-				fn check_inherents(
-					block: Block,
-					data: sp_inherents::InherentData,
-				) -> sp_inherents::CheckInherentsResult {
-					data.check_extrinsics(&block)
-				}
-			}
-
-			impl sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> for Runtime {
-				fn validate_transaction(
-					source: TransactionSource,
-					tx: <Block as BlockT>::Extrinsic,
-					block_hash: <Block as BlockT>::Hash,
-				) -> TransactionValidity {
-					// Filtered calls should not enter the tx pool.
-					if !<Runtime as frame_system::Config>::BaseCallFilter::contains(&tx.function)
-					{
-						return sp_runtime::transaction_validity::InvalidTransaction::Call.into();
-					}
-					Executive::validate_transaction(source, tx, block_hash)
-				}
-			}
-
-			impl sp_offchain::OffchainWorkerApi<Block> for Runtime {
-				fn offchain_worker(header: &<Block as BlockT>::Header) {
-					Executive::offchain_worker(header)
-				}
-			}
-
-			impl sp_session::SessionKeys<Block> for Runtime {
+    {$($custom:tt)*} => {
+        impl_runtime_apis! {
+            $($custom)*
+
+            impl sp_authority_discovery::AuthorityDiscoveryApi<Block> for Runtime {
+                fn authorities() -> Vec<sp_authority_discovery::AuthorityId> {
+                    AuthorityDiscovery::authorities()
+                }
+            }
+
+            impl sp_consensus_babe::BabeApi<Block> for Runtime {
+                fn configuration() -> sp_consensus_babe::BabeGenesisConfiguration {
+                    // The choice of `c` parameter (where `1 - c` represents the
+                    // probability of a slot being empty), is done in accordance to the
+                    // slot duration and expected target block time, for safely
+                    // resisting network delays of maximum two seconds.
+                    // <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
+                    use frame_support::traits::Get as _;
+                    sp_consensus_babe::BabeGenesisConfiguration {
+                        slot_duration: Babe::slot_duration(),
+                        epoch_length: EpochDuration::get(),
+                        c: BABE_GENESIS_EPOCH_CONFIG.c,
+                        genesis_authorities: Babe::authorities().to_vec(),
+                        randomness: Babe::randomness(),
+                        allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots,
+                    }
+                }
+
+                fn current_epoch_start() -> sp_consensus_babe::Slot {
+                    Babe::current_epoch_start()
+                }
+
+                fn current_epoch() -> sp_consensus_babe::Epoch {
+                    Babe::current_epoch()
+                }
+
+                fn next_epoch() -> sp_consensus_babe::Epoch {
+                    Babe::next_epoch()
+                }
+
+                fn generate_key_ownership_proof(
+                    _slot: sp_consensus_babe::Slot,
+                    authority_id: sp_consensus_babe::AuthorityId,
+                ) -> Option<sp_consensus_babe::OpaqueKeyOwnershipProof> {
+                    use codec::Encode;
+
+                    Historical::prove((sp_consensus_babe::KEY_TYPE, authority_id))
+                        .map(|p| p.encode())
+                        .map(sp_consensus_babe::OpaqueKeyOwnershipProof::new)
+                }
+
+                fn submit_report_equivocation_unsigned_extrinsic(
+                    equivocation_proof: sp_consensus_babe::EquivocationProof<<Block as BlockT>::Header>,
+                    key_owner_proof: sp_consensus_babe::OpaqueKeyOwnershipProof,
+                ) -> Option<()> {
+                    let key_owner_proof = key_owner_proof.decode()?;
+
+                    Babe::submit_unsigned_equivocation_report(
+                        equivocation_proof,
+                        key_owner_proof,
+                    )
+                }
+            }
+
+            impl sp_api::Core<Block> for Runtime {
+                fn version() -> RuntimeVersion {
+                    VERSION
+                }
+
+                fn execute_block(block: Block) {
+                    Executive::execute_block(block)
+                }
+
+                fn initialize_block(header: &<Block as BlockT>::Header) {
+                    Executive::initialize_block(header)
+                }
+            }
+
+            impl sp_api::Metadata<Block> for Runtime {
+                fn metadata() -> OpaqueMetadata {
+                    OpaqueMetadata::new(Runtime::metadata().into())
+                }
+            }
+
+            impl sp_block_builder::BlockBuilder<Block> for Runtime {
+                fn apply_extrinsic(extrinsic: <Block as BlockT>::Extrinsic) -> ApplyExtrinsicResult {
+                    Executive::apply_extrinsic(extrinsic)
+                }
+
+                fn finalize_block() -> <Block as BlockT>::Header {
+                    Executive::finalize_block()
+                }
+
+                fn inherent_extrinsics(
+                    data: sp_inherents::InherentData,
+                ) -> Vec<<Block as BlockT>::Extrinsic> {
+                    data.create_extrinsics()
+                }
+
+                fn check_inherents(
+                    block: Block,
+                    data: sp_inherents::InherentData,
+                ) -> sp_inherents::CheckInherentsResult {
+                    data.check_extrinsics(&block)
+                }
+            }
+
+            impl sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> for Runtime {
+                fn validate_transaction(
+                    source: TransactionSource,
+                    tx: <Block as BlockT>::Extrinsic,
+                    block_hash: <Block as BlockT>::Hash,
+                ) -> TransactionValidity {
+                    // Filtered calls should not enter the tx pool.
+                    if !<Runtime as frame_system::Config>::BaseCallFilter::contains(&tx.function)
+                    {
+                        return sp_runtime::transaction_validity::InvalidTransaction::Call.into();
+                    }
+                    Executive::validate_transaction(source, tx, block_hash)
+                }
+            }
+
+            impl sp_offchain::OffchainWorkerApi<Block> for Runtime {
+                fn offchain_worker(header: &<Block as BlockT>::Header) {
+                    Executive::offchain_worker(header)
+                }
+            }
+
+            impl sp_session::SessionKeys<Block> for Runtime {
                 fn decode_session_keys(
                     encoded: Vec<u8>,
                 ) -> Option<Vec<(Vec<u8>, KeyTypeId)>> {
@@ -161,9 +161,9 @@ macro_rules! runtime_apis {
                     Grandpa::grandpa_authorities()
                 }
 
-				fn current_set_id() -> fg_primitives::SetId {
-					Grandpa::current_set_id()
-				}
+                fn current_set_id() -> fg_primitives::SetId {
+                    Grandpa::current_set_id()
+                }
 
                 fn submit_report_equivocation_unsigned_extrinsic(
                     _equivocation_proof: fg_primitives::EquivocationProof<
@@ -186,88 +186,88 @@ macro_rules! runtime_apis {
                 }
             }
 
-			impl frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Index> for Runtime {
-				fn account_nonce(account: AccountId) -> Index {
-					System::account_nonce(account)
-				}
-			}
-
-			impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
-			for Runtime {
-				fn query_info(
-					uxt: <Block as BlockT>::Extrinsic,
-					len: u32,
-				) -> pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo<Balance> {
-					TransactionPayment::query_info(uxt, len)
-				}
-
-				fn query_fee_details(
-					uxt: <Block as BlockT>::Extrinsic,
-					len: u32,
-				) -> pallet_transaction_payment::FeeDetails<Balance> {
-					TransactionPayment::query_fee_details(uxt, len)
-				}
-			}
-
-			#[cfg(feature = "try-runtime")]
-			impl frame_try_runtime::TryRuntime<Block> for Runtime {
-				fn on_runtime_upgrade() -> (Weight, Weight) {
-					log::info!("try-runtime::on_runtime_upgrade.");
-					let weight = Executive::try_runtime_upgrade().unwrap();
-					(weight, BlockWeights::get().max_block)
-				}
-
-				fn execute_block_no_check(block: Block) -> Weight {
-					Executive::execute_block_no_check(block)
-				}
-			}
-
-			#[cfg(feature = "runtime-benchmarks")]
-			impl frame_benchmarking::Benchmark<Block> for Runtime {
-				fn dispatch_benchmark(
-					config: frame_benchmarking::BenchmarkConfig,
-				) -> Result<Vec<frame_benchmarking::BenchmarkBatch>, sp_runtime::RuntimeString> {
-					use frame_benchmarking::{
-						add_benchmark, BenchmarkBatch, Benchmarking, TrackedStorageKey,
-					};
-
-					use frame_system_benchmarking::Pallet as SystemBench;
-					impl frame_system_benchmarking::Config for Runtime {}
-
-					use pallet_crowdloan_rewards::Pallet as PalletCrowdloanRewardsBench;
-					use parachain_staking::Pallet as ParachainStakingBench;
-					use pallet_author_mapping::Pallet as PalletAuthorMappingBench;
-					let whitelist: Vec<TrackedStorageKey> = vec![];
-
-					let mut batches = Vec::<BenchmarkBatch>::new();
-					let params = (&config, &whitelist);
-
-					add_benchmark!(
-						params,
-						batches,
-						parachain_staking,
-						ParachainStakingBench::<Runtime>
-					);
-					// add_benchmark!(
-					// 	params,
-					// 	batches,
-					// 	pallet_crowdloan_rewards,
-					// 	PalletCrowdloanRewardsBench::<Runtime>
-					// );
-					add_benchmark!(
-						params,
-						batches,
-						pallet_author_mapping,
-						PalletAuthorMappingBench::<Runtime>
-					);
-					add_benchmark!(params, batches, frame_system, SystemBench::<Runtime>);
-
-					if batches.is_empty() {
-						return Err("Benchmark not found for this pallet.".into());
-					}
-					Ok(batches)
-				}
-			}
-		}
-	};
+            impl frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Index> for Runtime {
+                fn account_nonce(account: AccountId) -> Index {
+                    System::account_nonce(account)
+                }
+            }
+
+            impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
+            for Runtime {
+                fn query_info(
+                    uxt: <Block as BlockT>::Extrinsic,
+                    len: u32,
+                ) -> pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo<Balance> {
+                    TransactionPayment::query_info(uxt, len)
+                }
+
+                fn query_fee_details(
+                    uxt: <Block as BlockT>::Extrinsic,
+                    len: u32,
+                ) -> pallet_transaction_payment::FeeDetails<Balance> {
+                    TransactionPayment::query_fee_details(uxt, len)
+                }
+            }
+
+            #[cfg(feature = "try-runtime")]
+            impl frame_try_runtime::TryRuntime<Block> for Runtime {
+                fn on_runtime_upgrade() -> (Weight, Weight) {
+                    log::info!("try-runtime::on_runtime_upgrade.");
+                    let weight = Executive::try_runtime_upgrade().unwrap();
+                    (weight, BlockWeights::get().max_block)
+                }
+
+                fn execute_block_no_check(block: Block) -> Weight {
+                    Executive::execute_block_no_check(block)
+                }
+            }
+
+            #[cfg(feature = "runtime-benchmarks")]
+            impl frame_benchmarking::Benchmark<Block> for Runtime {
+                fn dispatch_benchmark(
+                    config: frame_benchmarking::BenchmarkConfig,
+                ) -> Result<Vec<frame_benchmarking::BenchmarkBatch>, sp_runtime::RuntimeString> {
+                    use frame_benchmarking::{
+                        add_benchmark, BenchmarkBatch, Benchmarking, TrackedStorageKey,
+                    };
+
+                    use frame_system_benchmarking::Pallet as SystemBench;
+                    impl frame_system_benchmarking::Config for Runtime {}
+
+                    use pallet_crowdloan_rewards::Pallet as PalletCrowdloanRewardsBench;
+                    use parachain_staking::Pallet as ParachainStakingBench;
+                    use pallet_author_mapping::Pallet as PalletAuthorMappingBench;
+                    let whitelist: Vec<TrackedStorageKey> = vec![];
+
+                    let mut batches = Vec::<BenchmarkBatch>::new();
+                    let params = (&config, &whitelist);
+
+                    add_benchmark!(
+                        params,
+                        batches,
+                        parachain_staking,
+                        ParachainStakingBench::<Runtime>
+                    );
+                    // add_benchmark!(
+                    //     params,
+                    //     batches,
+                    //     pallet_crowdloan_rewards,
+                    //     PalletCrowdloanRewardsBench::<Runtime>
+                    // );
+                    add_benchmark!(
+                        params,
+                        batches,
+                        pallet_author_mapping,
+                        PalletAuthorMappingBench::<Runtime>
+                    );
+                    add_benchmark!(params, batches, frame_system, SystemBench::<Runtime>);
+
+                    if batches.is_empty() {
+                        return Err("Benchmark not found for this pallet.".into());
+                    }
+                    Ok(batches)
+                }
+            }
+        }
+    };
 }
diff --git a/runtime/common/src/entities.rs b/runtime/common/src/entities.rs
index 107b42589..df1f72cd0 100644
--- a/runtime/common/src/entities.rs
+++ b/runtime/common/src/entities.rs
@@ -22,37 +22,37 @@ use serde::{Deserialize, Serialize};
 
 #[macro_export]
 macro_rules! declare_session_keys {
-	{} => {
-		pub mod opaque {
-			use super::*;
+    {} => {
+        pub mod opaque {
+            use super::*;
 
-			impl_opaque_keys! {
-				pub struct SessionKeys {
-					pub grandpa: Grandpa,
-					pub babe: Babe,
-					pub im_online: ImOnline,
-					pub authority_discovery: AuthorityDiscovery,
-				}
-			}
+            impl_opaque_keys! {
+                pub struct SessionKeys {
+                    pub grandpa: Grandpa,
+                    pub babe: Babe,
+                    pub im_online: ImOnline,
+                    pub authority_discovery: AuthorityDiscovery,
+                }
+            }
 
-			#[derive(Clone, codec::Decode, Debug, codec::Encode, Eq, PartialEq)]
-			pub struct SessionKeysWrapper(pub SessionKeys);
+            #[derive(Clone, codec::Decode, Debug, codec::Encode, Eq, PartialEq)]
+            pub struct SessionKeysWrapper(pub SessionKeys);
 
-			impl From<SessionKeysWrapper> for SessionKeys {
-				fn from(keys_wrapper: SessionKeysWrapper) -> SessionKeys {
-					keys_wrapper.0
-				}
-			}
+            impl From<SessionKeysWrapper> for SessionKeys {
+                fn from(keys_wrapper: SessionKeysWrapper) -> SessionKeys {
+                    keys_wrapper.0
+                }
+            }
 
-			impl scale_info::TypeInfo for SessionKeysWrapper {
-				type Identity = [u8; 128];
+            impl scale_info::TypeInfo for SessionKeysWrapper {
+                type Identity = [u8; 128];
 
-				fn type_info() -> scale_info::Type {
-					Self::Identity::type_info()
-				}
-			}
-		}
-	}
+                fn type_info() -> scale_info::Type {
+                    Self::Identity::type_info()
+                }
+            }
+        }
+    }
 }
 
 #[cfg_attr(feature = "std", derive(Deserialize, Serialize))]
diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs
index d7407081c..e6c53f6f5 100644
--- a/runtime/common/src/pallets_config.rs
+++ b/runtime/common/src/pallets_config.rs
@@ -16,510 +16,510 @@
 
 #[macro_export]
 macro_rules! pallets_config {
-	{$($custom:tt)*} => {
-		$($custom)*
-
-		// SYSTEM //
-
-		parameter_types! {
-			pub const Version: RuntimeVersion = VERSION;
-		}
-
-		impl frame_system::Config for Runtime {
-			/// The basic call filter to use in dispatchable.
-			type BaseCallFilter = BaseCallFilter;
-			/// Block & extrinsics weights: base values and limits.
-			type BlockWeights = BlockWeights;
-			/// The maximum length of a block (in bytes).
-			type BlockLength = BlockLength;
-			/// The identifier used to distinguish between accounts.
-			type AccountId = AccountId;
-			/// The aggregated dispatch type that is available for extrinsics.
-			type Call = Call;
-			/// The lookup mechanism to get account ID from whatever is passed in dispatchers.
-			type Lookup = AccountIdLookup<AccountId, ()>;
-			/// The index type for storing how many extrinsics an account has signed.
-			type Index = Index;
-			/// The index type for blocks.
-			type BlockNumber = BlockNumber;
-			/// The type for hashing blocks and tries.
-			type Hash = Hash;
-			/// The hashing algorithm used.
-			type Hashing = BlakeTwo256;
-			/// The header type.
-			type Header = generic::Header<BlockNumber, BlakeTwo256>;
-			/// The ubiquitous event type.
-			type Event = Event;
-			/// The ubiquitous origin type.
-			type Origin = Origin;
-			/// Maximum number of block number to block hash mappings to keep (oldest pruned first).
-			type BlockHashCount = BlockHashCount;
-			/// The weight of database operations that the runtime can invoke.
-			type DbWeight = DbWeight;
-			/// Version of the runtime.
-			type Version = Version;
-			/// Converts a module to the index of the module in `construct_runtime!`.
-			///
-			/// This type is being generated by `construct_runtime!`.
-			type PalletInfo = PalletInfo;
-			/// What to do if a new account is created.
-			type OnNewAccount = ();
-			/// What to do if an account is fully reaped from the system.
-			type OnKilledAccount = ();
-			/// The data to be stored in an account.
-			type AccountData = pallet_duniter_account::AccountData<Balance>;
-			/// Weight information for the extrinsics of this pallet.
-			type SystemWeightInfo = frame_system::weights::SubstrateWeight<Runtime>;
-			/// This is used as an identifier of the chain. 42 is the generic substrate prefix.
-			type SS58Prefix = SS58Prefix;
-			/// The set code logic, just the default since we're not a parachain.
-			type OnSetCode = ();
-			type MaxConsumers = frame_support::traits::ConstU32<16>;
-		}
-
-		// SCHEDULER //
-
-		parameter_types! {
-			pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) *
-				BlockWeights::get().max_block;
-			pub const MaxScheduledPerBlock: u32 = 50;
-			pub const NoPreimagePostponement: Option<u32> = Some(10);
-		}
-		impl pallet_scheduler::Config for Runtime {
-			type Event = Event;
-			type Origin = Origin;
-			type PalletsOrigin = OriginCaller;
-			type Call = Call;
-			type MaximumWeight = MaximumSchedulerWeight;
-			type ScheduleOrigin = frame_system::EnsureSigned<AccountId>;
-			type OriginPrivilegeCmp = EqualPrivilegeOnly;
-			type MaxScheduledPerBlock = MaxScheduledPerBlock;
-			type WeightInfo = pallet_scheduler::weights::SubstrateWeight<Runtime>;
-			type PreimageProvider = Preimage;
-			type NoPreimagePostponement = ();
-		}
-
-		// ACCOUNT //
-
-		impl pallet_duniter_account::Config for Runtime {
-			type AccountIdToSalt = sp_runtime::traits::ConvertInto;
-			type Event = Event;
-			type MaxNewAccountsPerBlock = frame_support::pallet_prelude::ConstU32<1>;
-			type NewAccountPrice = frame_support::traits::ConstU64<300>;
-		}
-
-		// BLOCK CREATION //
-
-		impl pallet_babe::Config for Runtime {
-			type EpochDuration = EpochDuration;
-			type ExpectedBlockTime = ExpectedBlockTime;
-
-			// session module is the trigger
-			type EpochChangeTrigger = pallet_babe::ExternalTrigger;
-
-			type DisabledValidators = Session;
-
-			type KeyOwnerProofSystem = Historical;
-
-			type KeyOwnerProof = <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(
-				KeyTypeId,
-				pallet_babe::AuthorityId,
-			)>>::Proof;
-
-			type KeyOwnerIdentification = <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(
-				KeyTypeId,
-				pallet_babe::AuthorityId,
-			)>>::IdentificationTuple;
-
-			type HandleEquivocation =
-				pallet_babe::EquivocationHandler<Self::KeyOwnerIdentification, Offences, ReportLongevity>;
-
-			type WeightInfo = common_runtime::weights::pallet_babe::WeightInfo<Runtime>;
-
-			type MaxAuthorities = MaxAuthorities;
-		}
-
-		impl pallet_timestamp::Config for Runtime {
-			type Moment = u64;
-			type OnTimestampSet = Babe;
-			type MinimumPeriod = MinimumPeriod;
-			type WeightInfo = pallet_timestamp::weights::SubstrateWeight<Runtime>;
-		}
-
-		// MONEY MANAGEMENT //
-
-		impl pallet_balances::Config for Runtime {
-			type MaxLocks = MaxLocks;
-			type MaxReserves = frame_support::pallet_prelude::ConstU32<5>;
-			type ReserveIdentifier = [u8; 8];
-			/// The type for recording an account's balance.
-			type Balance = Balance;
-			/// The ubiquitous event type.
-			type Event = Event;
-			type DustRemoval = Treasury;
-			type ExistentialDeposit = ExistentialDeposit;
-			type AccountStore = Account;
-			type WeightInfo = pallet_balances::weights::SubstrateWeight<Runtime>;
-		}
-
-		pub struct HandleFees;
-		type NegativeImbalance = <Balances as frame_support::traits::Currency<AccountId>>::NegativeImbalance;
-		impl frame_support::traits::OnUnbalanced<NegativeImbalance> for HandleFees {
-			fn on_nonzero_unbalanced(amount: NegativeImbalance) {
-				use frame_support::traits::Currency as _;
-
-				if let Some(author) = Authorship::author() {
-					Balances::resolve_creating(&author, amount);
-				}
-			}
-		}
-		impl pallet_transaction_payment::Config for Runtime {
-			type OnChargeTransaction = CurrencyAdapter<Balances, HandleFees>;
-			type TransactionByteFee = TransactionByteFee;
-			type OperationalFeeMultiplier = frame_support::traits::ConstU8<5>;
-			type WeightToFee = common_runtime::fees::WeightToFeeImpl<Balance>;
-			type FeeMultiplierUpdate = ();
-		}
-
-		// CONSENSUS  //
-
-		impl pallet_authority_discovery::Config for Runtime {
-			type MaxAuthorities = MaxAuthorities;
-		}
-		impl pallet_authority_members::Config for Runtime {
-			type Event = Event;
-			type KeysWrapper = opaque::SessionKeysWrapper;
-			type IsMember = SmithsMembership;
-			type OnNewSession = OnNewSessionHandler<Runtime>;
-			type OnRemovedMember = OnRemovedAuthorityMemberHandler<Runtime>;
-			type MemberId = IdtyIndex;
-			type MemberIdOf = Identity;
-			type MaxAuthorities = MaxAuthorities;
-			type MaxKeysLife = frame_support::pallet_prelude::ConstU32<1_500>;
-			type MaxOfflineSessions = frame_support::pallet_prelude::ConstU32<2_400>;
-			type RemoveMemberOrigin = EnsureRoot<Self::AccountId>;
-		}
-		impl pallet_authorship::Config for Runtime {
-			type FindAuthor = pallet_session::FindAccountFromAuthorIndex<Self, Babe>;
-			type UncleGenerations = UncleGenerations;
-			type FilterUncle = ();
-			type EventHandler = ImOnline;
-		}
-		impl pallet_im_online::Config for Runtime {
-			type AuthorityId = ImOnlineId;
-			type Event = Event;
-			type ValidatorSet = Historical;
-			type NextSessionRotation = Babe;
-			type ReportUnresponsiveness = Offences;
-			type UnsignedPriority = ImOnlineUnsignedPriority;
-			type WeightInfo = pallet_im_online::weights::SubstrateWeight<Runtime>;
-			type MaxKeys = MaxAuthorities;
-			type MaxPeerInHeartbeats = MaxPeerInHeartbeats;
-			type MaxPeerDataEncodingSize = MaxPeerDataEncodingSize;
-		}
-		impl pallet_offences::Config for Runtime {
-			type Event = Event;
-			type IdentificationTuple = pallet_session::historical::IdentificationTuple<Self>;
-			type OnOffenceHandler = ();
-		}
-		impl pallet_session::Config for Runtime {
-			type Event = Event;
-			type ValidatorId = AccountId;
-			type ValidatorIdOf = sp_runtime::traits::ConvertInto;
-			type ShouldEndSession = Babe;
-			type NextSessionRotation = Babe;
-			type SessionManager = pallet_session::historical::NoteHistoricalRoot<Self, AuthorityMembers>;
-			type SessionHandler = <opaque::SessionKeys as OpaqueKeys>::KeyTypeIdProviders;
-			type Keys = opaque::SessionKeys;
-			type WeightInfo = pallet_session::weights::SubstrateWeight<Runtime>;
-		}
-		impl pallet_session::historical::Config for Runtime {
-			type FullIdentification = ValidatorFullIdentification;
-			type FullIdentificationOf = FullIdentificationOfImpl;
-		}
-		impl pallet_grandpa::Config for Runtime {
-			type Event = Event;
-			type Call = Call;
-
-			type KeyOwnerProofSystem = ();
-
-			type KeyOwnerProof =
-				<Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(KeyTypeId, GrandpaId)>>::Proof;
-
-			type KeyOwnerIdentification = <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(
-				KeyTypeId,
-				GrandpaId,
-			)>>::IdentificationTuple;
-
-			type HandleEquivocation = ();
-
-			type WeightInfo = common_runtime::weights::pallet_grandpa::WeightInfo<Runtime>;
-
-			type MaxAuthorities = MaxAuthorities;
-		}
-
-		// ONCHAIN GOVERNANCE //
-
-		impl pallet_upgrade_origin::Config for Runtime {
-			type Event = Event;
-			type Call = Call;
-			type UpgradableOrigin = pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, SmithsInstance>;
-		}
-
-		parameter_types! {
-			pub const PreimageMaxSize: u32 = 4096 * 1024;
-			pub const PreimageBaseDeposit: Balance = deposit(2, 64);
-			pub const PreimageByteDeposit: Balance = deposit(0, 1);
-		}
-
-		impl pallet_preimage::Config for Runtime {
-			type WeightInfo = pallet_preimage::weights::SubstrateWeight<Runtime>;
-			type Event = Event;
-			type Currency = Balances;
-			type ManagerOrigin = EnsureRoot<AccountId>;
-			type MaxSize = PreimageMaxSize;
-			type BaseDeposit = PreimageBaseDeposit;
-			type ByteDeposit = PreimageByteDeposit;
-		}
-
-		// UTILITIES //
-
-		impl pallet_atomic_swap::Config for Runtime {
-			type Event = Event;
-			type SwapAction = pallet_atomic_swap::BalanceSwapAction<AccountId, Balances>;
-			type ProofLimit = frame_support::traits::ConstU32<1_024>;
-		}
-
-		impl pallet_provide_randomness::Config for Runtime {
-			type Currency = Balances;
-			type Event = Event;
-			type GetCurrentEpochIndex = GetCurrentEpochIndex<Self>;
-			type MaxRequests = frame_support::traits::ConstU32<100>;
-			type RequestPrice = frame_support::traits::ConstU64<2_000>;
-			type OnFilledRandomness = Account;
-			type OnUnbalanced = Treasury;
-			type CurrentBlockRandomness = pallet_babe::CurrentBlockRandomness<Self>;
-			type RandomnessFromOneEpochAgo = pallet_babe::RandomnessFromOneEpochAgo<Self>;
-		}
-
-		parameter_types! {
-			// One storage item; key size 32, value size 8; .
-			pub const ProxyDepositBase: Balance = deposit(1, 8);
-			// Additional storage item size of 33 bytes.
-			pub const ProxyDepositFactor: Balance = deposit(0, 33);
-			pub const AnnouncementDepositBase: Balance = deposit(1, 8);
-			pub const AnnouncementDepositFactor: Balance = deposit(0, 66);
-		}
-		impl pallet_proxy::Config for Runtime {
-			type Event = Event;
-			type Call = Call;
-			type Currency = Balances;
-			type ProxyType = ProxyType;
-			type ProxyDepositBase = ProxyDepositBase;
-			type ProxyDepositFactor = ProxyDepositFactor;
-			type MaxProxies = frame_support::traits::ConstU32<32>;
-			type MaxPending = frame_support::traits::ConstU32<32>;
-			type CallHasher = BlakeTwo256;
-			type AnnouncementDepositBase = AnnouncementDepositBase;
-			type AnnouncementDepositFactor = AnnouncementDepositFactor;
-			type WeightInfo = pallet_proxy::weights::SubstrateWeight<Self>;
-		}
-
-		parameter_types! {
-			pub const DepositBase: Balance = DEPOSIT_PER_ITEM;
-			pub const DepositFactor: Balance = DEPOSIT_PER_BYTE * 32;
-		}
-		impl pallet_multisig::Config for Runtime {
-			type Event = Event;
-			type Call = Call;
-			type Currency = Balances;
-			type DepositBase = DepositBase;
-			type DepositFactor = DepositFactor;
-			type MaxSignatories = MaxSignatories;
-			type WeightInfo = pallet_multisig::weights::SubstrateWeight<Self>;
-		}
-
-		impl pallet_utility::Config for Runtime {
-			type Event = Event;
-			type Call = Call;
-			type PalletsOrigin = OriginCaller;
-			type WeightInfo = pallet_utility::weights::SubstrateWeight<Self>;
-		}
-
-		parameter_types! {
-			pub const Burn: Permill = Permill::zero();
-			pub const ProposalBond: Permill = Permill::from_percent(1);
-			pub const ProposalBondMaximum: Option<Balance> = None;
-			pub const SpendPeriod: BlockNumber = DAYS;
-			// Treasury account address:
-			// gdev/gtest: 5EYCAe5ijiYfyeZ2JJCGq56LmPyNRAKzpG4QkoQkkQNB5e6Z
-			pub const TreasuryPalletId: PalletId = PalletId(*b"py/trsry");
-		}
-		impl pallet_treasury::Config for Runtime {
-			type ApproveOrigin = TreasuryApproveOrigin;
-			type Burn = Burn;
-			type BurnDestination = ();
-			type Currency = Balances;
-			type Event = Event;
-			type OnSlash = Treasury;
-			type ProposalBond = ProposalBond;
-			type ProposalBondMinimum = frame_support::traits::ConstU64<10_000>;
-			type ProposalBondMaximum = ProposalBondMaximum;
-			type MaxApprovals = frame_support::traits::ConstU32<100>;
-			type PalletId = TreasuryPalletId;
-			type RejectOrigin = TreasuryRejectOrigin;
-			type SpendFunds = TreasurySpendFunds<Self>;
-			type SpendPeriod = SpendPeriod;
-			type WeightInfo = pallet_treasury::weights::SubstrateWeight<Self>;
-		}
-
-		// UNIVERSAL DIVIDEND //
-
-		impl pallet_universal_dividend::Config for Runtime {
-			type BlockNumberIntoBalance = sp_runtime::traits::ConvertInto;
-			type Currency = pallet_balances::Pallet<Runtime>;
-			type Event = Event;
-			type MembersCount = common_runtime::providers::UdAccountsProvider<Runtime>;
-			type MembersIds = common_runtime::providers::UdAccountsProvider<Runtime>;
-			type SquareMoneyGrowthRate = SquareMoneyGrowthRate;
-			type UdCreationPeriod = UdCreationPeriod;
-			type UdReevalPeriod = UdReevalPeriod;
-			type UnitsPerUd = frame_support::traits::ConstU64<1_000>;
-		}
-
-		impl pallet_ud_accounts_storage::Config for Runtime {}
-
-		// WEB OF TRUST //
-
-		use frame_support::instances::Instance1;
-		impl pallet_duniter_wot::Config<Instance1> for Runtime {
-			type FirstIssuableOn = WotFirstCertIssuableOn;
-			type IsSubWot = frame_support::traits::ConstBool<false>;
-			type MinCertForMembership = WotMinCertForMembership;
-			type MinCertForCreateIdtyRight = WotMinCertForCreateIdtyRight;
-		}
-
-		impl pallet_identity::Config for Runtime {
-			type ConfirmPeriod = ConfirmPeriod;
-			type Event = Event;
-			type EnsureIdtyCallAllowed = Wot;
-			type IdtyCreationPeriod = IdtyCreationPeriod;
-			type IdtyIndex = IdtyIndex;
-			type IdtyNameValidator = IdtyNameValidatorImpl;
-			type IdtyValidationOrigin = EnsureRoot<Self::AccountId>;
-			type IsMember = Membership;
-			type OnIdtyChange = Wot;
-			type RemoveIdentityConsumers = RemoveIdentityConsumersImpl<Self>;
-			type RevocationSigner = <Signature as sp_runtime::traits::Verify>::Signer;
-			type RevocationSignature = Signature;
-		}
-
-		impl pallet_membership::Config<frame_support::instances::Instance1> for Runtime {
-			type IsIdtyAllowedToRenewMembership = Wot;
-			type IsIdtyAllowedToRequestMembership = Wot;
-			type Event = Event;
-			type IdtyId = IdtyIndex;
-			type IdtyIdOf = Identity;
-			type MembershipPeriod = MembershipPeriod;
-			type MetaData = pallet_duniter_wot::MembershipMetaData<AccountId>;
-			type OnEvent = OnMembershipEventHandler<Wot, Runtime>;
-			type PendingMembershipPeriod = PendingMembershipPeriod;
-			type RenewablePeriod = RenewablePeriod;
-			type RevocationPeriod = frame_support::traits::ConstU32<0>;
-		}
-
-		impl pallet_certification::Config<Instance1> for Runtime {
-			type CertPeriod = CertPeriod;
-			type Event = Event;
-			type IdtyIndex = IdtyIndex;
-			type IdtyIndexOf = Identity;
-			type IsCertAllowed = Wot;
-			type MaxByIssuer = MaxByIssuer;
-			type MinReceivedCertToBeAbleToIssueCert = MinReceivedCertToBeAbleToIssueCert;
-			type OnNewcert = Wot;
-			type OnRemovedCert = Wot;
-			type CertRenewablePeriod = CertRenewablePeriod;
-			type ValidityPeriod = ValidityPeriod;
-		}
-
-		// SMITHS SUB-WOT //
-
-		use frame_support::instances::Instance2;
-		impl pallet_duniter_wot::Config<Instance2> for Runtime {
-			type FirstIssuableOn = SmithsWotFirstCertIssuableOn;
-			type IsSubWot = frame_support::traits::ConstBool<true>;
-			type MinCertForMembership = SmithsWotMinCertForMembership;
-			type MinCertForCreateIdtyRight = frame_support::traits::ConstU32<0>;
-		}
-
-		impl pallet_membership::Config<Instance2> for Runtime {
-			type IsIdtyAllowedToRenewMembership = ();
-			type IsIdtyAllowedToRequestMembership = ();
-			type Event = Event;
-			type IdtyId = IdtyIndex;
-			type IdtyIdOf = Identity;
-			type MembershipPeriod = SmithMembershipPeriod;
-			type MetaData = SmithsMembershipMetaData<opaque::SessionKeysWrapper>;
-			type OnEvent = OnSmithMembershipEventHandler<SmithsSubWot, Runtime>;
-			type PendingMembershipPeriod = SmithPendingMembershipPeriod;
-			type RenewablePeriod = SmithRenewablePeriod;
-			type RevocationPeriod = frame_support::traits::ConstU32<0>;
-		}
-
-		impl pallet_certification::Config<Instance2> for Runtime {
-			type CertPeriod = SmithCertPeriod;
-			type Event = Event;
-			type IdtyIndex = IdtyIndex;
-			type IdtyIndexOf = Identity;
-			type IsCertAllowed = SmithsSubWot;
-			type MaxByIssuer = SmithMaxByIssuer;
-			type MinReceivedCertToBeAbleToIssueCert = SmithMinReceivedCertToBeAbleToIssueCert;
-			type OnNewcert = SmithsSubWot;
-			type OnRemovedCert = SmithsSubWot;
-			type CertRenewablePeriod = SmithCertRenewablePeriod;
-			type ValidityPeriod = SmithValidityPeriod;
-		}
-
-		pub struct SmithMembersDefaultVote;
-		impl pallet_collective::DefaultVote for SmithMembersDefaultVote {
-			fn default_vote(
-				_prime_vote: Option<bool>,
-				_yes_votes: u32,
-				_no_votes: u32,
-				_len: u32,
-			) -> bool {
-				false
-			}
-		}
-		pub struct SmithMembersStorage;
-		impl sp_runtime::traits::IsMember<AccountId> for SmithMembersStorage {
-			fn is_member(account_id: &AccountId) -> bool {
-				use sp_runtime::traits::Convert as _;
-				if let Some(idty_index) = Identity::convert(account_id.clone()) {
-					pallet_membership::Pallet::<Runtime, Instance2>::is_member(&idty_index)
-				} else {
-					false
-				}
-			}
-		}
-		impl pallet_collective::MembersStorage<AccountId> for SmithMembersStorage {
-			fn members_count() -> u32 {
-				pallet_membership::Membership::<Runtime, Instance2>::count()
-			}
-		}
-		parameter_types! {
-			pub const SmithsMotionDuration: BlockNumber = 7 * DAYS;
-		}
-		impl pallet_collective::Config<Instance2> for Runtime {
-			type Origin = Origin;
-			type Proposal = Call;
-			type Event = Event;
-			type MotionDuration = SmithsMotionDuration;
-			type MaxProposals = frame_support::pallet_prelude::ConstU32<20>;
-			type MaxMembers = frame_support::pallet_prelude::ConstU32<1_000>;
-			type MembersStorage = SmithMembersStorage;
-			type DefaultVote = SmithMembersDefaultVote;
-			type WeightInfo = pallet_collective::weights::SubstrateWeight<Runtime>;
-		}
-	};
+    {$($custom:tt)*} => {
+        $($custom)*
+
+        // SYSTEM //
+
+        parameter_types! {
+            pub const Version: RuntimeVersion = VERSION;
+        }
+
+        impl frame_system::Config for Runtime {
+            /// The basic call filter to use in dispatchable.
+            type BaseCallFilter = BaseCallFilter;
+            /// Block & extrinsics weights: base values and limits.
+            type BlockWeights = BlockWeights;
+            /// The maximum length of a block (in bytes).
+            type BlockLength = BlockLength;
+            /// The identifier used to distinguish between accounts.
+            type AccountId = AccountId;
+            /// The aggregated dispatch type that is available for extrinsics.
+            type Call = Call;
+            /// The lookup mechanism to get account ID from whatever is passed in dispatchers.
+            type Lookup = AccountIdLookup<AccountId, ()>;
+            /// The index type for storing how many extrinsics an account has signed.
+            type Index = Index;
+            /// The index type for blocks.
+            type BlockNumber = BlockNumber;
+            /// The type for hashing blocks and tries.
+            type Hash = Hash;
+            /// The hashing algorithm used.
+            type Hashing = BlakeTwo256;
+            /// The header type.
+            type Header = generic::Header<BlockNumber, BlakeTwo256>;
+            /// The ubiquitous event type.
+            type Event = Event;
+            /// The ubiquitous origin type.
+            type Origin = Origin;
+            /// Maximum number of block number to block hash mappings to keep (oldest pruned first).
+            type BlockHashCount = BlockHashCount;
+            /// The weight of database operations that the runtime can invoke.
+            type DbWeight = DbWeight;
+            /// Version of the runtime.
+            type Version = Version;
+            /// Converts a module to the index of the module in `construct_runtime!`.
+            ///
+            /// This type is being generated by `construct_runtime!`.
+            type PalletInfo = PalletInfo;
+            /// What to do if a new account is created.
+            type OnNewAccount = ();
+            /// What to do if an account is fully reaped from the system.
+            type OnKilledAccount = ();
+            /// The data to be stored in an account.
+            type AccountData = pallet_duniter_account::AccountData<Balance>;
+            /// Weight information for the extrinsics of this pallet.
+            type SystemWeightInfo = frame_system::weights::SubstrateWeight<Runtime>;
+            /// This is used as an identifier of the chain. 42 is the generic substrate prefix.
+            type SS58Prefix = SS58Prefix;
+            /// The set code logic, just the default since we're not a parachain.
+            type OnSetCode = ();
+            type MaxConsumers = frame_support::traits::ConstU32<16>;
+        }
+
+        // SCHEDULER //
+
+        parameter_types! {
+            pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) *
+                BlockWeights::get().max_block;
+            pub const MaxScheduledPerBlock: u32 = 50;
+            pub const NoPreimagePostponement: Option<u32> = Some(10);
+        }
+        impl pallet_scheduler::Config for Runtime {
+            type Event = Event;
+            type Origin = Origin;
+            type PalletsOrigin = OriginCaller;
+            type Call = Call;
+            type MaximumWeight = MaximumSchedulerWeight;
+            type ScheduleOrigin = frame_system::EnsureSigned<AccountId>;
+            type OriginPrivilegeCmp = EqualPrivilegeOnly;
+            type MaxScheduledPerBlock = MaxScheduledPerBlock;
+            type WeightInfo = pallet_scheduler::weights::SubstrateWeight<Runtime>;
+            type PreimageProvider = Preimage;
+            type NoPreimagePostponement = ();
+        }
+
+        // ACCOUNT //
+
+        impl pallet_duniter_account::Config for Runtime {
+            type AccountIdToSalt = sp_runtime::traits::ConvertInto;
+            type Event = Event;
+            type MaxNewAccountsPerBlock = frame_support::pallet_prelude::ConstU32<1>;
+            type NewAccountPrice = frame_support::traits::ConstU64<300>;
+        }
+
+        // BLOCK CREATION //
+
+        impl pallet_babe::Config for Runtime {
+            type EpochDuration = EpochDuration;
+            type ExpectedBlockTime = ExpectedBlockTime;
+
+            // session module is the trigger
+            type EpochChangeTrigger = pallet_babe::ExternalTrigger;
+
+            type DisabledValidators = Session;
+
+            type KeyOwnerProofSystem = Historical;
+
+            type KeyOwnerProof = <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(
+                KeyTypeId,
+                pallet_babe::AuthorityId,
+            )>>::Proof;
+
+            type KeyOwnerIdentification = <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(
+                KeyTypeId,
+                pallet_babe::AuthorityId,
+            )>>::IdentificationTuple;
+
+            type HandleEquivocation =
+                pallet_babe::EquivocationHandler<Self::KeyOwnerIdentification, Offences, ReportLongevity>;
+
+            type WeightInfo = common_runtime::weights::pallet_babe::WeightInfo<Runtime>;
+
+            type MaxAuthorities = MaxAuthorities;
+        }
+
+        impl pallet_timestamp::Config for Runtime {
+            type Moment = u64;
+            type OnTimestampSet = Babe;
+            type MinimumPeriod = MinimumPeriod;
+            type WeightInfo = pallet_timestamp::weights::SubstrateWeight<Runtime>;
+        }
+
+        // MONEY MANAGEMENT //
+
+        impl pallet_balances::Config for Runtime {
+            type MaxLocks = MaxLocks;
+            type MaxReserves = frame_support::pallet_prelude::ConstU32<5>;
+            type ReserveIdentifier = [u8; 8];
+            /// The type for recording an account's balance.
+            type Balance = Balance;
+            /// The ubiquitous event type.
+            type Event = Event;
+            type DustRemoval = Treasury;
+            type ExistentialDeposit = ExistentialDeposit;
+            type AccountStore = Account;
+            type WeightInfo = pallet_balances::weights::SubstrateWeight<Runtime>;
+        }
+
+        pub struct HandleFees;
+        type NegativeImbalance = <Balances as frame_support::traits::Currency<AccountId>>::NegativeImbalance;
+        impl frame_support::traits::OnUnbalanced<NegativeImbalance> for HandleFees {
+            fn on_nonzero_unbalanced(amount: NegativeImbalance) {
+                use frame_support::traits::Currency as _;
+
+                if let Some(author) = Authorship::author() {
+                    Balances::resolve_creating(&author, amount);
+                }
+            }
+        }
+        impl pallet_transaction_payment::Config for Runtime {
+            type OnChargeTransaction = CurrencyAdapter<Balances, HandleFees>;
+            type TransactionByteFee = TransactionByteFee;
+            type OperationalFeeMultiplier = frame_support::traits::ConstU8<5>;
+            type WeightToFee = common_runtime::fees::WeightToFeeImpl<Balance>;
+            type FeeMultiplierUpdate = ();
+        }
+
+        // CONSENSUS  //
+
+        impl pallet_authority_discovery::Config for Runtime {
+            type MaxAuthorities = MaxAuthorities;
+        }
+        impl pallet_authority_members::Config for Runtime {
+            type Event = Event;
+            type KeysWrapper = opaque::SessionKeysWrapper;
+            type IsMember = SmithsMembership;
+            type OnNewSession = OnNewSessionHandler<Runtime>;
+            type OnRemovedMember = OnRemovedAuthorityMemberHandler<Runtime>;
+            type MemberId = IdtyIndex;
+            type MemberIdOf = Identity;
+            type MaxAuthorities = MaxAuthorities;
+            type MaxKeysLife = frame_support::pallet_prelude::ConstU32<1_500>;
+            type MaxOfflineSessions = frame_support::pallet_prelude::ConstU32<2_400>;
+            type RemoveMemberOrigin = EnsureRoot<Self::AccountId>;
+        }
+        impl pallet_authorship::Config for Runtime {
+            type FindAuthor = pallet_session::FindAccountFromAuthorIndex<Self, Babe>;
+            type UncleGenerations = UncleGenerations;
+            type FilterUncle = ();
+            type EventHandler = ImOnline;
+        }
+        impl pallet_im_online::Config for Runtime {
+            type AuthorityId = ImOnlineId;
+            type Event = Event;
+            type ValidatorSet = Historical;
+            type NextSessionRotation = Babe;
+            type ReportUnresponsiveness = Offences;
+            type UnsignedPriority = ImOnlineUnsignedPriority;
+            type WeightInfo = pallet_im_online::weights::SubstrateWeight<Runtime>;
+            type MaxKeys = MaxAuthorities;
+            type MaxPeerInHeartbeats = MaxPeerInHeartbeats;
+            type MaxPeerDataEncodingSize = MaxPeerDataEncodingSize;
+        }
+        impl pallet_offences::Config for Runtime {
+            type Event = Event;
+            type IdentificationTuple = pallet_session::historical::IdentificationTuple<Self>;
+            type OnOffenceHandler = ();
+        }
+        impl pallet_session::Config for Runtime {
+            type Event = Event;
+            type ValidatorId = AccountId;
+            type ValidatorIdOf = sp_runtime::traits::ConvertInto;
+            type ShouldEndSession = Babe;
+            type NextSessionRotation = Babe;
+            type SessionManager = pallet_session::historical::NoteHistoricalRoot<Self, AuthorityMembers>;
+            type SessionHandler = <opaque::SessionKeys as OpaqueKeys>::KeyTypeIdProviders;
+            type Keys = opaque::SessionKeys;
+            type WeightInfo = pallet_session::weights::SubstrateWeight<Runtime>;
+        }
+        impl pallet_session::historical::Config for Runtime {
+            type FullIdentification = ValidatorFullIdentification;
+            type FullIdentificationOf = FullIdentificationOfImpl;
+        }
+        impl pallet_grandpa::Config for Runtime {
+            type Event = Event;
+            type Call = Call;
+
+            type KeyOwnerProofSystem = ();
+
+            type KeyOwnerProof =
+                <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(KeyTypeId, GrandpaId)>>::Proof;
+
+            type KeyOwnerIdentification = <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(
+                KeyTypeId,
+                GrandpaId,
+            )>>::IdentificationTuple;
+
+            type HandleEquivocation = ();
+
+            type WeightInfo = common_runtime::weights::pallet_grandpa::WeightInfo<Runtime>;
+
+            type MaxAuthorities = MaxAuthorities;
+        }
+
+        // ONCHAIN GOVERNANCE //
+
+        impl pallet_upgrade_origin::Config for Runtime {
+            type Event = Event;
+            type Call = Call;
+            type UpgradableOrigin = pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, SmithsInstance>;
+        }
+
+        parameter_types! {
+            pub const PreimageMaxSize: u32 = 4096 * 1024;
+            pub const PreimageBaseDeposit: Balance = deposit(2, 64);
+            pub const PreimageByteDeposit: Balance = deposit(0, 1);
+        }
+
+        impl pallet_preimage::Config for Runtime {
+            type WeightInfo = pallet_preimage::weights::SubstrateWeight<Runtime>;
+            type Event = Event;
+            type Currency = Balances;
+            type ManagerOrigin = EnsureRoot<AccountId>;
+            type MaxSize = PreimageMaxSize;
+            type BaseDeposit = PreimageBaseDeposit;
+            type ByteDeposit = PreimageByteDeposit;
+        }
+
+        // UTILITIES //
+
+        impl pallet_atomic_swap::Config for Runtime {
+            type Event = Event;
+            type SwapAction = pallet_atomic_swap::BalanceSwapAction<AccountId, Balances>;
+            type ProofLimit = frame_support::traits::ConstU32<1_024>;
+        }
+
+        impl pallet_provide_randomness::Config for Runtime {
+            type Currency = Balances;
+            type Event = Event;
+            type GetCurrentEpochIndex = GetCurrentEpochIndex<Self>;
+            type MaxRequests = frame_support::traits::ConstU32<100>;
+            type RequestPrice = frame_support::traits::ConstU64<2_000>;
+            type OnFilledRandomness = Account;
+            type OnUnbalanced = Treasury;
+            type CurrentBlockRandomness = pallet_babe::CurrentBlockRandomness<Self>;
+            type RandomnessFromOneEpochAgo = pallet_babe::RandomnessFromOneEpochAgo<Self>;
+        }
+
+        parameter_types! {
+            // One storage item; key size 32, value size 8; .
+            pub const ProxyDepositBase: Balance = deposit(1, 8);
+            // Additional storage item size of 33 bytes.
+            pub const ProxyDepositFactor: Balance = deposit(0, 33);
+            pub const AnnouncementDepositBase: Balance = deposit(1, 8);
+            pub const AnnouncementDepositFactor: Balance = deposit(0, 66);
+        }
+        impl pallet_proxy::Config for Runtime {
+            type Event = Event;
+            type Call = Call;
+            type Currency = Balances;
+            type ProxyType = ProxyType;
+            type ProxyDepositBase = ProxyDepositBase;
+            type ProxyDepositFactor = ProxyDepositFactor;
+            type MaxProxies = frame_support::traits::ConstU32<32>;
+            type MaxPending = frame_support::traits::ConstU32<32>;
+            type CallHasher = BlakeTwo256;
+            type AnnouncementDepositBase = AnnouncementDepositBase;
+            type AnnouncementDepositFactor = AnnouncementDepositFactor;
+            type WeightInfo = pallet_proxy::weights::SubstrateWeight<Self>;
+        }
+
+        parameter_types! {
+            pub const DepositBase: Balance = DEPOSIT_PER_ITEM;
+            pub const DepositFactor: Balance = DEPOSIT_PER_BYTE * 32;
+        }
+        impl pallet_multisig::Config for Runtime {
+            type Event = Event;
+            type Call = Call;
+            type Currency = Balances;
+            type DepositBase = DepositBase;
+            type DepositFactor = DepositFactor;
+            type MaxSignatories = MaxSignatories;
+            type WeightInfo = pallet_multisig::weights::SubstrateWeight<Self>;
+        }
+
+        impl pallet_utility::Config for Runtime {
+            type Event = Event;
+            type Call = Call;
+            type PalletsOrigin = OriginCaller;
+            type WeightInfo = pallet_utility::weights::SubstrateWeight<Self>;
+        }
+
+        parameter_types! {
+            pub const Burn: Permill = Permill::zero();
+            pub const ProposalBond: Permill = Permill::from_percent(1);
+            pub const ProposalBondMaximum: Option<Balance> = None;
+            pub const SpendPeriod: BlockNumber = DAYS;
+            // Treasury account address:
+            // gdev/gtest: 5EYCAe5ijiYfyeZ2JJCGq56LmPyNRAKzpG4QkoQkkQNB5e6Z
+            pub const TreasuryPalletId: PalletId = PalletId(*b"py/trsry");
+        }
+        impl pallet_treasury::Config for Runtime {
+            type ApproveOrigin = TreasuryApproveOrigin;
+            type Burn = Burn;
+            type BurnDestination = ();
+            type Currency = Balances;
+            type Event = Event;
+            type OnSlash = Treasury;
+            type ProposalBond = ProposalBond;
+            type ProposalBondMinimum = frame_support::traits::ConstU64<10_000>;
+            type ProposalBondMaximum = ProposalBondMaximum;
+            type MaxApprovals = frame_support::traits::ConstU32<100>;
+            type PalletId = TreasuryPalletId;
+            type RejectOrigin = TreasuryRejectOrigin;
+            type SpendFunds = TreasurySpendFunds<Self>;
+            type SpendPeriod = SpendPeriod;
+            type WeightInfo = pallet_treasury::weights::SubstrateWeight<Self>;
+        }
+
+        // UNIVERSAL DIVIDEND //
+
+        impl pallet_universal_dividend::Config for Runtime {
+            type BlockNumberIntoBalance = sp_runtime::traits::ConvertInto;
+            type Currency = pallet_balances::Pallet<Runtime>;
+            type Event = Event;
+            type MembersCount = common_runtime::providers::UdAccountsProvider<Runtime>;
+            type MembersIds = common_runtime::providers::UdAccountsProvider<Runtime>;
+            type SquareMoneyGrowthRate = SquareMoneyGrowthRate;
+            type UdCreationPeriod = UdCreationPeriod;
+            type UdReevalPeriod = UdReevalPeriod;
+            type UnitsPerUd = frame_support::traits::ConstU64<1_000>;
+        }
+
+        impl pallet_ud_accounts_storage::Config for Runtime {}
+
+        // WEB OF TRUST //
+
+        use frame_support::instances::Instance1;
+        impl pallet_duniter_wot::Config<Instance1> for Runtime {
+            type FirstIssuableOn = WotFirstCertIssuableOn;
+            type IsSubWot = frame_support::traits::ConstBool<false>;
+            type MinCertForMembership = WotMinCertForMembership;
+            type MinCertForCreateIdtyRight = WotMinCertForCreateIdtyRight;
+        }
+
+        impl pallet_identity::Config for Runtime {
+            type ConfirmPeriod = ConfirmPeriod;
+            type Event = Event;
+            type EnsureIdtyCallAllowed = Wot;
+            type IdtyCreationPeriod = IdtyCreationPeriod;
+            type IdtyIndex = IdtyIndex;
+            type IdtyNameValidator = IdtyNameValidatorImpl;
+            type IdtyValidationOrigin = EnsureRoot<Self::AccountId>;
+            type IsMember = Membership;
+            type OnIdtyChange = Wot;
+            type RemoveIdentityConsumers = RemoveIdentityConsumersImpl<Self>;
+            type RevocationSigner = <Signature as sp_runtime::traits::Verify>::Signer;
+            type RevocationSignature = Signature;
+        }
+
+        impl pallet_membership::Config<frame_support::instances::Instance1> for Runtime {
+            type IsIdtyAllowedToRenewMembership = Wot;
+            type IsIdtyAllowedToRequestMembership = Wot;
+            type Event = Event;
+            type IdtyId = IdtyIndex;
+            type IdtyIdOf = Identity;
+            type MembershipPeriod = MembershipPeriod;
+            type MetaData = pallet_duniter_wot::MembershipMetaData<AccountId>;
+            type OnEvent = OnMembershipEventHandler<Wot, Runtime>;
+            type PendingMembershipPeriod = PendingMembershipPeriod;
+            type RenewablePeriod = RenewablePeriod;
+            type RevocationPeriod = frame_support::traits::ConstU32<0>;
+        }
+
+        impl pallet_certification::Config<Instance1> for Runtime {
+            type CertPeriod = CertPeriod;
+            type Event = Event;
+            type IdtyIndex = IdtyIndex;
+            type IdtyIndexOf = Identity;
+            type IsCertAllowed = Wot;
+            type MaxByIssuer = MaxByIssuer;
+            type MinReceivedCertToBeAbleToIssueCert = MinReceivedCertToBeAbleToIssueCert;
+            type OnNewcert = Wot;
+            type OnRemovedCert = Wot;
+            type CertRenewablePeriod = CertRenewablePeriod;
+            type ValidityPeriod = ValidityPeriod;
+        }
+
+        // SMITHS SUB-WOT //
+
+        use frame_support::instances::Instance2;
+        impl pallet_duniter_wot::Config<Instance2> for Runtime {
+            type FirstIssuableOn = SmithsWotFirstCertIssuableOn;
+            type IsSubWot = frame_support::traits::ConstBool<true>;
+            type MinCertForMembership = SmithsWotMinCertForMembership;
+            type MinCertForCreateIdtyRight = frame_support::traits::ConstU32<0>;
+        }
+
+        impl pallet_membership::Config<Instance2> for Runtime {
+            type IsIdtyAllowedToRenewMembership = ();
+            type IsIdtyAllowedToRequestMembership = ();
+            type Event = Event;
+            type IdtyId = IdtyIndex;
+            type IdtyIdOf = Identity;
+            type MembershipPeriod = SmithMembershipPeriod;
+            type MetaData = SmithsMembershipMetaData<opaque::SessionKeysWrapper>;
+            type OnEvent = OnSmithMembershipEventHandler<SmithsSubWot, Runtime>;
+            type PendingMembershipPeriod = SmithPendingMembershipPeriod;
+            type RenewablePeriod = SmithRenewablePeriod;
+            type RevocationPeriod = frame_support::traits::ConstU32<0>;
+        }
+
+        impl pallet_certification::Config<Instance2> for Runtime {
+            type CertPeriod = SmithCertPeriod;
+            type Event = Event;
+            type IdtyIndex = IdtyIndex;
+            type IdtyIndexOf = Identity;
+            type IsCertAllowed = SmithsSubWot;
+            type MaxByIssuer = SmithMaxByIssuer;
+            type MinReceivedCertToBeAbleToIssueCert = SmithMinReceivedCertToBeAbleToIssueCert;
+            type OnNewcert = SmithsSubWot;
+            type OnRemovedCert = SmithsSubWot;
+            type CertRenewablePeriod = SmithCertRenewablePeriod;
+            type ValidityPeriod = SmithValidityPeriod;
+        }
+
+        pub struct SmithMembersDefaultVote;
+        impl pallet_collective::DefaultVote for SmithMembersDefaultVote {
+            fn default_vote(
+                _prime_vote: Option<bool>,
+                _yes_votes: u32,
+                _no_votes: u32,
+                _len: u32,
+            ) -> bool {
+                false
+            }
+        }
+        pub struct SmithMembersStorage;
+        impl sp_runtime::traits::IsMember<AccountId> for SmithMembersStorage {
+            fn is_member(account_id: &AccountId) -> bool {
+                use sp_runtime::traits::Convert as _;
+                if let Some(idty_index) = Identity::convert(account_id.clone()) {
+                    pallet_membership::Pallet::<Runtime, Instance2>::is_member(&idty_index)
+                } else {
+                    false
+                }
+            }
+        }
+        impl pallet_collective::MembersStorage<AccountId> for SmithMembersStorage {
+            fn members_count() -> u32 {
+                pallet_membership::Membership::<Runtime, Instance2>::count()
+            }
+        }
+        parameter_types! {
+            pub const SmithsMotionDuration: BlockNumber = 7 * DAYS;
+        }
+        impl pallet_collective::Config<Instance2> for Runtime {
+            type Origin = Origin;
+            type Proposal = Call;
+            type Event = Event;
+            type MotionDuration = SmithsMotionDuration;
+            type MaxProposals = frame_support::pallet_prelude::ConstU32<20>;
+            type MaxMembers = frame_support::pallet_prelude::ConstU32<1_000>;
+            type MembersStorage = SmithMembersStorage;
+            type DefaultVote = SmithMembersDefaultVote;
+            type WeightInfo = pallet_collective::weights::SubstrateWeight<Runtime>;
+        }
+    };
 }
diff --git a/runtime/g1/Cargo.toml b/runtime/g1/Cargo.toml
index 974556439..7fd344106 100644
--- a/runtime/g1/Cargo.toml
+++ b/runtime/g1/Cargo.toml
@@ -34,11 +34,11 @@ std = [
     'frame-support/std',
     'frame-system-rpc-runtime-api/std',
     'frame-system/std',
-	"frame-try-runtime/std",
-	'pallet-atomic-swap/std',
-	'log/std',
-	'pallet-authority-discovery/std',
-	'pallet-authority-members/std',
+    "frame-try-runtime/std",
+    'pallet-atomic-swap/std',
+    'log/std',
+    'pallet-authority-discovery/std',
+    'pallet-authority-members/std',
     'pallet-babe/std',
     'pallet-balances/std',
     'pallet-certification/std',
@@ -49,7 +49,7 @@ std = [
     'pallet-grandpa/std',
     'pallet-identity/std',
     'pallet-membership/std',
-	'pallet-provide-randomness/std',
+    'pallet-provide-randomness/std',
     'pallet-im-online/std',
     'pallet-multisig/std',
     'pallet-preimage/std',
@@ -66,7 +66,7 @@ std = [
     'serde',
     'sp-api/std',
     'sp-arithmetic/std',
-	'sp-authority-discovery/std',
+    'sp-authority-discovery/std',
     'sp-block-builder/std',
     'sp-consensus-babe/std',
     'sp-core/std',
@@ -80,25 +80,25 @@ std = [
     'sp-version/std',
 ]
 try-runtime = [
-	"frame-executive/try-runtime",
-	"frame-try-runtime",
-	"frame-system/try-runtime",
-	"pallet-authority-discovery/try-runtime",
-	"pallet-authorship/try-runtime",
-	"pallet-balances/try-runtime",
-	"pallet-transaction-payment/try-runtime",
-	"pallet-collective/try-runtime",
-	"pallet-grandpa/try-runtime",
-	"pallet-im-online/try-runtime",
-	"pallet-multisig/try-runtime",
-	"pallet-offences/try-runtime",
-	"pallet-proxy/try-runtime",
-	"pallet-scheduler/try-runtime",
-	"pallet-session/try-runtime",
-	"pallet-timestamp/try-runtime",
-	"pallet-treasury/try-runtime",
-	"pallet-babe/try-runtime",
-	"pallet-utility/try-runtime",
+    "frame-executive/try-runtime",
+    "frame-try-runtime",
+    "frame-system/try-runtime",
+    "pallet-authority-discovery/try-runtime",
+    "pallet-authorship/try-runtime",
+    "pallet-balances/try-runtime",
+    "pallet-transaction-payment/try-runtime",
+    "pallet-collective/try-runtime",
+    "pallet-grandpa/try-runtime",
+    "pallet-im-online/try-runtime",
+    "pallet-multisig/try-runtime",
+    "pallet-offences/try-runtime",
+    "pallet-proxy/try-runtime",
+    "pallet-scheduler/try-runtime",
+    "pallet-session/try-runtime",
+    "pallet-timestamp/try-runtime",
+    "pallet-treasury/try-runtime",
+    "pallet-babe/try-runtime",
+    "pallet-utility/try-runtime",
 ]
 
 [dev-dependencies]
diff --git a/runtime/gdev/Cargo.toml b/runtime/gdev/Cargo.toml
index ba9dce15d..570b53d0a 100644
--- a/runtime/gdev/Cargo.toml
+++ b/runtime/gdev/Cargo.toml
@@ -34,11 +34,11 @@ std = [
     'frame-support/std',
     'frame-system-rpc-runtime-api/std',
     'frame-system/std',
-	"frame-try-runtime/std",
-	'pallet-atomic-swap/std',
-	'log/std',
-	'pallet-authority-discovery/std',
-	'pallet-authority-members/std',
+    "frame-try-runtime/std",
+    'pallet-atomic-swap/std',
+    'log/std',
+    'pallet-authority-discovery/std',
+    'pallet-authority-members/std',
     'pallet-babe/std',
     'pallet-balances/std',
     'pallet-certification/std',
@@ -49,7 +49,7 @@ std = [
     'pallet-grandpa/std',
     'pallet-identity/std',
     'pallet-membership/std',
-	'pallet-provide-randomness/std',
+    'pallet-provide-randomness/std',
     'pallet-im-online/std',
     'pallet-multisig/std',
     'pallet-preimage/std',
@@ -66,7 +66,7 @@ std = [
     'serde',
     'sp-api/std',
     'sp-arithmetic/std',
-	'sp-authority-discovery/std',
+    'sp-authority-discovery/std',
     'sp-block-builder/std',
     'sp-consensus-babe/std',
     'sp-core/std',
@@ -80,25 +80,25 @@ std = [
     'sp-version/std',
 ]
 try-runtime = [
-	"frame-executive/try-runtime",
-	"frame-try-runtime",
-	"frame-system/try-runtime",
-	"pallet-authority-discovery/try-runtime",
-	"pallet-authorship/try-runtime",
-	"pallet-balances/try-runtime",
-	"pallet-transaction-payment/try-runtime",
-	"pallet-collective/try-runtime",
-	"pallet-grandpa/try-runtime",
-	"pallet-im-online/try-runtime",
-	"pallet-multisig/try-runtime",
-	"pallet-offences/try-runtime",
-	"pallet-proxy/try-runtime",
-	"pallet-scheduler/try-runtime",
-	"pallet-session/try-runtime",
-	"pallet-timestamp/try-runtime",
-	"pallet-treasury/try-runtime",
-	"pallet-babe/try-runtime",
-	"pallet-utility/try-runtime",
+    "frame-executive/try-runtime",
+    "frame-try-runtime",
+    "frame-system/try-runtime",
+    "pallet-authority-discovery/try-runtime",
+    "pallet-authorship/try-runtime",
+    "pallet-balances/try-runtime",
+    "pallet-transaction-payment/try-runtime",
+    "pallet-collective/try-runtime",
+    "pallet-grandpa/try-runtime",
+    "pallet-im-online/try-runtime",
+    "pallet-multisig/try-runtime",
+    "pallet-offences/try-runtime",
+    "pallet-proxy/try-runtime",
+    "pallet-scheduler/try-runtime",
+    "pallet-session/try-runtime",
+    "pallet-timestamp/try-runtime",
+    "pallet-treasury/try-runtime",
+    "pallet-babe/try-runtime",
+    "pallet-utility/try-runtime",
 ]
 
 [dev-dependencies]
diff --git a/runtime/gtest/Cargo.toml b/runtime/gtest/Cargo.toml
index 93c347518..68915d05b 100644
--- a/runtime/gtest/Cargo.toml
+++ b/runtime/gtest/Cargo.toml
@@ -34,11 +34,11 @@ std = [
     'frame-support/std',
     'frame-system-rpc-runtime-api/std',
     'frame-system/std',
-	"frame-try-runtime/std",
-	'pallet-atomic-swap/std',
-	'log/std',
-	'pallet-authority-discovery/std',
-	'pallet-authority-members/std',
+    "frame-try-runtime/std",
+    'pallet-atomic-swap/std',
+    'log/std',
+    'pallet-authority-discovery/std',
+    'pallet-authority-members/std',
     'pallet-babe/std',
     'pallet-balances/std',
     'pallet-certification/std',
@@ -49,7 +49,7 @@ std = [
     'pallet-grandpa/std',
     'pallet-identity/std',
     'pallet-membership/std',
-	'pallet-provide-randomness/std',
+    'pallet-provide-randomness/std',
     'pallet-im-online/std',
     'pallet-multisig/std',
     'pallet-preimage/std',
@@ -66,7 +66,7 @@ std = [
     'serde',
     'sp-api/std',
     'sp-arithmetic/std',
-	'sp-authority-discovery/std',
+    'sp-authority-discovery/std',
     'sp-block-builder/std',
     'sp-consensus-babe/std',
     'sp-core/std',
@@ -80,25 +80,25 @@ std = [
     'sp-version/std',
 ]
 try-runtime = [
-	"frame-executive/try-runtime",
-	"frame-try-runtime",
-	"frame-system/try-runtime",
-	"pallet-authority-discovery/try-runtime",
-	"pallet-authorship/try-runtime",
-	"pallet-balances/try-runtime",
-	"pallet-transaction-payment/try-runtime",
-	"pallet-collective/try-runtime",
-	"pallet-grandpa/try-runtime",
-	"pallet-im-online/try-runtime",
-	"pallet-multisig/try-runtime",
-	"pallet-offences/try-runtime",
-	"pallet-proxy/try-runtime",
-	"pallet-scheduler/try-runtime",
-	"pallet-session/try-runtime",
-	"pallet-timestamp/try-runtime",
-	"pallet-treasury/try-runtime",
-	"pallet-babe/try-runtime",
-	"pallet-utility/try-runtime",
+    "frame-executive/try-runtime",
+    "frame-try-runtime",
+    "frame-system/try-runtime",
+    "pallet-authority-discovery/try-runtime",
+    "pallet-authorship/try-runtime",
+    "pallet-balances/try-runtime",
+    "pallet-transaction-payment/try-runtime",
+    "pallet-collective/try-runtime",
+    "pallet-grandpa/try-runtime",
+    "pallet-im-online/try-runtime",
+    "pallet-multisig/try-runtime",
+    "pallet-offences/try-runtime",
+    "pallet-proxy/try-runtime",
+    "pallet-scheduler/try-runtime",
+    "pallet-session/try-runtime",
+    "pallet-timestamp/try-runtime",
+    "pallet-treasury/try-runtime",
+    "pallet-babe/try-runtime",
+    "pallet-utility/try-runtime",
 ]
 
 [dev-dependencies]
-- 
GitLab