From 6dec13d17b9bcd92be73bb5334ec4907a80508dd Mon Sep 17 00:00:00 2001
From: Benjamin Gallois <business@gallois.cc>
Date: Wed, 4 Sep 2024 16:54:08 +0200
Subject: [PATCH] Upgrade polkadot v1.14.0 (nodes/rust/duniter-v2s!274)

* regenerate metadata

* fix clippy

* upgrade tests

* upgrade subxt

* upgrade runtime

* upgrade polkadot sdk version

* 272 TO BE MERGED BEFORE
---
 Cargo.lock                                    | 2980 ++++++++++-------
 Cargo.toml                                    |  164 +-
 distance-oracle/src/api.rs                    |   10 +-
 distance-oracle/src/mock.rs                   |    5 +-
 end2end-tests/tests/common/cert.rs            |   12 +-
 end2end-tests/tests/cucumber_tests.rs         |   15 +-
 node/Cargo.toml                               |   98 +-
 node/src/chain_spec/g1.rs                     |  193 +-
 node/src/chain_spec/gdev.rs                   |    5 +-
 node/src/chain_spec/gen_genesis_data.rs       |    7 +-
 node/src/chain_spec/gtest.rs                  |   52 +-
 node/src/command.rs                           |   13 +-
 node/src/rpc.rs                               |    3 -
 node/src/service.rs                           |    2 -
 pallets/authority-members/src/lib.rs          |    1 -
 pallets/certification/src/lib.rs              |    1 -
 pallets/distance/src/lib.rs                   |    1 -
 pallets/duniter-account/src/lib.rs            |    1 -
 pallets/identity/src/lib.rs                   |    1 -
 pallets/membership/src/lib.rs                 |    1 -
 pallets/offences/src/mock.rs                  |    2 -
 pallets/offences/src/tests.rs                 |    2 -
 pallets/oneshot-account/src/mock.rs           |    7 +-
 pallets/provide-randomness/src/lib.rs         |    1 -
 pallets/quota/src/lib.rs                      |    1 -
 pallets/smith-members/src/benchmarking.rs     |   11 +-
 pallets/smith-members/src/lib.rs              |    1 -
 pallets/smith-members/src/mock.rs             |    2 -
 pallets/smith-members/src/tests.rs            |    2 -
 resources/metadata.scale                      |  Bin 150794 -> 149703 bytes
 resources/weight_analyzer/src/lib.rs          |   14 +-
 runtime/common/src/constants.rs               |    2 -
 runtime/common/src/fees.rs                    |    4 +-
 runtime/common/src/handlers.rs                |    3 +-
 runtime/common/src/lib.rs                     |    1 -
 runtime/common/src/pallets_config.rs          |   62 +-
 runtime/common/src/weights/pallet_treasury.rs |  185 -
 runtime/g1/Cargo.toml                         |    2 +
 runtime/g1/src/lib.rs                         |    8 +
 runtime/g1/src/parameters.rs                  |   11 +-
 runtime/{common => g1}/src/weights.rs         |    0
 runtime/g1/src/weights/block_weights.rs       |   64 +
 runtime/g1/src/weights/extrinsic_weights.rs   |   64 +
 .../weights/frame_benchmarking_baseline.rs    |  105 +
 .../src/weights/frame_system.rs               |   58 +-
 .../src/weights/pallet_authority_members.rs   |   48 +-
 .../{common => g1}/src/weights/pallet_babe.rs |    0
 .../src/weights/pallet_balances.rs            |   62 +-
 .../g1/src/weights/pallet_certification.rs    |  191 ++
 runtime/g1/src/weights/pallet_collective.rs   |  302 ++
 runtime/g1/src/weights/pallet_distance.rs     |  252 ++
 .../src/weights/pallet_duniter_account.rs     |    8 +-
 .../src/weights/pallet_grandpa.rs             |    0
 runtime/g1/src/weights/pallet_identity.rs     |  402 +++
 runtime/g1/src/weights/pallet_im_online.rs    |   74 +
 .../src/weights/pallet_membership.rs          |   30 +-
 runtime/g1/src/weights/pallet_multisig.rs     |  162 +
 .../src/weights/pallet_oneshot_account.rs     |   16 +-
 runtime/g1/src/weights/pallet_preimage.rs     |  259 ++
 .../src/weights/pallet_provide_randomness.rs  |   24 +-
 runtime/g1/src/weights/pallet_proxy.rs        |  221 ++
 .../src/weights/pallet_quota.rs               |    0
 .../src/weights/pallet_scheduler.rs           |  103 +-
 .../src/weights/pallet_session.rs             |   24 +-
 .../g1/src/weights/pallet_smith_members.rs    |  139 +
 .../{common => g1}/src/weights/pallet_sudo.rs |   20 +-
 runtime/g1/src/weights/pallet_timestamp.rs    |   74 +
 runtime/g1/src/weights/pallet_treasury.rs     |  121 +
 .../src/weights/pallet_universal_dividend.rs  |  116 +
 .../src/weights/pallet_upgrade_origin.rs      |    8 +-
 .../src/weights/pallet_utility.rs             |   36 +-
 runtime/g1/src/weights/paritydb_weights.rs    |   95 +
 runtime/gdev/Cargo.toml                       |    2 +
 runtime/gdev/src/lib.rs                       |    2 +
 runtime/gdev/src/parameters.rs                |    2 +-
 runtime/gdev/src/weights.rs                   |   52 +
 .../src/weights/block_weights.rs              |   22 +-
 .../src/weights/extrinsic_weights.rs          |   22 +-
 .../weights/frame_benchmarking_baseline.rs    |   30 +-
 runtime/gdev/src/weights/frame_system.rs      |  171 +
 .../src/weights/pallet_authority_members.rs   |  156 +
 runtime/gdev/src/weights/pallet_babe.rs       |   54 +
 runtime/gdev/src/weights/pallet_balances.rs   |  162 +
 .../src/weights/pallet_certification.rs       |   72 +-
 .../src/weights/pallet_collective.rs          |  126 +-
 .../src/weights/pallet_distance.rs            |  106 +-
 .../src/weights/pallet_duniter_account.rs     |   62 +
 runtime/gdev/src/weights/pallet_grandpa.rs    |   55 +
 .../src/weights/pallet_identity.rs            |  184 +-
 .../src/weights/pallet_im_online.rs           |   14 +-
 runtime/gdev/src/weights/pallet_membership.rs |  102 +
 .../src/weights/pallet_multisig.rs            |   72 +-
 .../src/weights/pallet_oneshot_account.rs     |   94 +
 .../src/weights/pallet_preimage.rs            |   68 +-
 .../src/weights/pallet_provide_randomness.rs  |  132 +
 .../src/weights/pallet_proxy.rs               |  100 +-
 runtime/gdev/src/weights/pallet_quota.rs      |  133 +
 runtime/gdev/src/weights/pallet_scheduler.rs  |  286 ++
 runtime/gdev/src/weights/pallet_session.rs    |   78 +
 .../src/weights/pallet_smith_members.rs       |   60 +-
 runtime/gdev/src/weights/pallet_sudo.rs       |   96 +
 .../src/weights/pallet_timestamp.rs           |   12 +-
 runtime/gdev/src/weights/pallet_treasury.rs   |  121 +
 .../src/weights/pallet_universal_dividend.rs  |   34 +-
 .../gdev/src/weights/pallet_upgrade_origin.rs |   58 +
 runtime/gdev/src/weights/pallet_utility.rs    |   99 +
 .../src/weights/paritydb_weights.rs           |   39 +-
 runtime/gdev/tests/offence_tests.rs           |    9 +-
 runtime/gtest/Cargo.toml                      |    2 +
 runtime/gtest/src/lib.rs                      |    2 +
 runtime/gtest/src/parameters.rs               |    2 +-
 runtime/gtest/src/weights.rs                  |   52 +
 runtime/gtest/src/weights/block_weights.rs    |   64 +
 .../gtest/src/weights/extrinsic_weights.rs    |   64 +
 .../weights/frame_benchmarking_baseline.rs    |  105 +
 runtime/gtest/src/weights/frame_system.rs     |  171 +
 .../src/weights/pallet_authority_members.rs   |  156 +
 runtime/gtest/src/weights/pallet_babe.rs      |   54 +
 runtime/gtest/src/weights/pallet_balances.rs  |  162 +
 .../gtest/src/weights/pallet_certification.rs |  191 ++
 .../gtest/src/weights/pallet_collective.rs    |  302 ++
 runtime/gtest/src/weights/pallet_distance.rs  |  252 ++
 .../src/weights/pallet_duniter_account.rs     |   62 +
 runtime/gtest/src/weights/pallet_grandpa.rs   |   55 +
 runtime/gtest/src/weights/pallet_identity.rs  |  402 +++
 runtime/gtest/src/weights/pallet_im_online.rs |   74 +
 .../gtest/src/weights/pallet_membership.rs    |  102 +
 runtime/gtest/src/weights/pallet_multisig.rs  |  162 +
 .../src/weights/pallet_oneshot_account.rs     |   94 +
 runtime/gtest/src/weights/pallet_preimage.rs  |  259 ++
 .../src/weights/pallet_provide_randomness.rs  |  132 +
 runtime/gtest/src/weights/pallet_proxy.rs     |  221 ++
 runtime/gtest/src/weights/pallet_quota.rs     |  133 +
 runtime/gtest/src/weights/pallet_scheduler.rs |  286 ++
 runtime/gtest/src/weights/pallet_session.rs   |   78 +
 .../gtest/src/weights/pallet_smith_members.rs |  139 +
 runtime/gtest/src/weights/pallet_sudo.rs      |   96 +
 runtime/gtest/src/weights/pallet_timestamp.rs |   74 +
 runtime/gtest/src/weights/pallet_treasury.rs  |  121 +
 .../src/weights/pallet_universal_dividend.rs  |  118 +
 .../src/weights/pallet_upgrade_origin.rs      |   58 +
 runtime/gtest/src/weights/pallet_utility.rs   |   99 +
 runtime/gtest/src/weights/paritydb_weights.rs |   95 +
 rust-toolchain.toml                           |    2 +-
 scripts/run_all_benchmarks.sh                 |   12 +-
 xtask/src/gen_doc.rs                          |    2 +-
 146 files changed, 12016 insertions(+), 2290 deletions(-)
 delete mode 100644 runtime/common/src/weights/pallet_treasury.rs
 rename runtime/{common => g1}/src/weights.rs (100%)
 create mode 100644 runtime/g1/src/weights/block_weights.rs
 create mode 100644 runtime/g1/src/weights/extrinsic_weights.rs
 create mode 100644 runtime/g1/src/weights/frame_benchmarking_baseline.rs
 rename runtime/{common => g1}/src/weights/frame_system.rs (80%)
 rename runtime/{common => g1}/src/weights/pallet_authority_members.rs (88%)
 rename runtime/{common => g1}/src/weights/pallet_babe.rs (100%)
 rename runtime/{common => g1}/src/weights/pallet_balances.rs (73%)
 create mode 100644 runtime/g1/src/weights/pallet_certification.rs
 create mode 100644 runtime/g1/src/weights/pallet_collective.rs
 create mode 100644 runtime/g1/src/weights/pallet_distance.rs
 rename runtime/{common => g1}/src/weights/pallet_duniter_account.rs (91%)
 rename runtime/{common => g1}/src/weights/pallet_grandpa.rs (100%)
 create mode 100644 runtime/g1/src/weights/pallet_identity.rs
 create mode 100644 runtime/g1/src/weights/pallet_im_online.rs
 rename runtime/{common => g1}/src/weights/pallet_membership.rs (85%)
 create mode 100644 runtime/g1/src/weights/pallet_multisig.rs
 rename runtime/{common => g1}/src/weights/pallet_oneshot_account.rs (90%)
 create mode 100644 runtime/g1/src/weights/pallet_preimage.rs
 rename runtime/{common => g1}/src/weights/pallet_provide_randomness.rs (92%)
 create mode 100644 runtime/g1/src/weights/pallet_proxy.rs
 rename runtime/{common => g1}/src/weights/pallet_quota.rs (100%)
 rename runtime/{common => g1}/src/weights/pallet_scheduler.rs (81%)
 rename runtime/{common => g1}/src/weights/pallet_session.rs (83%)
 create mode 100644 runtime/g1/src/weights/pallet_smith_members.rs
 rename runtime/{common => g1}/src/weights/pallet_sudo.rs (87%)
 create mode 100644 runtime/g1/src/weights/pallet_timestamp.rs
 create mode 100644 runtime/g1/src/weights/pallet_treasury.rs
 create mode 100644 runtime/g1/src/weights/pallet_universal_dividend.rs
 rename runtime/{common => g1}/src/weights/pallet_upgrade_origin.rs (90%)
 rename runtime/{common => g1}/src/weights/pallet_utility.rs (75%)
 create mode 100644 runtime/g1/src/weights/paritydb_weights.rs
 create mode 100644 runtime/gdev/src/weights.rs
 rename runtime/{common => gdev}/src/weights/block_weights.rs (79%)
 rename runtime/{common => gdev}/src/weights/extrinsic_weights.rs (79%)
 rename runtime/{common => gdev}/src/weights/frame_benchmarking_baseline.rs (81%)
 create mode 100644 runtime/gdev/src/weights/frame_system.rs
 create mode 100644 runtime/gdev/src/weights/pallet_authority_members.rs
 create mode 100644 runtime/gdev/src/weights/pallet_babe.rs
 create mode 100644 runtime/gdev/src/weights/pallet_balances.rs
 rename runtime/{common => gdev}/src/weights/pallet_certification.rs (83%)
 rename runtime/{common => gdev}/src/weights/pallet_collective.rs (82%)
 rename runtime/{common => gdev}/src/weights/pallet_distance.rs (81%)
 create mode 100644 runtime/gdev/src/weights/pallet_duniter_account.rs
 create mode 100644 runtime/gdev/src/weights/pallet_grandpa.rs
 rename runtime/{common => gdev}/src/weights/pallet_identity.rs (83%)
 rename runtime/{common => gdev}/src/weights/pallet_im_online.rs (90%)
 create mode 100644 runtime/gdev/src/weights/pallet_membership.rs
 rename runtime/{common => gdev}/src/weights/pallet_multisig.rs (77%)
 create mode 100644 runtime/gdev/src/weights/pallet_oneshot_account.rs
 rename runtime/{common => gdev}/src/weights/pallet_preimage.rs (88%)
 create mode 100644 runtime/gdev/src/weights/pallet_provide_randomness.rs
 rename runtime/{common => gdev}/src/weights/pallet_proxy.rs (77%)
 create mode 100644 runtime/gdev/src/weights/pallet_quota.rs
 create mode 100644 runtime/gdev/src/weights/pallet_scheduler.rs
 create mode 100644 runtime/gdev/src/weights/pallet_session.rs
 rename runtime/{common => gdev}/src/weights/pallet_smith_members.rs (82%)
 create mode 100644 runtime/gdev/src/weights/pallet_sudo.rs
 rename runtime/{common => gdev}/src/weights/pallet_timestamp.rs (90%)
 create mode 100644 runtime/gdev/src/weights/pallet_treasury.rs
 rename runtime/{common => gdev}/src/weights/pallet_universal_dividend.rs (85%)
 create mode 100644 runtime/gdev/src/weights/pallet_upgrade_origin.rs
 create mode 100644 runtime/gdev/src/weights/pallet_utility.rs
 rename runtime/{common => gdev}/src/weights/paritydb_weights.rs (79%)
 create mode 100644 runtime/gtest/src/weights.rs
 create mode 100644 runtime/gtest/src/weights/block_weights.rs
 create mode 100644 runtime/gtest/src/weights/extrinsic_weights.rs
 create mode 100644 runtime/gtest/src/weights/frame_benchmarking_baseline.rs
 create mode 100644 runtime/gtest/src/weights/frame_system.rs
 create mode 100644 runtime/gtest/src/weights/pallet_authority_members.rs
 create mode 100644 runtime/gtest/src/weights/pallet_babe.rs
 create mode 100644 runtime/gtest/src/weights/pallet_balances.rs
 create mode 100644 runtime/gtest/src/weights/pallet_certification.rs
 create mode 100644 runtime/gtest/src/weights/pallet_collective.rs
 create mode 100644 runtime/gtest/src/weights/pallet_distance.rs
 create mode 100644 runtime/gtest/src/weights/pallet_duniter_account.rs
 create mode 100644 runtime/gtest/src/weights/pallet_grandpa.rs
 create mode 100644 runtime/gtest/src/weights/pallet_identity.rs
 create mode 100644 runtime/gtest/src/weights/pallet_im_online.rs
 create mode 100644 runtime/gtest/src/weights/pallet_membership.rs
 create mode 100644 runtime/gtest/src/weights/pallet_multisig.rs
 create mode 100644 runtime/gtest/src/weights/pallet_oneshot_account.rs
 create mode 100644 runtime/gtest/src/weights/pallet_preimage.rs
 create mode 100644 runtime/gtest/src/weights/pallet_provide_randomness.rs
 create mode 100644 runtime/gtest/src/weights/pallet_proxy.rs
 create mode 100644 runtime/gtest/src/weights/pallet_quota.rs
 create mode 100644 runtime/gtest/src/weights/pallet_scheduler.rs
 create mode 100644 runtime/gtest/src/weights/pallet_session.rs
 create mode 100644 runtime/gtest/src/weights/pallet_smith_members.rs
 create mode 100644 runtime/gtest/src/weights/pallet_sudo.rs
 create mode 100644 runtime/gtest/src/weights/pallet_timestamp.rs
 create mode 100644 runtime/gtest/src/weights/pallet_treasury.rs
 create mode 100644 runtime/gtest/src/weights/pallet_universal_dividend.rs
 create mode 100644 runtime/gtest/src/weights/pallet_upgrade_origin.rs
 create mode 100644 runtime/gtest/src/weights/pallet_utility.rs
 create mode 100644 runtime/gtest/src/weights/paritydb_weights.rs

diff --git a/Cargo.lock b/Cargo.lock
index 297d0cc53..7c17d76a7 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -23,11 +23,11 @@ dependencies = [
 
 [[package]]
 name = "addr2line"
-version = "0.21.0"
+version = "0.22.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678"
 dependencies = [
- "gimli 0.28.1",
+ "gimli 0.29.0",
 ]
 
 [[package]]
@@ -68,18 +68,7 @@ dependencies = [
  "cipher 0.4.4",
  "ctr",
  "ghash",
- "subtle 2.5.0",
-]
-
-[[package]]
-name = "ahash"
-version = "0.7.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9"
-dependencies = [
- "getrandom 0.2.15",
- "once_cell",
- "version_check",
+ "subtle 2.6.1",
 ]
 
 [[package]]
@@ -89,7 +78,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
 dependencies = [
  "cfg-if",
- "getrandom 0.2.15",
+ "getrandom",
  "once_cell",
  "version_check",
  "zerocopy",
@@ -166,9 +155,9 @@ dependencies = [
 
 [[package]]
 name = "anstyle-query"
-version = "1.0.3"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5"
+checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391"
 dependencies = [
  "windows-sys 0.52.0",
 ]
@@ -185,9 +174,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.83"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3"
+checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
 
 [[package]]
 name = "approx"
@@ -198,20 +187,6 @@ dependencies = [
  "num-traits 0.2.19",
 ]
 
-[[package]]
-name = "aquamarine"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d1da02abba9f9063d786eab1509833ebb2fac0f966862ca59439c76b9c566760"
-dependencies = [
- "include_dir",
- "itertools 0.10.5",
- "proc-macro-error",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
 [[package]]
 name = "aquamarine"
 version = "0.5.0"
@@ -223,7 +198,7 @@ dependencies = [
  "proc-macro-error",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -454,7 +429,7 @@ dependencies = [
 [[package]]
 name = "ark-secret-scalar"
 version = "0.0.2"
-source = "git+https://github.com/duniter/ring-vrf#06b60fdb7308c127448ef5799414c45516f6c42b"
+source = "git+https://github.com/duniter/ring-vrf#27a6b9f6aa0c576bc481947dd5e4f3beff0fe327"
 dependencies = [
  "ark-ec",
  "ark-ff",
@@ -496,34 +471,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185"
 dependencies = [
  "num-traits 0.2.19",
- "rand 0.8.5",
+ "rand",
  "rayon",
 ]
 
 [[package]]
 name = "ark-transcript"
 version = "0.0.2"
-source = "git+https://github.com/duniter/ring-vrf#06b60fdb7308c127448ef5799414c45516f6c42b"
+source = "git+https://github.com/duniter/ring-vrf#27a6b9f6aa0c576bc481947dd5e4f3beff0fe327"
 dependencies = [
  "ark-ff",
  "ark-serialize",
  "ark-std",
  "digest 0.10.7",
- "rand_core 0.6.4",
+ "rand_core",
  "sha3",
 ]
 
 [[package]]
 name = "array-bytes"
-version = "4.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f52f63c5c1316a16a4b35eaac8b76a98248961a533f061684cb2a7cb0eafb6c6"
-
-[[package]]
-name = "array-bytes"
-version = "6.2.2"
+version = "6.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f840fb7195bcfc5e17ea40c26e5ce6d5b9ce5d584466e17703209657e459ae0"
+checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293"
 
 [[package]]
 name = "arrayref"
@@ -558,8 +527,24 @@ version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0"
 dependencies = [
- "asn1-rs-derive",
- "asn1-rs-impl",
+ "asn1-rs-derive 0.4.0",
+ "asn1-rs-impl 0.1.0",
+ "displaydoc",
+ "nom",
+ "num-traits 0.2.19",
+ "rusticata-macros",
+ "thiserror",
+ "time",
+]
+
+[[package]]
+name = "asn1-rs"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22ad1373757efa0f70ec53939aabc7152e1591cb485208052993070ac8d2429d"
+dependencies = [
+ "asn1-rs-derive 0.5.0",
+ "asn1-rs-impl 0.2.0",
  "displaydoc",
  "nom",
  "num-traits 0.2.19",
@@ -577,7 +562,19 @@ dependencies = [
  "proc-macro2",
  "quote",
  "syn 1.0.109",
- "synstructure",
+ "synstructure 0.12.6",
+]
+
+[[package]]
+name = "asn1-rs-derive"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7378575ff571966e99a744addeff0bff98b8ada0dedf1956d59e634db95eaac1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.68",
+ "synstructure 0.13.1",
 ]
 
 [[package]]
@@ -591,6 +588,17 @@ dependencies = [
  "syn 1.0.109",
 ]
 
+[[package]]
+name = "asn1-rs-impl"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.68",
+]
+
 [[package]]
 name = "assert_matches"
 version = "1.5.0"
@@ -610,22 +618,21 @@ dependencies = [
 
 [[package]]
 name = "async-channel"
-version = "2.2.1"
+version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928"
+checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
 dependencies = [
  "concurrent-queue",
- "event-listener 5.3.0",
- "event-listener-strategy 0.5.2",
+ "event-listener-strategy",
  "futures-core",
  "pin-project-lite 0.2.14",
 ]
 
 [[package]]
 name = "async-executor"
-version = "1.11.0"
+version = "1.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a"
+checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0"
 dependencies = [
  "async-task",
  "concurrent-queue",
@@ -647,9 +654,9 @@ dependencies = [
 
 [[package]]
 name = "async-io"
-version = "2.3.2"
+version = "2.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884"
+checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964"
 dependencies = [
  "async-lock",
  "cfg-if",
@@ -666,12 +673,12 @@ dependencies = [
 
 [[package]]
 name = "async-lock"
-version = "3.3.0"
+version = "3.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b"
+checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
 dependencies = [
- "event-listener 4.0.3",
- "event-listener-strategy 0.4.0",
+ "event-listener 5.3.1",
+ "event-listener-strategy",
  "pin-project-lite 0.2.14",
 ]
 
@@ -688,18 +695,18 @@ dependencies = [
 
 [[package]]
 name = "async-process"
-version = "2.2.2"
+version = "2.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a53fc6301894e04a92cb2584fedde80cb25ba8e02d9dc39d4a87d036e22f397d"
+checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a"
 dependencies = [
- "async-channel 2.2.1",
+ "async-channel 2.3.1",
  "async-io",
  "async-lock",
  "async-signal",
  "async-task",
  "blocking",
  "cfg-if",
- "event-listener 5.3.0",
+ "event-listener 5.3.1",
  "futures-lite",
  "rustix 0.38.34",
  "tracing",
@@ -708,9 +715,9 @@ dependencies = [
 
 [[package]]
 name = "async-signal"
-version = "0.2.6"
+version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afe66191c335039c7bb78f99dc7520b0cbb166b3a1cb33a03f53d8a1c6f2afda"
+checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d"
 dependencies = [
  "async-io",
  "async-lock",
@@ -738,7 +745,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -766,6 +773,17 @@ version = "1.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
 
+[[package]]
+name = "attohttpc"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d9a9bf8b79a749ee0b911b91b671cc2b6c670bdbc7e3dfd537576ddc94bb2a2"
+dependencies = [
+ "http 0.2.12",
+ "log",
+ "url",
+]
+
 [[package]]
 name = "autocfg"
 version = "1.3.0"
@@ -774,23 +792,23 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
 
 [[package]]
 name = "backtrace"
-version = "0.3.71"
+version = "0.3.73"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
+checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a"
 dependencies = [
- "addr2line 0.21.0",
+ "addr2line 0.22.0",
  "cc",
  "cfg-if",
  "libc",
  "miniz_oxide",
- "object 0.32.2",
+ "object 0.36.1",
  "rustc-demangle",
 ]
 
 [[package]]
 name = "bandersnatch_vrfs"
 version = "0.0.4"
-source = "git+https://github.com/duniter/ring-vrf#06b60fdb7308c127448ef5799414c45516f6c42b"
+source = "git+https://github.com/duniter/ring-vrf#27a6b9f6aa0c576bc481947dd5e4f3beff0fe327"
 dependencies = [
  "ark-bls12-381",
  "ark-ec",
@@ -801,8 +819,8 @@ dependencies = [
  "dleq_vrf",
  "fflonk",
  "merlin",
- "rand_chacha 0.3.1",
- "rand_core 0.6.4",
+ "rand_chacha",
+ "rand_core",
  "ring 0.1.0",
  "sha2 0.10.8",
  "sp-ark-bls12-381",
@@ -870,6 +888,27 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "bindgen"
+version = "0.65.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5"
+dependencies = [
+ "bitflags 1.3.2",
+ "cexpr",
+ "clang-sys",
+ "lazy_static",
+ "lazycell",
+ "peeking_take_while",
+ "prettyplease 0.2.20",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "rustc-hash",
+ "shlex",
+ "syn 2.0.68",
+]
+
 [[package]]
 name = "bip39"
 version = "2.0.0"
@@ -924,9 +963,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.5.0"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
 
 [[package]]
 name = "bitvec"
@@ -1026,12 +1065,11 @@ dependencies = [
 
 [[package]]
 name = "blocking"
-version = "1.6.0"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "495f7104e962b7356f0aeb34247aca1fe7d2e783b346582db7f2904cb5717e88"
+checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea"
 dependencies = [
- "async-channel 2.2.1",
- "async-lock",
+ "async-channel 2.3.1",
  "async-task",
  "futures-io",
  "futures-lite",
@@ -1110,9 +1148,9 @@ checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce"
 
 [[package]]
 name = "bytemuck"
-version = "1.15.0"
+version = "1.16.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15"
+checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e"
 
 [[package]]
 name = "byteorder"
@@ -1126,6 +1164,17 @@ version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
 
+[[package]]
+name = "bzip2-sys"
+version = "0.1.11+1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+]
+
 [[package]]
 name = "c2-chacha"
 version = "0.3.3"
@@ -1138,9 +1187,9 @@ dependencies = [
 
 [[package]]
 name = "camino"
-version = "1.1.6"
+version = "1.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c"
+checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239"
 dependencies = [
  "serde",
 ]
@@ -1170,15 +1219,30 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.0.97"
+version = "1.0.104"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4"
+checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490"
 dependencies = [
  "jobserver",
  "libc",
  "once_cell",
 ]
 
+[[package]]
+name = "cesu8"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
+
+[[package]]
+name = "cexpr"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+dependencies = [
+ "nom",
+]
+
 [[package]]
 name = "cfg-expr"
 version = "0.15.8"
@@ -1200,6 +1264,12 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
 
+[[package]]
+name = "cfg_aliases"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
+
 [[package]]
 name = "chacha"
 version = "0.3.0"
@@ -1258,7 +1328,7 @@ dependencies = [
  "multibase",
  "multihash 0.17.0",
  "serde",
- "unsigned-varint",
+ "unsigned-varint 0.7.2",
 ]
 
 [[package]]
@@ -1271,7 +1341,7 @@ dependencies = [
  "multibase",
  "multihash 0.18.1",
  "serde",
- "unsigned-varint",
+ "unsigned-varint 0.7.2",
 ]
 
 [[package]]
@@ -1294,11 +1364,22 @@ dependencies = [
  "zeroize",
 ]
 
+[[package]]
+name = "clang-sys"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
+dependencies = [
+ "glob",
+ "libc",
+ "libloading",
+]
+
 [[package]]
 name = "clap"
-version = "4.5.4"
+version = "4.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
+checksum = "84b3edb18336f4df585bc9aa31dd99c036dfa5dc5e9a2939a722a188f3a8970d"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -1306,9 +1387,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.2"
+version = "4.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
+checksum = "c1c09dd5ada6c6c78075d6fd0da3f90d8080651e2d6cc8eb2f1aaa4034ced708"
 dependencies = [
  "anstream",
  "anstyle",
@@ -1319,30 +1400,30 @@ dependencies = [
 
 [[package]]
 name = "clap_complete"
-version = "4.5.2"
+version = "4.5.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd79504325bf38b10165b02e89b4347300f855f273c4cb30c4a3209e6583275e"
+checksum = "1d598e88f6874d4b888ed40c71efbcbf4076f1dfbae128a08a8c9e45f710605d"
 dependencies = [
  "clap",
 ]
 
 [[package]]
 name = "clap_derive"
-version = "4.5.4"
+version = "4.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
+checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085"
 dependencies = [
  "heck 0.5.0",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "clap_lex"
-version = "0.7.0"
+version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
+checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70"
 
 [[package]]
 name = "cmake"
@@ -1398,15 +1479,15 @@ version = "7.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7"
 dependencies = [
- "strum 0.26.2",
- "strum_macros 0.26.2",
+ "strum 0.26.3",
+ "strum_macros 0.26.4",
  "unicode-width",
 ]
 
 [[package]]
 name = "common"
 version = "0.1.0"
-source = "git+https://github.com/w3f/ring-proof#b273d33f9981e2bb3375ab45faeb537f7ee35224"
+source = "git+https://github.com/w3f/ring-proof#96137b150288a66bc9e4df495efc64769b5d1321"
 dependencies = [
  "ark-ec",
  "ark-ff",
@@ -1416,7 +1497,7 @@ dependencies = [
  "fflonk",
  "getrandom_or_panic",
  "merlin",
- "rand_chacha 0.3.1",
+ "rand_chacha",
 ]
 
 [[package]]
@@ -1522,7 +1603,7 @@ version = "0.1.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
 dependencies = [
- "getrandom 0.2.15",
+ "getrandom",
  "once_cell",
  "tiny-keccak",
 ]
@@ -1727,18 +1808,18 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
 
 [[package]]
 name = "crc32fast"
-version = "1.4.0"
+version = "1.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
 dependencies = [
  "cfg-if",
 ]
 
 [[package]]
 name = "crossbeam-channel"
-version = "0.5.12"
+version = "0.5.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
 dependencies = [
  "crossbeam-utils",
 ]
@@ -1773,9 +1854,9 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.19"
+version = "0.8.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
 
 [[package]]
 name = "crunchy"
@@ -1790,8 +1871,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
 dependencies = [
  "generic-array 0.14.7",
- "rand_core 0.6.4",
- "subtle 2.5.0",
+ "rand_core",
+ "subtle 2.6.1",
  "zeroize",
 ]
 
@@ -1802,7 +1883,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
 dependencies = [
  "generic-array 0.14.7",
- "rand_core 0.6.4",
+ "rand_core",
  "typenum",
 ]
 
@@ -1823,7 +1904,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab"
 dependencies = [
  "generic-array 0.14.7",
- "subtle 2.5.0",
+ "subtle 2.6.1",
 ]
 
 [[package]]
@@ -1862,7 +1943,7 @@ dependencies = [
  "either",
  "futures 0.3.30",
  "gherkin",
- "globwalk",
+ "globwalk 0.8.1",
  "humantime",
  "inventory",
  "itertools 0.12.1",
@@ -1887,7 +1968,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "regex",
- "syn 2.0.61",
+ "syn 2.0.68",
  "synthez",
 ]
 
@@ -1907,31 +1988,17 @@ dependencies = [
 
 [[package]]
 name = "curve25519-dalek"
-version = "3.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61"
-dependencies = [
- "byteorder",
- "digest 0.9.0",
- "rand_core 0.5.1",
- "subtle 2.5.0",
- "zeroize",
-]
-
-[[package]]
-name = "curve25519-dalek"
-version = "4.1.2"
+version = "4.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348"
+checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
 dependencies = [
  "cfg-if",
  "cpufeatures",
  "curve25519-dalek-derive",
  "digest 0.10.7",
  "fiat-crypto",
- "platforms",
  "rustc_version",
- "subtle 2.5.0",
+ "subtle 2.6.1",
  "zeroize",
 ]
 
@@ -1943,14 +2010,14 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "cxx"
-version = "1.0.122"
+version = "1.0.124"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb497fad022245b29c2a0351df572e2d67c1046bcef2260ebc022aec81efea82"
+checksum = "273dcfd3acd4e1e276af13ed2a43eea7001318823e7a726a6b3ed39b4acc0b82"
 dependencies = [
  "cc",
  "cxxbridge-flags",
@@ -1960,9 +2027,9 @@ dependencies = [
 
 [[package]]
 name = "cxx-build"
-version = "1.0.122"
+version = "1.0.124"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9327c7f9fbd6329a200a5d4aa6f674c60ab256525ff0084b52a889d4e4c60cee"
+checksum = "d8b2766fbd92be34e9ed143898fce6c572dc009de39506ed6903e5a05b68914e"
 dependencies = [
  "cc",
  "codespan-reporting",
@@ -1970,24 +2037,24 @@ dependencies = [
  "proc-macro2",
  "quote",
  "scratch",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "cxxbridge-flags"
-version = "1.0.122"
+version = "1.0.124"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "688c799a4a846f1c0acb9f36bb9c6272d9b3d9457f3633c7753c6057270df13c"
+checksum = "839fcd5e43464614ffaa989eaf1c139ef1f0c51672a1ed08023307fa1b909ccd"
 
 [[package]]
 name = "cxxbridge-macro"
-version = "1.0.122"
+version = "1.0.124"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "928bc249a7e3cd554fd2e8e08a426e9670c50bbfc9a621653cfa9accc9641783"
+checksum = "4b2c1c1776b986979be68bb2285da855f8d8a35851a769fca8740df7c3d07877"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -2002,12 +2069,12 @@ dependencies = [
 
 [[package]]
 name = "darling"
-version = "0.20.8"
+version = "0.20.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391"
+checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1"
 dependencies = [
- "darling_core 0.20.8",
- "darling_macro 0.20.8",
+ "darling_core 0.20.9",
+ "darling_macro 0.20.9",
 ]
 
 [[package]]
@@ -2026,16 +2093,16 @@ dependencies = [
 
 [[package]]
 name = "darling_core"
-version = "0.20.8"
+version = "0.20.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f"
+checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120"
 dependencies = [
  "fnv",
  "ident_case",
  "proc-macro2",
  "quote",
- "strsim 0.10.0",
- "syn 2.0.61",
+ "strsim 0.11.1",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -2051,13 +2118,13 @@ dependencies = [
 
 [[package]]
 name = "darling_macro"
-version = "0.20.8"
+version = "0.20.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f"
+checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178"
 dependencies = [
- "darling_core 0.20.8",
+ "darling_core 0.20.9",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -2132,7 +2199,21 @@ version = "8.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e"
 dependencies = [
- "asn1-rs",
+ "asn1-rs 0.5.2",
+ "displaydoc",
+ "nom",
+ "num-bigint",
+ "num-traits 0.2.19",
+ "rusticata-macros",
+]
+
+[[package]]
+name = "der-parser"
+version = "9.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553"
+dependencies = [
+ "asn1-rs 0.6.1",
  "displaydoc",
  "nom",
  "num-bigint",
@@ -2179,20 +2260,31 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
+]
+
+[[package]]
+name = "derive-where"
+version = "1.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "derive_more"
-version = "0.99.17"
+version = "0.99.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
+checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce"
 dependencies = [
  "convert_case 0.4.0",
  "proc-macro2",
  "quote",
  "rustc_version",
- "syn 1.0.109",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -2228,7 +2320,7 @@ dependencies = [
  "block-buffer 0.10.4",
  "const-oid",
  "crypto-common",
- "subtle 2.5.0",
+ "subtle 2.6.1",
 ]
 
 [[package]]
@@ -2275,13 +2367,13 @@ dependencies = [
 
 [[package]]
 name = "displaydoc"
-version = "0.2.4"
+version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -2309,7 +2401,7 @@ dependencies = [
 [[package]]
 name = "dleq_vrf"
 version = "0.0.2"
-source = "git+https://github.com/duniter/ring-vrf#06b60fdb7308c127448ef5799414c45516f6c42b"
+source = "git+https://github.com/duniter/ring-vrf#27a6b9f6aa0c576bc481947dd5e4f3beff0fe327"
 dependencies = [
  "ark-ec",
  "ark-ff",
@@ -2343,9 +2435,9 @@ dependencies = [
  "proc-macro2",
  "quote",
  "regex",
- "syn 2.0.61",
+ "syn 2.0.68",
  "termcolor",
- "toml 0.8.12",
+ "toml 0.8.14",
  "walkdir",
 ]
 
@@ -2405,7 +2497,7 @@ dependencies = [
  "gdev-runtime",
  "gtest-runtime",
  "hex",
- "jsonrpsee",
+ "jsonrpsee 0.23.2",
  "log",
  "memmap2 0.9.4",
  "num-format",
@@ -2543,19 +2635,10 @@ dependencies = [
  "elliptic-curve",
  "rfc6979",
  "serdect",
- "signature 2.2.0",
+ "signature",
  "spki",
 ]
 
-[[package]]
-name = "ed25519"
-version = "1.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7"
-dependencies = [
- "signature 1.6.4",
-]
-
 [[package]]
 name = "ed25519"
 version = "2.2.3"
@@ -2563,21 +2646,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"
 dependencies = [
  "pkcs8",
- "signature 2.2.0",
-]
-
-[[package]]
-name = "ed25519-dalek"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d"
-dependencies = [
- "curve25519-dalek 3.2.0",
- "ed25519 1.5.3",
- "rand 0.7.3",
- "serde",
- "sha2 0.9.9",
- "zeroize",
+ "signature",
 ]
 
 [[package]]
@@ -2586,26 +2655,12 @@ version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871"
 dependencies = [
- "curve25519-dalek 4.1.2",
- "ed25519 2.2.3",
- "rand_core 0.6.4",
+ "curve25519-dalek",
+ "ed25519",
+ "rand_core",
  "serde",
  "sha2 0.10.8",
- "subtle 2.5.0",
- "zeroize",
-]
-
-[[package]]
-name = "ed25519-zebra"
-version = "3.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6"
-dependencies = [
- "curve25519-dalek 3.2.0",
- "hashbrown 0.12.3",
- "hex",
- "rand_core 0.6.4",
- "sha2 0.9.9",
+ "subtle 2.6.1",
  "zeroize",
 ]
 
@@ -2615,20 +2670,20 @@ version = "4.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9"
 dependencies = [
- "curve25519-dalek 4.1.2",
- "ed25519 2.2.3",
+ "curve25519-dalek",
+ "ed25519",
  "hashbrown 0.14.5",
  "hex",
- "rand_core 0.6.4",
+ "rand_core",
  "sha2 0.10.8",
  "zeroize",
 ]
 
 [[package]]
 name = "either"
-version = "1.11.0"
+version = "1.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
 
 [[package]]
 name = "elliptic-curve"
@@ -2643,10 +2698,10 @@ dependencies = [
  "generic-array 0.14.7",
  "group",
  "pkcs8",
- "rand_core 0.6.4",
+ "rand_core",
  "sec1",
  "serdect",
- "subtle 2.5.0",
+ "subtle 2.6.1",
  "zeroize",
 ]
 
@@ -2677,7 +2732,7 @@ dependencies = [
  "heck 0.4.1",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -2747,38 +2802,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e"
 dependencies = [
  "concurrent-queue",
- "parking",
  "pin-project-lite 0.2.14",
 ]
 
 [[package]]
 name = "event-listener"
-version = "5.3.0"
+version = "5.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24"
+checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba"
 dependencies = [
  "concurrent-queue",
  "parking",
  "pin-project-lite 0.2.14",
 ]
 
-[[package]]
-name = "event-listener-strategy"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
-dependencies = [
- "event-listener 4.0.3",
- "pin-project-lite 0.2.14",
-]
-
 [[package]]
 name = "event-listener-strategy"
 version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1"
 dependencies = [
- "event-listener 5.3.0",
+ "event-listener 5.3.1",
  "pin-project-lite 0.2.14",
 ]
 
@@ -2793,16 +2837,17 @@ dependencies = [
 
 [[package]]
 name = "expander"
-version = "2.1.0"
+version = "2.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00e83c02035136f1592a47964ea60c05a50e4ed8b5892cfac197063850898d4d"
+checksum = "e2c470c71d91ecbd179935b24170459e926382eaaa86b590b78814e180d8a8e2"
 dependencies = [
  "blake2 0.10.6",
+ "file-guard",
  "fs-err",
- "prettier-please",
+ "prettyplease 0.2.20",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -2824,8 +2869,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2"
 dependencies = [
  "bit-set",
- "regex-automata 0.4.6",
- "regex-syntax 0.8.3",
+ "regex-automata 0.4.7",
+ "regex-syntax 0.8.4",
 ]
 
 [[package]]
@@ -2850,8 +2895,8 @@ version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
 dependencies = [
- "rand_core 0.6.4",
- "subtle 2.5.0",
+ "rand_core",
+ "subtle 2.6.1",
 ]
 
 [[package]]
@@ -2869,9 +2914,19 @@ dependencies = [
 
 [[package]]
 name = "fiat-crypto"
-version = "0.2.8"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
+
+[[package]]
+name = "file-guard"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38793c55593b33412e3ae40c2c9781ffaa6f438f6f8c10f24e71846fbd7ae01e"
+checksum = "21ef72acf95ec3d7dbf61275be556299490a245f017cf084bd23b4f68cf9407c"
+dependencies = [
+ "libc",
+ "winapi",
+]
 
 [[package]]
 name = "file-per-thread-logger"
@@ -2907,10 +2962,20 @@ dependencies = [
  "log",
  "num-traits 0.2.19",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "scale-info",
 ]
 
+[[package]]
+name = "finito"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2384245d85162258a14b43567a9ee3598f5ae746a1581fb5d3d2cb780f0dbf95"
+dependencies = [
+ "futures-timer",
+ "pin-project",
+]
+
 [[package]]
 name = "fixed-hash"
 version = "0.8.0"
@@ -2918,7 +2983,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534"
 dependencies = [
  "byteorder",
- "rand 0.8.5",
+ "rand",
  "rustc-hex",
  "static_assertions",
 ]
@@ -2973,7 +3038,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
 [[package]]
 name = "fork-tree"
 version = "12.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "parity-scale-codec",
 ]
@@ -2987,6 +3052,16 @@ dependencies = [
  "percent-encoding",
 ]
 
+[[package]]
+name = "forwarded-header-value"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8835f84f38484cc86f110a805655697908257fb9a7af005234060891557198e9"
+dependencies = [
+ "nonempty",
+ "thiserror",
+]
+
 [[package]]
 name = "fragile"
 version = "2.0.0"
@@ -2996,7 +3071,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa"
 [[package]]
 name = "frame-benchmarking"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-support",
  "frame-support-procedural",
@@ -3021,10 +3096,10 @@ dependencies = [
 [[package]]
 name = "frame-benchmarking-cli"
 version = "32.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "Inflector",
- "array-bytes 6.2.2",
+ "array-bytes",
  "chrono",
  "clap",
  "comfy-table",
@@ -3033,12 +3108,12 @@ dependencies = [
  "frame-system",
  "gethostname",
  "handlebars",
- "itertools 0.10.5",
+ "itertools 0.11.0",
  "lazy_static",
  "linked-hash-map",
  "log",
  "parity-scale-codec",
- "rand 0.8.5",
+ "rand",
  "rand_pcg",
  "sc-block-builder",
  "sc-chain-spec",
@@ -3071,9 +3146,9 @@ dependencies = [
 [[package]]
 name = "frame-executive"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "aquamarine 0.3.3",
+ "aquamarine",
  "frame-support",
  "frame-system",
  "frame-try-runtime",
@@ -3113,10 +3188,10 @@ dependencies = [
 [[package]]
 name = "frame-support"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "aquamarine 0.5.0",
- "array-bytes 6.2.2",
+ "aquamarine",
+ "array-bytes",
  "bitflags 1.3.2",
  "docify",
  "environmental",
@@ -3154,48 +3229,48 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural"
 version = "23.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "Inflector",
  "cfg-expr",
  "derive-syn-parse 0.2.0",
  "expander",
  "frame-support-procedural-tools",
- "itertools 0.10.5",
+ "itertools 0.11.0",
  "macro_magic",
- "proc-macro-warning",
+ "proc-macro-warning 1.0.2",
  "proc-macro2",
  "quote",
  "sp-crypto-hashing",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "frame-support-procedural-tools"
 version = "10.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-support-procedural-tools-derive",
  "proc-macro-crate 3.1.0",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "frame-support-procedural-tools-derive"
 version = "11.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "frame-system"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "cfg-if",
  "docify",
@@ -3215,7 +3290,7 @@ dependencies = [
 [[package]]
 name = "frame-system-benchmarking"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -3230,8 +3305,9 @@ dependencies = [
 [[package]]
 name = "frame-system-rpc-runtime-api"
 version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
+ "docify",
  "parity-scale-codec",
  "sp-api",
 ]
@@ -3239,7 +3315,7 @@ dependencies = [
 [[package]]
 name = "frame-try-runtime"
 version = "0.34.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-support",
  "parity-scale-codec",
@@ -3303,6 +3379,16 @@ dependencies = [
  "futures-util",
 ]
 
+[[package]]
+name = "futures-bounded"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b07bbbe7d7e78809544c6f718d875627addc73a7c3582447abc052cd3dc67e0"
+dependencies = [
+ "futures-timer",
+ "futures-util",
+]
+
 [[package]]
 name = "futures-channel"
 version = "0.3.30"
@@ -3358,18 +3444,17 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "futures-rustls"
-version = "0.22.2"
+version = "0.24.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd"
+checksum = "35bd3cf68c183738046838e300353e4716c674dc5e56890de4826801a6622a28"
 dependencies = [
  "futures-io",
- "rustls 0.20.9",
- "webpki",
+ "rustls 0.21.12",
 ]
 
 [[package]]
@@ -3489,6 +3574,7 @@ dependencies = [
  "sp-std 14.0.0",
  "sp-transaction-pool",
  "sp-version",
+ "sp-weights",
  "substrate-wasm-builder 17.0.0",
 ]
 
@@ -3566,6 +3652,7 @@ dependencies = [
  "sp-std 14.0.0",
  "sp-transaction-pool",
  "sp-version",
+ "sp-weights",
  "substrate-wasm-builder 17.0.0",
 ]
 
@@ -3599,17 +3686,6 @@ dependencies = [
  "winapi",
 ]
 
-[[package]]
-name = "getrandom"
-version = "0.1.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
-dependencies = [
- "cfg-if",
- "libc",
- "wasi 0.9.0+wasi-snapshot-preview1",
-]
-
 [[package]]
 name = "getrandom"
 version = "0.2.15"
@@ -3619,7 +3695,7 @@ dependencies = [
  "cfg-if",
  "js-sys",
  "libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi",
  "wasm-bindgen",
 ]
 
@@ -3629,8 +3705,8 @@ version = "0.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9"
 dependencies = [
- "rand 0.8.5",
- "rand_core 0.6.4",
+ "rand",
+ "rand_core",
 ]
 
 [[package]]
@@ -3654,7 +3730,7 @@ dependencies = [
  "quote",
  "serde",
  "serde_json",
- "syn 2.0.61",
+ "syn 2.0.68",
  "textwrap",
  "thiserror",
  "typed-builder",
@@ -3682,7 +3758,13 @@ dependencies = [
 ]
 
 [[package]]
-name = "git-version"
+name = "gimli"
+version = "0.29.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"
+
+[[package]]
+name = "git-version"
 version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1ad568aa3db0fcbc81f2f116137f263d7304f512a1209b35b85150d3ef88ad19"
@@ -3698,7 +3780,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -3716,8 +3798,8 @@ dependencies = [
  "aho-corasick",
  "bstr",
  "log",
- "regex-automata 0.4.6",
- "regex-syntax 0.8.3",
+ "regex-automata 0.4.7",
+ "regex-syntax 0.8.4",
 ]
 
 [[package]]
@@ -3731,6 +3813,17 @@ dependencies = [
  "walkdir",
 ]
 
+[[package]]
+name = "globwalk"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757"
+dependencies = [
+ "bitflags 2.6.0",
+ "ignore",
+ "walkdir",
+]
+
 [[package]]
 name = "governor"
 version = "0.6.3"
@@ -3743,10 +3836,10 @@ dependencies = [
  "futures-timer",
  "no-std-compat",
  "nonzero_ext",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "portable-atomic",
  "quanta",
- "rand 0.8.5",
+ "rand",
  "smallvec",
  "spinning_top",
 ]
@@ -3816,8 +3909,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
 dependencies = [
  "ff",
- "rand_core 0.6.4",
- "subtle 2.5.0",
+ "rand_core",
+ "subtle 2.6.1",
 ]
 
 [[package]]
@@ -3891,6 +3984,7 @@ dependencies = [
  "sp-std 14.0.0",
  "sp-transaction-pool",
  "sp-version",
+ "sp-weights",
  "substrate-wasm-builder 17.0.0",
 ]
 
@@ -3913,6 +4007,25 @@ dependencies = [
  "tracing",
 ]
 
+[[package]]
+name = "h2"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "http 1.1.0",
+ "indexmap 2.2.6",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
 [[package]]
 name = "handlebars"
 version = "5.1.2"
@@ -3947,9 +4060,6 @@ name = "hashbrown"
 version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
-dependencies = [
- "ahash 0.7.8",
-]
 
 [[package]]
 name = "hashbrown"
@@ -3957,7 +4067,7 @@ version = "0.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
 dependencies = [
- "ahash 0.8.11",
+ "ahash",
 ]
 
 [[package]]
@@ -3966,7 +4076,7 @@ version = "0.14.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
 dependencies = [
- "ahash 0.8.11",
+ "ahash",
  "allocator-api2",
  "serde",
 ]
@@ -3998,6 +4108,12 @@ version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 
+[[package]]
+name = "hermit-abi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+
 [[package]]
 name = "hex"
 version = "0.4.3"
@@ -4006,9 +4122,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
 
 [[package]]
 name = "hex-conservative"
-version = "0.1.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30ed443af458ccb6d81c1e7e661545f94d3176752fb1df2f543b902a1e0f51e2"
+checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20"
 
 [[package]]
 name = "hex-literal"
@@ -4120,28 +4236,22 @@ dependencies = [
 
 [[package]]
 name = "http-body-util"
-version = "0.1.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d"
+checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
 dependencies = [
  "bytes",
- "futures-core",
+ "futures-util",
  "http 1.1.0",
  "http-body 1.0.0",
  "pin-project-lite 0.2.14",
 ]
 
-[[package]]
-name = "http-range-header"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f"
-
 [[package]]
 name = "httparse"
-version = "1.8.0"
+version = "1.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"
 
 [[package]]
 name = "httpdate"
@@ -4157,15 +4267,15 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
 
 [[package]]
 name = "hyper"
-version = "0.14.28"
+version = "0.14.29"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
+checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33"
 dependencies = [
  "bytes",
  "futures-channel",
  "futures-core",
  "futures-util",
- "h2",
+ "h2 0.3.26",
  "http 0.2.12",
  "http-body 0.4.6",
  "httparse",
@@ -4181,16 +4291,18 @@ dependencies = [
 
 [[package]]
 name = "hyper"
-version = "1.3.1"
+version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d"
+checksum = "c4fe55fb7a772d59a5ff1dfbff4fe0258d19b89fec4b233e75d35d5d2316badc"
 dependencies = [
  "bytes",
  "futures-channel",
  "futures-util",
+ "h2 0.4.5",
  "http 1.1.0",
  "http-body 1.0.0",
  "httparse",
+ "httpdate",
  "itoa",
  "pin-project-lite 0.2.14",
  "smallvec",
@@ -4206,7 +4318,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
 dependencies = [
  "futures-util",
  "http 0.2.12",
- "hyper 0.14.28",
+ "hyper 0.14.29",
  "log",
  "rustls 0.21.12",
  "rustls-native-certs 0.6.3",
@@ -4216,16 +4328,16 @@ dependencies = [
 
 [[package]]
 name = "hyper-util"
-version = "0.1.3"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa"
+checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956"
 dependencies = [
  "bytes",
  "futures-channel",
  "futures-util",
  "http 1.1.0",
  "http-body 1.0.0",
- "hyper 1.3.1",
+ "hyper 1.4.0",
  "pin-project-lite 0.2.14",
  "socket2 0.5.7",
  "tokio",
@@ -4323,6 +4435,25 @@ dependencies = [
  "windows",
 ]
 
+[[package]]
+name = "igd-next"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "064d90fec10d541084e7b39ead8875a5a80d9114a2b18791565253bae25f49e4"
+dependencies = [
+ "async-trait",
+ "attohttpc",
+ "bytes",
+ "futures 0.3.30",
+ "http 0.2.12",
+ "hyper 0.14.29",
+ "log",
+ "rand",
+ "tokio",
+ "url",
+ "xmltree",
+]
+
 [[package]]
 name = "ignore"
 version = "0.4.22"
@@ -4333,7 +4464,7 @@ dependencies = [
  "globset",
  "log",
  "memchr",
- "regex-automata 0.4.6",
+ "regex-automata 0.4.7",
  "same-file",
  "walkdir",
  "winapi-util",
@@ -4370,18 +4501,18 @@ dependencies = [
 
 [[package]]
 name = "include_dir"
-version = "0.7.3"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e"
+checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd"
 dependencies = [
  "include_dir_macros",
 ]
 
 [[package]]
 name = "include_dir_macros"
-version = "0.7.3"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f"
+checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -4451,9 +4582,9 @@ dependencies = [
 
 [[package]]
 name = "instant"
-version = "0.1.12"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
 dependencies = [
  "cfg-if",
 ]
@@ -4479,7 +4610,7 @@ version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
 dependencies = [
- "hermit-abi",
+ "hermit-abi 0.3.9",
  "libc",
  "windows-sys 0.48.0",
 ]
@@ -4514,7 +4645,7 @@ version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
 dependencies = [
- "hermit-abi",
+ "hermit-abi 0.3.9",
  "libc",
  "windows-sys 0.52.0",
 ]
@@ -4534,6 +4665,15 @@ dependencies = [
  "either",
 ]
 
+[[package]]
+name = "itertools"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+dependencies = [
+ "either",
+]
+
 [[package]]
 name = "itertools"
 version = "0.12.1"
@@ -4549,6 +4689,26 @@ version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
+[[package]]
+name = "jni"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec"
+dependencies = [
+ "cesu8",
+ "combine 4.6.7",
+ "jni-sys",
+ "log",
+ "thiserror",
+ "walkdir",
+]
+
+[[package]]
+name = "jni-sys"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
+
 [[package]]
 name = "jobserver"
 version = "0.1.31"
@@ -4573,12 +4733,23 @@ version = "0.22.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cfdb12a2381ea5b2e68c3469ec604a007b367778cdb14d09612c8069ebd616ad"
 dependencies = [
- "jsonrpsee-client-transport",
- "jsonrpsee-core",
+ "jsonrpsee-client-transport 0.22.5",
+ "jsonrpsee-core 0.22.5",
  "jsonrpsee-http-client",
+ "jsonrpsee-types 0.22.5",
+]
+
+[[package]]
+name = "jsonrpsee"
+version = "0.23.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b089779ad7f80768693755a031cc14a7766aba707cbe886674e3f79e9b7e47"
+dependencies = [
+ "jsonrpsee-core 0.23.2",
  "jsonrpsee-proc-macros",
  "jsonrpsee-server",
- "jsonrpsee-types",
+ "jsonrpsee-types 0.23.2",
+ "jsonrpsee-ws-client",
  "tokio",
  "tracing",
 ]
@@ -4591,11 +4762,11 @@ checksum = "4978087a58c3ab02efc5b07c5e5e2803024536106fd5506f558db172c889b3aa"
 dependencies = [
  "futures-util",
  "http 0.2.12",
- "jsonrpsee-core",
+ "jsonrpsee-core 0.22.5",
  "pin-project",
- "rustls-native-certs 0.7.0",
+ "rustls-native-certs 0.7.1",
  "rustls-pki-types",
- "soketto",
+ "soketto 0.7.1",
  "thiserror",
  "tokio",
  "tokio-rustls 0.25.0",
@@ -4604,6 +4775,29 @@ dependencies = [
  "url",
 ]
 
+[[package]]
+name = "jsonrpsee-client-transport"
+version = "0.23.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08163edd8bcc466c33d79e10f695cdc98c00d1e6ddfb95cec41b6b0279dd5432"
+dependencies = [
+ "base64 0.22.1",
+ "futures-util",
+ "http 1.1.0",
+ "jsonrpsee-core 0.23.2",
+ "pin-project",
+ "rustls 0.23.10",
+ "rustls-pki-types",
+ "rustls-platform-verifier",
+ "soketto 0.8.0",
+ "thiserror",
+ "tokio",
+ "tokio-rustls 0.26.0",
+ "tokio-util",
+ "tracing",
+ "url",
+]
+
 [[package]]
 name = "jsonrpsee-core"
 version = "0.22.5"
@@ -4615,11 +4809,37 @@ dependencies = [
  "beef",
  "futures-timer",
  "futures-util",
- "hyper 0.14.28",
- "jsonrpsee-types",
- "parking_lot 0.12.2",
+ "hyper 0.14.29",
+ "jsonrpsee-types 0.22.5",
  "pin-project",
- "rand 0.8.5",
+ "rustc-hash",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+ "tracing",
+]
+
+[[package]]
+name = "jsonrpsee-core"
+version = "0.23.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79712302e737d23ca0daa178e752c9334846b08321d439fd89af9a384f8c830b"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "beef",
+ "bytes",
+ "futures-timer",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "http-body-util",
+ "jsonrpsee-types 0.23.2",
+ "parking_lot 0.12.3",
+ "pin-project",
+ "rand",
  "rustc-hash",
  "serde",
  "serde_json",
@@ -4636,10 +4856,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1ccf93fc4a0bfe05d851d37d7c32b7f370fe94336b52a2f0efc5f1981895c2e5"
 dependencies = [
  "async-trait",
- "hyper 0.14.28",
+ "hyper 0.14.29",
  "hyper-rustls",
- "jsonrpsee-core",
- "jsonrpsee-types",
+ "jsonrpsee-core 0.22.5",
+ "jsonrpsee-types 0.22.5",
  "serde",
  "serde_json",
  "thiserror",
@@ -4651,33 +4871,37 @@ dependencies = [
 
 [[package]]
 name = "jsonrpsee-proc-macros"
-version = "0.22.5"
+version = "0.23.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d0bb047e79a143b32ea03974a6bf59b62c2a4c5f5d42a381c907a8bbb3f75c0"
+checksum = "7895f186d5921065d96e16bd795e5ca89ac8356ec423fafc6e3d7cf8ec11aee4"
 dependencies = [
- "heck 0.4.1",
+ "heck 0.5.0",
  "proc-macro-crate 3.1.0",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "jsonrpsee-server"
-version = "0.22.5"
+version = "0.23.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12d8b6a9674422a8572e0b0abb12feeb3f2aeda86528c80d0350c2bd0923ab41"
+checksum = "654afab2e92e5d88ebd8a39d6074483f3f2bfdf91c5ac57fe285e7127cdd4f51"
 dependencies = [
+ "anyhow",
  "futures-util",
- "http 0.2.12",
- "hyper 0.14.28",
- "jsonrpsee-core",
- "jsonrpsee-types",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "http-body-util",
+ "hyper 1.4.0",
+ "hyper-util",
+ "jsonrpsee-core 0.23.2",
+ "jsonrpsee-types 0.23.2",
  "pin-project",
  "route-recognizer",
  "serde",
  "serde_json",
- "soketto",
+ "soketto 0.8.0",
  "thiserror",
  "tokio",
  "tokio-stream",
@@ -4699,6 +4923,32 @@ dependencies = [
  "thiserror",
 ]
 
+[[package]]
+name = "jsonrpsee-types"
+version = "0.23.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9c465fbe385238e861fdc4d1c85e04ada6c1fd246161d26385c1b311724d2af"
+dependencies = [
+ "beef",
+ "http 1.1.0",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
+name = "jsonrpsee-ws-client"
+version = "0.23.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c28759775f5cb2f1ea9667672d3fe2b0e701d1f4b7b67954e60afe7fd058b5e"
+dependencies = [
+ "http 1.1.0",
+ "jsonrpsee-client-transport 0.23.2",
+ "jsonrpsee-core 0.23.2",
+ "jsonrpsee-types 0.23.2",
+ "url",
+]
+
 [[package]]
 name = "k256"
 version = "0.13.3"
@@ -4764,7 +5014,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bf7a85fe66f9ff9cd74e169fdd2c94c6e1e74c412c99a73b4df3200b5d3760b2"
 dependencies = [
  "kvdb",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
+]
+
+[[package]]
+name = "kvdb-rocksdb"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b644c70b92285f66bfc2032922a79000ea30af7bc2ab31902992a5dcb9b434f6"
+dependencies = [
+ "kvdb",
+ "num_cpus",
+ "parking_lot 0.12.3",
+ "regex",
+ "rocksdb",
+ "smallvec",
 ]
 
 [[package]]
@@ -4787,20 +5051,36 @@ dependencies = [
  "proc-macro2",
  "quote",
  "regex",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "lazy_static"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "lazycell"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
 
 [[package]]
 name = "libc"
-version = "0.2.154"
+version = "0.2.155"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
+
+[[package]]
+name = "libloading"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d"
+dependencies = [
+ "cfg-if",
+ "windows-targets 0.52.5",
+]
 
 [[package]]
 name = "libm"
@@ -4810,14 +5090,15 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
 
 [[package]]
 name = "libp2p"
-version = "0.51.4"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f35eae38201a993ece6bdc823292d6abd1bffed1c4d0f4a3517d2bd8e1d917fe"
+checksum = "e94495eb319a85b70a68b85e2389a95bb3555c71c49025b78c691a854a7e6464"
 dependencies = [
  "bytes",
+ "either",
  "futures 0.3.30",
  "futures-timer",
- "getrandom 0.2.15",
+ "getrandom",
  "instant",
  "libp2p-allow-block-list",
  "libp2p-connection-limits",
@@ -4834,18 +5115,21 @@ dependencies = [
  "libp2p-request-response",
  "libp2p-swarm",
  "libp2p-tcp",
+ "libp2p-upnp",
  "libp2p-wasm-ext",
  "libp2p-websocket",
  "libp2p-yamux",
- "multiaddr",
+ "multiaddr 0.18.1",
  "pin-project",
+ "rw-stream-sink",
+ "thiserror",
 ]
 
 [[package]]
 name = "libp2p-allow-block-list"
-version = "0.1.1"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "510daa05efbc25184458db837f6f9a5143888f1caa742426d92e1833ddd38a50"
+checksum = "55b46558c5c0bf99d3e2a1a38fd54ff5476ca66dd1737b12466a1824dd219311"
 dependencies = [
  "libp2p-core",
  "libp2p-identity",
@@ -4855,9 +5139,9 @@ dependencies = [
 
 [[package]]
 name = "libp2p-connection-limits"
-version = "0.1.0"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4caa33f1d26ed664c4fe2cca81a08c8e07d4c1c04f2f4ac7655c2dd85467fda0"
+checksum = "2f5107ad45cb20b2f6c3628c7b6014b996fcb13a88053f4569c872c6e30abf58"
 dependencies = [
  "libp2p-core",
  "libp2p-identity",
@@ -4867,9 +5151,9 @@ dependencies = [
 
 [[package]]
 name = "libp2p-core"
-version = "0.39.2"
+version = "0.40.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c1df63c0b582aa434fb09b2d86897fa2b419ffeccf934b36f87fcedc8e835c2"
+checksum = "dd44289ab25e4c9230d9246c475a22241e301b23e8f4061d3bdef304a1a99713"
 dependencies = [
  "either",
  "fnv",
@@ -4878,50 +5162,53 @@ dependencies = [
  "instant",
  "libp2p-identity",
  "log",
- "multiaddr",
- "multihash 0.17.0",
+ "multiaddr 0.18.1",
+ "multihash 0.19.1",
  "multistream-select",
  "once_cell",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "pin-project",
  "quick-protobuf",
- "rand 0.8.5",
+ "rand",
  "rw-stream-sink",
  "smallvec",
  "thiserror",
- "unsigned-varint",
+ "unsigned-varint 0.7.2",
  "void",
 ]
 
 [[package]]
 name = "libp2p-dns"
-version = "0.39.0"
+version = "0.40.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "146ff7034daae62077c415c2376b8057368042df6ab95f5432ad5e88568b1554"
+checksum = "e6a18db73084b4da2871438f6239fef35190b05023de7656e877c18a00541a3b"
 dependencies = [
+ "async-trait",
  "futures 0.3.30",
  "libp2p-core",
+ "libp2p-identity",
  "log",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "smallvec",
- "trust-dns-resolver 0.22.0",
+ "trust-dns-resolver",
 ]
 
 [[package]]
 name = "libp2p-identify"
-version = "0.42.2"
+version = "0.43.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5455f472243e63b9c497ff320ded0314254a9eb751799a39c283c6f20b793f3c"
+checksum = "45a96638a0a176bec0a4bcaebc1afa8cf909b114477209d7456ade52c61cd9cd"
 dependencies = [
  "asynchronous-codec",
  "either",
  "futures 0.3.30",
+ "futures-bounded",
  "futures-timer",
  "libp2p-core",
  "libp2p-identity",
  "libp2p-swarm",
  "log",
- "lru 0.10.1",
+ "lru",
  "quick-protobuf",
  "quick-protobuf-codec",
  "smallvec",
@@ -4931,27 +5218,27 @@ dependencies = [
 
 [[package]]
 name = "libp2p-identity"
-version = "0.1.3"
+version = "0.2.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce"
+checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8"
 dependencies = [
- "bs58 0.4.0",
- "ed25519-dalek 2.1.1",
- "log",
- "multiaddr",
- "multihash 0.17.0",
+ "bs58 0.5.1",
+ "ed25519-dalek",
+ "hkdf",
+ "multihash 0.19.1",
  "quick-protobuf",
- "rand 0.8.5",
+ "rand",
  "sha2 0.10.8",
  "thiserror",
+ "tracing",
  "zeroize",
 ]
 
 [[package]]
 name = "libp2p-kad"
-version = "0.43.3"
+version = "0.44.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39d5ef876a2b2323d63c258e63c2f8e36f205fe5a11f0b3095d59635650790ff"
+checksum = "16ea178dabba6dde6ffc260a8e0452ccdc8f79becf544946692fff9d412fc29d"
 dependencies = [
  "arrayvec 0.7.4",
  "asynchronous-codec",
@@ -4966,20 +5253,21 @@ dependencies = [
  "libp2p-swarm",
  "log",
  "quick-protobuf",
- "rand 0.8.5",
+ "quick-protobuf-codec",
+ "rand",
  "sha2 0.10.8",
  "smallvec",
  "thiserror",
  "uint",
- "unsigned-varint",
+ "unsigned-varint 0.7.2",
  "void",
 ]
 
 [[package]]
 name = "libp2p-mdns"
-version = "0.43.1"
+version = "0.44.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19983e1f949f979a928f2c603de1cf180cc0dc23e4ac93a62651ccb18341460b"
+checksum = "42a2567c305232f5ef54185e9604579a894fd0674819402bb0ac0246da82f52a"
 dependencies = [
  "data-encoding",
  "futures 0.3.30",
@@ -4988,9 +5276,9 @@ dependencies = [
  "libp2p-identity",
  "libp2p-swarm",
  "log",
- "rand 0.8.5",
+ "rand",
  "smallvec",
- "socket2 0.4.10",
+ "socket2 0.5.7",
  "tokio",
  "trust-dns-proto 0.22.0",
  "void",
@@ -4998,63 +5286,69 @@ dependencies = [
 
 [[package]]
 name = "libp2p-metrics"
-version = "0.12.0"
+version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a42ec91e227d7d0dafa4ce88b333cdf5f277253873ab087555c92798db2ddd46"
+checksum = "239ba7d28f8d0b5d77760dc6619c05c7e88e74ec8fbbe97f856f20a56745e620"
 dependencies = [
+ "instant",
  "libp2p-core",
  "libp2p-identify",
+ "libp2p-identity",
  "libp2p-kad",
  "libp2p-ping",
  "libp2p-swarm",
+ "once_cell",
  "prometheus-client",
 ]
 
 [[package]]
 name = "libp2p-noise"
-version = "0.42.2"
+version = "0.43.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c3673da89d29936bc6435bafc638e2f184180d554ce844db65915113f86ec5e"
+checksum = "d2eeec39ad3ad0677551907dd304b2f13f17208ccebe333bef194076cd2e8921"
 dependencies = [
  "bytes",
- "curve25519-dalek 3.2.0",
+ "curve25519-dalek",
  "futures 0.3.30",
  "libp2p-core",
  "libp2p-identity",
  "log",
+ "multiaddr 0.18.1",
+ "multihash 0.19.1",
  "once_cell",
  "quick-protobuf",
- "rand 0.8.5",
+ "rand",
  "sha2 0.10.8",
  "snow",
  "static_assertions",
  "thiserror",
- "x25519-dalek 1.1.1",
+ "x25519-dalek",
  "zeroize",
 ]
 
 [[package]]
 name = "libp2p-ping"
-version = "0.42.0"
+version = "0.43.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e57759c19c28a73ef1eb3585ca410cefb72c1a709fcf6de1612a378e4219202"
+checksum = "e702d75cd0827dfa15f8fd92d15b9932abe38d10d21f47c50438c71dd1b5dae3"
 dependencies = [
  "either",
  "futures 0.3.30",
  "futures-timer",
  "instant",
  "libp2p-core",
+ "libp2p-identity",
  "libp2p-swarm",
  "log",
- "rand 0.8.5",
+ "rand",
  "void",
 ]
 
 [[package]]
 name = "libp2p-quic"
-version = "0.7.0-alpha.3"
+version = "0.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6b26abd81cd2398382a1edfe739b539775be8a90fa6914f39b2ab49571ec735"
+checksum = "130d451d83f21b81eb7b35b360bc7972aeafb15177784adc56528db082e6b927"
 dependencies = [
  "bytes",
  "futures 0.3.30",
@@ -5064,19 +5358,21 @@ dependencies = [
  "libp2p-identity",
  "libp2p-tls",
  "log",
- "parking_lot 0.12.2",
- "quinn-proto",
- "rand 0.8.5",
- "rustls 0.20.9",
+ "parking_lot 0.12.3",
+ "quinn 0.10.2",
+ "rand",
+ "ring 0.16.20",
+ "rustls 0.21.12",
+ "socket2 0.5.7",
  "thiserror",
  "tokio",
 ]
 
 [[package]]
 name = "libp2p-request-response"
-version = "0.24.1"
+version = "0.25.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ffdb374267d42dc5ed5bc53f6e601d4a64ac5964779c6e40bb9e4f14c1e30d5"
+checksum = "d8e3b4d67870478db72bac87bfc260ee6641d0734e0e3e275798f089c3fecfd4"
 dependencies = [
  "async-trait",
  "futures 0.3.30",
@@ -5084,15 +5380,17 @@ dependencies = [
  "libp2p-core",
  "libp2p-identity",
  "libp2p-swarm",
- "rand 0.8.5",
+ "log",
+ "rand",
  "smallvec",
+ "void",
 ]
 
 [[package]]
 name = "libp2p-swarm"
-version = "0.42.2"
+version = "0.43.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "903b3d592d7694e56204d211f29d31bc004be99386644ba8731fc3e3ef27b296"
+checksum = "580189e0074af847df90e75ef54f3f30059aedda37ea5a1659e8b9fca05c0141"
 dependencies = [
  "either",
  "fnv",
@@ -5103,7 +5401,9 @@ dependencies = [
  "libp2p-identity",
  "libp2p-swarm-derive",
  "log",
- "rand 0.8.5",
+ "multistream-select",
+ "once_cell",
+ "rand",
  "smallvec",
  "tokio",
  "void",
@@ -5111,36 +5411,39 @@ dependencies = [
 
 [[package]]
 name = "libp2p-swarm-derive"
-version = "0.32.0"
+version = "0.33.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fba456131824ab6acd4c7bf61e9c0f0a3014b5fc9868ccb8e10d344594cdc4f"
+checksum = "c4d5ec2a3df00c7836d7696c136274c9c59705bac69133253696a6c932cd1d74"
 dependencies = [
  "heck 0.4.1",
+ "proc-macro-warning 0.4.2",
+ "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "libp2p-tcp"
-version = "0.39.0"
+version = "0.40.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33d33698596d7722d85d3ab0c86c2c322254fce1241e91208e3679b4eb3026cf"
+checksum = "b558dd40d1bcd1aaaed9de898e9ec6a436019ecc2420dd0016e712fbb61c5508"
 dependencies = [
  "futures 0.3.30",
  "futures-timer",
  "if-watch",
  "libc",
  "libp2p-core",
+ "libp2p-identity",
  "log",
- "socket2 0.4.10",
+ "socket2 0.5.7",
  "tokio",
 ]
 
 [[package]]
 name = "libp2p-tls"
-version = "0.1.0"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff08d13d0dc66e5e9ba6279c1de417b84fa0d0adc3b03e5732928c180ec02781"
+checksum = "8218d1d5482b122ccae396bbf38abdcb283ecc96fa54760e1dfd251f0546ac61"
 dependencies = [
  "futures 0.3.30",
  "futures-rustls",
@@ -5148,51 +5451,68 @@ dependencies = [
  "libp2p-identity",
  "rcgen",
  "ring 0.16.20",
- "rustls 0.20.9",
+ "rustls 0.21.12",
+ "rustls-webpki 0.101.7",
  "thiserror",
- "webpki",
- "x509-parser 0.14.0",
+ "x509-parser 0.15.1",
  "yasna",
 ]
 
+[[package]]
+name = "libp2p-upnp"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82775a47b34f10f787ad3e2a22e2c1541e6ebef4fe9f28f3ac553921554c94c1"
+dependencies = [
+ "futures 0.3.30",
+ "futures-timer",
+ "igd-next",
+ "libp2p-core",
+ "libp2p-swarm",
+ "log",
+ "tokio",
+ "void",
+]
+
 [[package]]
 name = "libp2p-wasm-ext"
-version = "0.39.0"
+version = "0.40.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77dff9d32353a5887adb86c8afc1de1a94d9e8c3bc6df8b2201d7cdf5c848f43"
+checksum = "1e5d8e3a9e07da0ef5b55a9f26c009c8fb3c725d492d8bb4b431715786eea79c"
 dependencies = [
  "futures 0.3.30",
  "js-sys",
  "libp2p-core",
- "parity-send-wrapper",
+ "send_wrapper",
  "wasm-bindgen",
  "wasm-bindgen-futures",
 ]
 
 [[package]]
 name = "libp2p-websocket"
-version = "0.41.0"
+version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "111273f7b3d3510524c752e8b7a5314b7f7a1fee7e68161c01a7d72cbb06db9f"
+checksum = "3facf0691bab65f571bc97c6c65ffa836248ca631d631b7691ac91deb7fceb5f"
 dependencies = [
  "either",
  "futures 0.3.30",
  "futures-rustls",
  "libp2p-core",
+ "libp2p-identity",
  "log",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "quicksink",
  "rw-stream-sink",
- "soketto",
+ "soketto 0.7.1",
  "url",
- "webpki-roots",
+ "webpki-roots 0.25.4",
 ]
 
 [[package]]
 name = "libp2p-yamux"
-version = "0.43.1"
+version = "0.44.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dcd21d950662700a385d4c6d68e2f5f54d778e97068cdd718522222ef513bda"
+checksum = "8eedcb62824c4300efb9cfd4e2a6edaf3ca097b9e68b36dabe45a44469fd6a85"
 dependencies = [
  "futures 0.3.30",
  "libp2p-core",
@@ -5207,10 +5527,25 @@ version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "libc",
 ]
 
+[[package]]
+name = "librocksdb-sys"
+version = "0.11.0+8.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3386f101bcb4bd252d8e9d2fb41ec3b0862a15a62b478c355b2982efa469e3e"
+dependencies = [
+ "bindgen",
+ "bzip2-sys",
+ "cc",
+ "glob",
+ "libc",
+ "libz-sys",
+ "tikv-jemalloc-sys",
+]
+
 [[package]]
 name = "libsecp256k1"
 version = "0.7.1"
@@ -5224,7 +5559,7 @@ dependencies = [
  "libsecp256k1-core",
  "libsecp256k1-gen-ecmult",
  "libsecp256k1-gen-genmult",
- "rand 0.8.5",
+ "rand",
  "serde",
  "sha2 0.9.9",
  "typenum",
@@ -5238,7 +5573,7 @@ checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451"
 dependencies = [
  "crunchy",
  "digest 0.9.0",
- "subtle 2.5.0",
+ "subtle 2.6.1",
 ]
 
 [[package]]
@@ -5261,9 +5596,9 @@ dependencies = [
 
 [[package]]
 name = "libz-sys"
-version = "1.1.16"
+version = "1.1.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9"
+checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e"
 dependencies = [
  "cc",
  "cmake",
@@ -5313,9 +5648,9 @@ checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.13"
+version = "0.4.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
 
 [[package]]
 name = "lioness"
@@ -5331,30 +5666,31 @@ dependencies = [
 
 [[package]]
 name = "litep2p"
-version = "0.3.0"
-source = "git+https://github.com/paritytech/litep2p?rev=e03a6023882db111beeb24d8c0ceaac0721d3f0f#e03a6023882db111beeb24d8c0ceaac0721d3f0f"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f46c51c205264b834ceed95c8b195026e700494bc3991aaba3b4ea9e20626d9"
 dependencies = [
  "async-trait",
  "bs58 0.4.0",
  "bytes",
  "cid 0.10.1",
- "ed25519-dalek 1.0.1",
+ "ed25519-dalek",
  "futures 0.3.30",
  "futures-timer",
  "hex-literal",
  "indexmap 2.2.6",
  "libc",
- "mockall",
- "multiaddr",
+ "mockall 0.12.1",
+ "multiaddr 0.17.1",
  "multihash 0.17.0",
  "network-interface",
  "nohash-hasher",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "pin-project",
- "prost 0.11.9",
- "prost-build",
- "quinn",
- "rand 0.8.5",
+ "prost 0.12.6",
+ "prost-build 0.11.9",
+ "quinn 0.9.4",
+ "rand",
  "rcgen",
  "ring 0.16.20",
  "rustls 0.20.9",
@@ -5372,13 +5708,13 @@ dependencies = [
  "tokio-tungstenite",
  "tokio-util",
  "tracing",
- "trust-dns-resolver 0.23.2",
+ "trust-dns-resolver",
  "uint",
- "unsigned-varint",
+ "unsigned-varint 0.8.0",
  "url",
  "webpki",
- "x25519-dalek 2.0.1",
- "x509-parser 0.15.1",
+ "x25519-dalek",
+ "x509-parser 0.16.0",
  "yasna",
  "zeroize",
 ]
@@ -5395,18 +5731,9 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
-
-[[package]]
-name = "lru"
-version = "0.10.1"
+version = "0.4.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670"
-dependencies = [
- "hashbrown 0.13.2",
-]
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
 
 [[package]]
 name = "lru"
@@ -5428,9 +5755,9 @@ dependencies = [
 
 [[package]]
 name = "lz4"
-version = "1.24.0"
+version = "1.25.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1"
+checksum = "d6eab492fe7f8651add23237ea56dbf11b3c4ff762ab83d40a47f11433421f91"
 dependencies = [
  "libc",
  "lz4-sys",
@@ -5438,9 +5765,9 @@ dependencies = [
 
 [[package]]
 name = "lz4-sys"
-version = "1.9.4"
+version = "1.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900"
+checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3"
 dependencies = [
  "cc",
  "libc",
@@ -5464,7 +5791,7 @@ dependencies = [
  "macro_magic_core",
  "macro_magic_macros",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -5478,7 +5805,7 @@ dependencies = [
  "macro_magic_core_macros",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -5489,7 +5816,7 @@ checksum = "9ea73aa640dc01d62a590d48c0c3521ed739d53b27f919b25c3551e233481654"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -5500,7 +5827,7 @@ checksum = "ef9d79ae96aaba821963320eb2b6e34d17df1e5a83d8a1985c29cc5be59577b3"
 dependencies = [
  "macro_magic_core",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -5551,9 +5878,9 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.7.2"
+version = "2.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
 [[package]]
 name = "memfd"
@@ -5608,7 +5935,7 @@ checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d"
 dependencies = [
  "byteorder",
  "keccak",
- "rand_core 0.6.4",
+ "rand_core",
  "zeroize",
 ]
 
@@ -5626,9 +5953,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "miniz_oxide"
-version = "0.7.2"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
+checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
 dependencies = [
  "adler",
 ]
@@ -5641,7 +5968,7 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
 dependencies = [
  "libc",
  "log",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi",
  "windows-sys 0.48.0",
 ]
 
@@ -5656,16 +5983,16 @@ dependencies = [
  "bitflags 1.3.2",
  "blake2 0.10.6",
  "c2-chacha",
- "curve25519-dalek 4.1.2",
+ "curve25519-dalek",
  "either",
  "hashlink",
  "lioness",
  "log",
- "parking_lot 0.12.2",
- "rand 0.8.5",
- "rand_chacha 0.3.1",
+ "parking_lot 0.12.3",
+ "rand",
+ "rand_chacha",
  "rand_distr",
- "subtle 2.5.0",
+ "subtle 2.6.1",
  "thiserror",
  "zeroize",
 ]
@@ -5680,8 +6007,23 @@ dependencies = [
  "downcast",
  "fragile",
  "lazy_static",
- "mockall_derive",
- "predicates",
+ "mockall_derive 0.11.4",
+ "predicates 2.1.5",
+ "predicates-tree",
+]
+
+[[package]]
+name = "mockall"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43766c2b5203b10de348ffe19f7e54564b64f3d6018ff7648d1e2d6d3a0f0a48"
+dependencies = [
+ "cfg-if",
+ "downcast",
+ "fragile",
+ "lazy_static",
+ "mockall_derive 0.12.1",
+ "predicates 3.1.0",
  "predicates-tree",
 ]
 
@@ -5697,22 +6039,53 @@ dependencies = [
  "syn 1.0.109",
 ]
 
+[[package]]
+name = "mockall_derive"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af7cbce79ec385a1d4f54baa90a76401eb15d9cab93685f62e7e9f942aa00ae2"
+dependencies = [
+ "cfg-if",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.68",
+]
+
+[[package]]
+name = "multiaddr"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b36f567c7099511fa8612bbbb52dda2419ce0bdbacf31714e3a5ffdb766d3bd"
+dependencies = [
+ "arrayref",
+ "byteorder",
+ "data-encoding",
+ "log",
+ "multibase",
+ "multihash 0.17.0",
+ "percent-encoding",
+ "serde",
+ "static_assertions",
+ "unsigned-varint 0.7.2",
+ "url",
+]
+
 [[package]]
 name = "multiaddr"
-version = "0.17.1"
+version = "0.18.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b36f567c7099511fa8612bbbb52dda2419ce0bdbacf31714e3a5ffdb766d3bd"
+checksum = "8b852bc02a2da5feed68cd14fa50d0774b92790a5bdbfa932a813926c8472070"
 dependencies = [
  "arrayref",
  "byteorder",
  "data-encoding",
- "log",
+ "libp2p-identity",
  "multibase",
- "multihash 0.17.0",
+ "multihash 0.19.1",
  "percent-encoding",
  "serde",
  "static_assertions",
- "unsigned-varint",
+ "unsigned-varint 0.7.2",
  "url",
 ]
 
@@ -5741,7 +6114,7 @@ dependencies = [
  "multihash-derive",
  "sha2 0.10.8",
  "sha3",
- "unsigned-varint",
+ "unsigned-varint 0.7.2",
 ]
 
 [[package]]
@@ -5758,7 +6131,17 @@ dependencies = [
  "multihash-derive",
  "sha2 0.10.8",
  "sha3",
- "unsigned-varint",
+ "unsigned-varint 0.7.2",
+]
+
+[[package]]
+name = "multihash"
+version = "0.19.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "076d548d76a0e2a0d4ab471d0b1c36c577786dfc4471242035d97a12a735c492"
+dependencies = [
+ "core2",
+ "unsigned-varint 0.7.2",
 ]
 
 [[package]]
@@ -5772,7 +6155,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "syn 1.0.109",
- "synstructure",
+ "synstructure 0.12.6",
 ]
 
 [[package]]
@@ -5781,25 +6164,31 @@ version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
 
+[[package]]
+name = "multimap"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
+
 [[package]]
 name = "multistream-select"
-version = "0.12.1"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27a"
+checksum = "ea0df8e5eec2298a62b326ee4f0d7fe1a6b90a09dfcf9df37b38f947a8c42f19"
 dependencies = [
  "bytes",
  "futures 0.3.30",
  "log",
  "pin-project",
  "smallvec",
- "unsigned-varint",
+ "unsigned-varint 0.7.2",
 ]
 
 [[package]]
 name = "nalgebra"
-version = "0.32.5"
+version = "0.32.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ea4908d4f23254adda3daa60ffef0f1ac7b8c3e9a864cf3cc154b251908a2ef"
+checksum = "7b5c17de023a86f59ed79891b2e5d5a94c705dbe904a5b5c9c952ea6221b03e4"
 dependencies = [
  "approx",
  "matrixmultiply",
@@ -5813,13 +6202,13 @@ dependencies = [
 
 [[package]]
 name = "nalgebra-macros"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91761aed67d03ad966ef783ae962ef9bbaca728d2dd7ceb7939ec110fffad998"
+checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -5828,7 +6217,7 @@ version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7bddcd3bf5144b6392de80e04c347cd7fab2508f6df16a85fc496ecd5cec39bc"
 dependencies = [
- "rand 0.8.5",
+ "rand",
 ]
 
 [[package]]
@@ -5926,9 +6315,9 @@ version = "0.28.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "cfg-if",
- "cfg_aliases",
+ "cfg_aliases 0.1.1",
  "libc",
 ]
 
@@ -5947,7 +6336,7 @@ checksum = "43794a0ace135be66a25d3ae77d41b91615fb68ae937f904090203e81f755b65"
 [[package]]
 name = "node-primitives"
 version = "2.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "sp-core",
  "sp-runtime",
@@ -5986,6 +6375,12 @@ dependencies = [
  "nom",
 ]
 
+[[package]]
+name = "nonempty"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9e591e719385e6ebaeb5ce5d3887f7d5676fceca6411d1925ccc95745f3d6f7"
+
 [[package]]
 name = "nonzero_ext"
 version = "0.3.0"
@@ -6004,7 +6399,7 @@ version = "6.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "crossbeam-channel",
  "filetime",
  "fsevent-sys",
@@ -6039,9 +6434,9 @@ dependencies = [
 
 [[package]]
 name = "num-bigint"
-version = "0.4.5"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7"
+checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
 dependencies = [
  "num-integer",
  "num-traits 0.2.19",
@@ -6117,7 +6512,7 @@ version = "1.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
 dependencies = [
- "hermit-abi",
+ "hermit-abi 0.3.9",
  "libc",
 ]
 
@@ -6142,13 +6537,31 @@ dependencies = [
  "memchr",
 ]
 
+[[package]]
+name = "object"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce"
+dependencies = [
+ "memchr",
+]
+
 [[package]]
 name = "oid-registry"
 version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff"
 dependencies = [
- "asn1-rs",
+ "asn1-rs 0.5.2",
+]
+
+[[package]]
+name = "oid-registry"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c958dd45046245b9c3c2547369bb634eb461670b2e7e0de552905801a648d1d"
+dependencies = [
+ "asn1-rs 0.6.1",
 ]
 
 [[package]]
@@ -6175,7 +6588,7 @@ version = "0.10.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "cfg-if",
  "foreign-types",
  "libc",
@@ -6192,7 +6605,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -6203,9 +6616,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
 
 [[package]]
 name = "openssl-src"
-version = "300.2.3+3.2.1"
+version = "300.3.1+3.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cff92b6f71555b61bb9315f7c64da3ca43d87531622120fea0195fc761b4843"
+checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91"
 dependencies = [
  "cc",
 ]
@@ -6238,7 +6651,7 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
 [[package]]
 name = "pallet-atomic-swap"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -6253,7 +6666,7 @@ dependencies = [
 [[package]]
 name = "pallet-authority-discovery"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -6290,7 +6703,7 @@ dependencies = [
 [[package]]
 name = "pallet-authorship"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -6304,7 +6717,7 @@ dependencies = [
 [[package]]
 name = "pallet-babe"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -6328,7 +6741,7 @@ dependencies = [
 [[package]]
 name = "pallet-balances"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -6362,7 +6775,7 @@ dependencies = [
 [[package]]
 name = "pallet-collective"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -6383,7 +6796,7 @@ dependencies = [
  "frame-benchmarking",
  "frame-support",
  "frame-system",
- "getrandom 0.2.15",
+ "getrandom",
  "pallet-authority-members",
  "pallet-authorship",
  "pallet-balances",
@@ -6446,7 +6859,7 @@ version = "1.0.0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -6473,7 +6886,7 @@ dependencies = [
 [[package]]
 name = "pallet-grandpa"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -6516,7 +6929,7 @@ dependencies = [
 [[package]]
 name = "pallet-im-online"
 version = "27.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -6554,7 +6967,7 @@ dependencies = [
 [[package]]
 name = "pallet-multisig"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -6604,7 +7017,7 @@ dependencies = [
 [[package]]
 name = "pallet-preimage"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -6637,7 +7050,7 @@ dependencies = [
 [[package]]
 name = "pallet-proxy"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -6669,7 +7082,7 @@ dependencies = [
 [[package]]
 name = "pallet-scheduler"
 version = "29.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -6687,7 +7100,7 @@ dependencies = [
 [[package]]
 name = "pallet-session"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -6741,7 +7154,7 @@ dependencies = [
 [[package]]
 name = "pallet-sudo"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -6757,7 +7170,7 @@ dependencies = [
 [[package]]
 name = "pallet-timestamp"
 version = "27.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -6777,7 +7190,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -6793,9 +7206,9 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc"
 version = "30.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "jsonrpsee",
+ "jsonrpsee 0.23.2",
  "pallet-transaction-payment-rpc-runtime-api",
  "parity-scale-codec",
  "sp-api",
@@ -6809,7 +7222,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc-runtime-api"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "pallet-transaction-payment",
  "parity-scale-codec",
@@ -6821,7 +7234,7 @@ dependencies = [
 [[package]]
 name = "pallet-treasury"
 version = "27.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -6876,7 +7289,7 @@ dependencies = [
 [[package]]
 name = "pallet-utility"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -6896,8 +7309,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9"
 dependencies = [
  "bitcoin_hashes 0.13.0",
- "rand 0.8.5",
- "rand_core 0.6.4",
+ "rand",
+ "rand_core",
  "serde",
  "unicode-normalization",
 ]
@@ -6916,8 +7329,8 @@ dependencies = [
  "log",
  "lz4",
  "memmap2 0.5.10",
- "parking_lot 0.12.2",
- "rand 0.8.5",
+ "parking_lot 0.12.3",
+ "rand",
  "siphasher 0.3.11",
  "snap",
  "winapi",
@@ -6950,12 +7363,6 @@ dependencies = [
  "syn 1.0.109",
 ]
 
-[[package]]
-name = "parity-send-wrapper"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f"
-
 [[package]]
 name = "parity-wasm"
 version = "0.45.0"
@@ -6981,9 +7388,9 @@ dependencies = [
 
 [[package]]
 name = "parking_lot"
-version = "0.12.2"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
 dependencies = [
  "lock_api",
  "parking_lot_core 0.9.10",
@@ -7011,7 +7418,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
 dependencies = [
  "cfg-if",
  "libc",
- "redox_syscall 0.5.1",
+ "redox_syscall 0.5.2",
  "smallvec",
  "windows-targets 0.52.5",
 ]
@@ -7029,8 +7436,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166"
 dependencies = [
  "base64ct",
- "rand_core 0.6.4",
- "subtle 2.5.0",
+ "rand_core",
+ "subtle 2.6.1",
 ]
 
 [[package]]
@@ -7049,6 +7456,12 @@ dependencies = [
  "password-hash",
 ]
 
+[[package]]
+name = "peeking_take_while"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+
 [[package]]
 name = "peg"
 version = "0.6.3"
@@ -7093,9 +7506,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
 [[package]]
 name = "pest"
-version = "2.7.10"
+version = "2.7.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8"
+checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95"
 dependencies = [
  "memchr",
  "thiserror",
@@ -7104,9 +7517,9 @@ dependencies = [
 
 [[package]]
 name = "pest_derive"
-version = "2.7.10"
+version = "2.7.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459"
+checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a"
 dependencies = [
  "pest",
  "pest_generator",
@@ -7114,22 +7527,22 @@ dependencies = [
 
 [[package]]
 name = "pest_generator"
-version = "2.7.10"
+version = "2.7.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687"
+checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183"
 dependencies = [
  "pest",
  "pest_meta",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "pest_meta"
-version = "2.7.10"
+version = "2.7.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd"
+checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f"
 dependencies = [
  "once_cell",
  "pest",
@@ -7163,7 +7576,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -7186,9 +7599,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
 [[package]]
 name = "piper"
-version = "0.2.1"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
+checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391"
 dependencies = [
  "atomic-waker",
  "fastrand",
@@ -7221,12 +7634,6 @@ dependencies = [
  "regex",
 ]
 
-[[package]]
-name = "platforms"
-version = "3.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7"
-
 [[package]]
 name = "polkavm"
 version = "0.9.3"
@@ -7276,7 +7683,7 @@ dependencies = [
  "polkavm-common",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -7286,7 +7693,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429"
 dependencies = [
  "polkavm-derive-impl",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -7312,13 +7719,13 @@ checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120"
 
 [[package]]
 name = "polling"
-version = "3.7.0"
+version = "3.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3"
+checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b"
 dependencies = [
  "cfg-if",
  "concurrent-queue",
- "hermit-abi",
+ "hermit-abi 0.4.0",
  "pin-project-lite 0.2.14",
  "rustix 0.38.34",
  "tracing",
@@ -7360,7 +7767,7 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9"
 dependencies = [
- "rand 0.8.5",
+ "rand",
 ]
 
 [[package]]
@@ -7389,6 +7796,16 @@ dependencies = [
  "regex",
 ]
 
+[[package]]
+name = "predicates"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8"
+dependencies = [
+ "anstyle",
+ "predicates-core",
+]
+
 [[package]]
 name = "predicates-core"
 version = "1.0.6"
@@ -7406,23 +7823,23 @@ dependencies = [
 ]
 
 [[package]]
-name = "prettier-please"
-version = "0.2.0"
+name = "prettyplease"
+version = "0.1.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22020dfcf177fcc7bf5deaf7440af371400c67c0de14c399938d8ed4fb4645d3"
+checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86"
 dependencies = [
  "proc-macro2",
- "syn 2.0.61",
+ "syn 1.0.109",
 ]
 
 [[package]]
 name = "prettyplease"
-version = "0.1.11"
+version = "0.2.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f28f53e8b192565862cf99343194579a022eb9c7dd3a8d03134734803c7b3125"
+checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e"
 dependencies = [
  "proc-macro2",
- "syn 1.0.109",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -7481,6 +7898,17 @@ dependencies = [
  "version_check",
 ]
 
+[[package]]
+name = "proc-macro-warning"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d1eaa7fa0aa1929ffdf7eeb6eac234dde6268914a14ad44d23521ab6a9b258e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.68",
+]
+
 [[package]]
 name = "proc-macro-warning"
 version = "1.0.2"
@@ -7489,14 +7917,14 @@ checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.82"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
 dependencies = [
  "unicode-ident",
 ]
@@ -7511,19 +7939,19 @@ dependencies = [
  "fnv",
  "lazy_static",
  "memchr",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "thiserror",
 ]
 
 [[package]]
 name = "prometheus-client"
-version = "0.19.0"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d6fa99d535dd930d1249e6c79cb3c2915f9172a540fe2b02a4c8f9ca954721e"
+checksum = "3c99afa9a01501019ac3a14d71d9f94050346f55ca471ce90c799a15c58f61e2"
 dependencies = [
  "dtoa",
  "itoa",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "prometheus-client-derive-encode",
 ]
 
@@ -7535,7 +7963,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -7550,12 +7978,12 @@ dependencies = [
 
 [[package]]
 name = "prost"
-version = "0.12.4"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0f5d036824e4761737860779c906171497f6d55681139d8312388f8fe398922"
+checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
 dependencies = [
  "bytes",
- "prost-derive 0.12.5",
+ "prost-derive 0.12.6",
 ]
 
 [[package]]
@@ -7569,17 +7997,38 @@ dependencies = [
  "itertools 0.10.5",
  "lazy_static",
  "log",
- "multimap",
+ "multimap 0.8.3",
  "petgraph",
- "prettyplease",
+ "prettyplease 0.1.25",
  "prost 0.11.9",
- "prost-types",
+ "prost-types 0.11.9",
  "regex",
  "syn 1.0.109",
  "tempfile",
  "which",
 ]
 
+[[package]]
+name = "prost-build"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4"
+dependencies = [
+ "bytes",
+ "heck 0.5.0",
+ "itertools 0.12.1",
+ "log",
+ "multimap 0.10.0",
+ "once_cell",
+ "petgraph",
+ "prettyplease 0.2.20",
+ "prost 0.12.6",
+ "prost-types 0.12.6",
+ "regex",
+ "syn 2.0.68",
+ "tempfile",
+]
+
 [[package]]
 name = "prost-derive"
 version = "0.11.9"
@@ -7595,15 +8044,15 @@ dependencies = [
 
 [[package]]
 name = "prost-derive"
-version = "0.12.5"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9554e3ab233f0a932403704f1a1d08c30d5ccd931adfdfa1e8b5a19b52c1d55a"
+checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
 dependencies = [
  "anyhow",
  "itertools 0.12.1",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -7615,6 +8064,15 @@ dependencies = [
  "prost 0.11.9",
 ]
 
+[[package]]
+name = "prost-types"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0"
+dependencies = [
+ "prost 0.12.6",
+]
+
 [[package]]
 name = "psm"
 version = "0.1.21"
@@ -7634,7 +8092,7 @@ dependencies = [
  "libc",
  "once_cell",
  "raw-cpuid",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi",
  "web-sys",
  "winapi",
 ]
@@ -7656,15 +8114,15 @@ dependencies = [
 
 [[package]]
 name = "quick-protobuf-codec"
-version = "0.1.0"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1693116345026436eb2f10b677806169c1a1260c1c60eaaffe3fb5a29ae23d8b"
+checksum = "f8ededb1cd78531627244d51dd0c7139fbe736c7d57af0092a76f0ffb2f56e98"
 dependencies = [
  "asynchronous-codec",
  "bytes",
  "quick-protobuf",
  "thiserror",
- "unsigned-varint",
+ "unsigned-varint 0.7.2",
 ]
 
 [[package]]
@@ -7686,8 +8144,8 @@ checksum = "2e8b432585672228923edbbf64b8b12c14e1112f62e88737655b4a083dbcd78e"
 dependencies = [
  "bytes",
  "pin-project-lite 0.2.14",
- "quinn-proto",
- "quinn-udp",
+ "quinn-proto 0.9.6",
+ "quinn-udp 0.3.2",
  "rustc-hash",
  "rustls 0.20.9",
  "thiserror",
@@ -7696,6 +8154,24 @@ dependencies = [
  "webpki",
 ]
 
+[[package]]
+name = "quinn"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75"
+dependencies = [
+ "bytes",
+ "futures-io",
+ "pin-project-lite 0.2.14",
+ "quinn-proto 0.10.6",
+ "quinn-udp 0.4.1",
+ "rustc-hash",
+ "rustls 0.21.12",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
 [[package]]
 name = "quinn-proto"
 version = "0.9.6"
@@ -7703,7 +8179,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "94b0b33c13a79f669c85defaf4c275dc86a0c0372807d0ca3d78e0bb87274863"
 dependencies = [
  "bytes",
- "rand 0.8.5",
+ "rand",
  "ring 0.16.20",
  "rustc-hash",
  "rustls 0.20.9",
@@ -7714,6 +8190,23 @@ dependencies = [
  "webpki",
 ]
 
+[[package]]
+name = "quinn-proto"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a"
+dependencies = [
+ "bytes",
+ "rand",
+ "ring 0.16.20",
+ "rustc-hash",
+ "rustls 0.21.12",
+ "slab",
+ "thiserror",
+ "tinyvec",
+ "tracing",
+]
+
 [[package]]
 name = "quinn-udp"
 version = "0.3.2"
@@ -7721,12 +8214,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "641538578b21f5e5c8ea733b736895576d0fe329bb883b937db6f4d163dbaaf4"
 dependencies = [
  "libc",
- "quinn-proto",
+ "quinn-proto 0.9.6",
  "socket2 0.4.10",
  "tracing",
  "windows-sys 0.42.0",
 ]
 
+[[package]]
+name = "quinn-udp"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7"
+dependencies = [
+ "bytes",
+ "libc",
+ "socket2 0.5.7",
+ "tracing",
+ "windows-sys 0.48.0",
+]
+
 [[package]]
 name = "quote"
 version = "1.0.36"
@@ -7742,19 +8248,6 @@ version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
 
-[[package]]
-name = "rand"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
-dependencies = [
- "getrandom 0.1.16",
- "libc",
- "rand_chacha 0.2.2",
- "rand_core 0.5.1",
- "rand_hc",
-]
-
 [[package]]
 name = "rand"
 version = "0.8.5"
@@ -7762,18 +8255,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
 dependencies = [
  "libc",
- "rand_chacha 0.3.1",
- "rand_core 0.6.4",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
-dependencies = [
- "ppv-lite86",
- "rand_core 0.5.1",
+ "rand_chacha",
+ "rand_core",
 ]
 
 [[package]]
@@ -7783,16 +8266,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
 dependencies = [
  "ppv-lite86",
- "rand_core 0.6.4",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
-dependencies = [
- "getrandom 0.1.16",
+ "rand_core",
 ]
 
 [[package]]
@@ -7801,7 +8275,7 @@ version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
 dependencies = [
- "getrandom 0.2.15",
+ "getrandom",
 ]
 
 [[package]]
@@ -7811,16 +8285,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
 dependencies = [
  "num-traits 0.2.19",
- "rand 0.8.5",
-]
-
-[[package]]
-name = "rand_hc"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
-dependencies = [
- "rand_core 0.5.1",
+ "rand",
 ]
 
 [[package]]
@@ -7829,7 +8294,7 @@ version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e"
 dependencies = [
- "rand_core 0.6.4",
+ "rand_core",
 ]
 
 [[package]]
@@ -7838,7 +8303,7 @@ version = "11.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e29830cbb1290e404f24c73af91c5d8d631ce7e128691e9477556b540cd01ecd"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
 ]
 
 [[package]]
@@ -7879,6 +8344,22 @@ dependencies = [
  "yasna",
 ]
 
+[[package]]
+name = "reconnecting-jsonrpsee-ws-client"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06fa4f17e09edfc3131636082faaec633c7baa269396b4004040bc6c52f49f65"
+dependencies = [
+ "cfg_aliases 0.2.1",
+ "finito",
+ "futures 0.3.30",
+ "jsonrpsee 0.23.2",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
 [[package]]
 name = "redox_syscall"
 version = "0.2.16"
@@ -7899,11 +8380,11 @@ dependencies = [
 
 [[package]]
 name = "redox_syscall"
-version = "0.5.1"
+version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e"
+checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
 ]
 
 [[package]]
@@ -7912,7 +8393,7 @@ version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
 dependencies = [
- "getrandom 0.2.15",
+ "getrandom",
  "libredox",
  "thiserror",
 ]
@@ -7934,7 +8415,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -7964,14 +8445,14 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.10.4"
+version = "1.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
+checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-automata 0.4.6",
- "regex-syntax 0.8.3",
+ "regex-automata 0.4.7",
+ "regex-syntax 0.8.4",
 ]
 
 [[package]]
@@ -7985,13 +8466,13 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.4.6"
+version = "0.4.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-syntax 0.8.3",
+ "regex-syntax 0.8.4",
 ]
 
 [[package]]
@@ -8008,15 +8489,15 @@ checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
 
 [[package]]
 name = "reqwest"
-version = "0.12.4"
+version = "0.12.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10"
+checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37"
 dependencies = [
  "base64 0.22.1",
  "bytes",
@@ -8025,7 +8506,7 @@ dependencies = [
  "http 1.1.0",
  "http-body 1.0.0",
  "http-body-util",
- "hyper 1.3.1",
+ "hyper 1.4.0",
  "hyper-util",
  "ipnet",
  "js-sys",
@@ -8064,13 +8545,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
 dependencies = [
  "hmac 0.12.1",
- "subtle 2.5.0",
+ "subtle 2.6.1",
 ]
 
 [[package]]
 name = "ring"
 version = "0.1.0"
-source = "git+https://github.com/w3f/ring-proof#b273d33f9981e2bb3375ab45faeb537f7ee35224"
+source = "git+https://github.com/w3f/ring-proof#96137b150288a66bc9e4df495efc64769b5d1321"
 dependencies = [
  "ark-ec",
  "ark-ff",
@@ -8106,13 +8587,23 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
 dependencies = [
  "cc",
  "cfg-if",
- "getrandom 0.2.15",
+ "getrandom",
  "libc",
  "spin 0.9.8",
  "untrusted 0.9.0",
  "windows-sys 0.52.0",
 ]
 
+[[package]]
+name = "rocksdb"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb6f170a4041d50a0ce04b0d2e14916d6ca863ea2e422689a5b694395d299ffe"
+dependencies = [
+ "libc",
+ "librocksdb-sys",
+]
+
 [[package]]
 name = "route-recognizer"
 version = "0.3.1"
@@ -8211,10 +8702,10 @@ version = "0.38.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "errno",
  "libc",
- "linux-raw-sys 0.4.13",
+ "linux-raw-sys 0.4.14",
  "windows-sys 0.52.0",
 ]
 
@@ -8224,7 +8715,6 @@ version = "0.20.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99"
 dependencies = [
- "log",
  "ring 0.16.20",
  "sct",
  "webpki",
@@ -8251,8 +8741,23 @@ dependencies = [
  "log",
  "ring 0.17.8",
  "rustls-pki-types",
- "rustls-webpki 0.102.3",
- "subtle 2.5.0",
+ "rustls-webpki 0.102.5",
+ "subtle 2.6.1",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls"
+version = "0.23.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402"
+dependencies = [
+ "log",
+ "once_cell",
+ "ring 0.17.8",
+ "rustls-pki-types",
+ "rustls-webpki 0.102.5",
+ "subtle 2.6.1",
  "zeroize",
 ]
 
@@ -8270,9 +8775,9 @@ dependencies = [
 
 [[package]]
 name = "rustls-native-certs"
-version = "0.7.0"
+version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792"
+checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba"
 dependencies = [
  "openssl-probe",
  "rustls-pemfile 2.1.2",
@@ -8306,6 +8811,33 @@ version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d"
 
+[[package]]
+name = "rustls-platform-verifier"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e3beb939bcd33c269f4bf946cc829fcd336370267c4a927ac0399c84a3151a1"
+dependencies = [
+ "core-foundation",
+ "core-foundation-sys",
+ "jni",
+ "log",
+ "once_cell",
+ "rustls 0.23.10",
+ "rustls-native-certs 0.7.1",
+ "rustls-platform-verifier-android",
+ "rustls-webpki 0.102.5",
+ "security-framework",
+ "security-framework-sys",
+ "webpki-roots 0.26.3",
+ "winapi",
+]
+
+[[package]]
+name = "rustls-platform-verifier-android"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84e217e7fdc8466b5b35d30f8c0a30febd29173df4a3a0c2115d306b9c4117ad"
+
 [[package]]
 name = "rustls-webpki"
 version = "0.101.7"
@@ -8318,9 +8850,9 @@ dependencies = [
 
 [[package]]
 name = "rustls-webpki"
-version = "0.102.3"
+version = "0.102.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf"
+checksum = "f9a6fccd794a42c2c105b513a2f62bc3fd8f3ba57a4593677ceb0bd035164d78"
 dependencies = [
  "ring 0.17.8",
  "rustls-pki-types",
@@ -8329,9 +8861,9 @@ dependencies = [
 
 [[package]]
 name = "rustversion"
-version = "1.0.16"
+version = "1.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "092474d1a01ea8278f69e6a358998405fae5b8b963ddaeb2b0b04a128bf1dfb0"
+checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
 
 [[package]]
 name = "ruzstd"
@@ -8346,9 +8878,9 @@ dependencies = [
 
 [[package]]
 name = "rw-stream-sink"
-version = "0.3.0"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04"
+checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1"
 dependencies = [
  "futures 0.3.30",
  "pin-project",
@@ -8363,9 +8895,9 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
 
 [[package]]
 name = "safe_arch"
-version = "0.7.1"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354"
+checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a"
 dependencies = [
  "bytemuck",
 ]
@@ -8382,7 +8914,7 @@ dependencies = [
 [[package]]
 name = "sc-allocator"
 version = "23.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "log",
  "sp-core",
@@ -8393,7 +8925,7 @@ dependencies = [
 [[package]]
 name = "sc-basic-authorship"
 version = "0.34.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "futures 0.3.30",
  "futures-timer",
@@ -8415,7 +8947,7 @@ dependencies = [
 [[package]]
 name = "sc-block-builder"
 version = "0.33.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -8430,9 +8962,9 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "array-bytes 6.2.2",
+ "array-bytes",
  "docify",
  "log",
  "memmap2 0.9.4",
@@ -8457,31 +8989,31 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec-derive"
 version = "11.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "proc-macro-crate 3.1.0",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "sc-cli"
 version = "0.36.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "array-bytes 6.2.2",
+ "array-bytes",
  "chrono",
  "clap",
  "fdlimit",
  "futures 0.3.30",
- "itertools 0.10.5",
+ "itertools 0.11.0",
  "libp2p-identity",
  "log",
  "names",
  "parity-bip39",
  "parity-scale-codec",
- "rand 0.8.5",
+ "rand",
  "regex",
  "rpassword",
  "sc-client-api",
@@ -8509,13 +9041,13 @@ dependencies = [
 [[package]]
 name = "sc-client-api"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "fnv",
  "futures 0.3.30",
  "log",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "sc-executor",
  "sc-transaction-pool-api",
  "sc-utils",
@@ -8536,16 +9068,17 @@ dependencies = [
 [[package]]
 name = "sc-client-db"
 version = "0.35.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "hash-db",
  "kvdb",
  "kvdb-memorydb",
+ "kvdb-rocksdb",
  "linked-hash-map",
  "log",
  "parity-db",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "sc-client-api",
  "sc-state-db",
  "schnellru",
@@ -8561,14 +9094,13 @@ dependencies = [
 [[package]]
 name = "sc-consensus"
 version = "0.33.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "futures 0.3.30",
- "futures-timer",
  "log",
- "mockall",
- "parking_lot 0.12.2",
+ "mockall 0.11.4",
+ "parking_lot 0.12.3",
  "sc-client-api",
  "sc-network-types",
  "sc-utils",
@@ -8586,7 +9118,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-aura"
 version = "0.34.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "futures 0.3.30",
@@ -8615,7 +9147,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe"
 version = "0.34.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "fork-tree",
@@ -8625,7 +9157,7 @@ dependencies = [
  "num-rational",
  "num-traits 0.2.19",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "sc-client-api",
  "sc-consensus",
  "sc-consensus-epochs",
@@ -8651,10 +9183,10 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe-rpc"
 version = "0.34.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "futures 0.3.30",
- "jsonrpsee",
+ "jsonrpsee 0.23.2",
  "sc-consensus-babe",
  "sc-consensus-epochs",
  "sc-rpc-api",
@@ -8673,7 +9205,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-epochs"
 version = "0.33.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "fork-tree",
  "parity-scale-codec",
@@ -8686,10 +9218,10 @@ dependencies = [
 [[package]]
 name = "sc-consensus-grandpa"
 version = "0.19.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "ahash 0.8.11",
- "array-bytes 6.2.2",
+ "ahash",
+ "array-bytes",
  "async-trait",
  "dyn-clone",
  "finality-grandpa",
@@ -8698,8 +9230,8 @@ dependencies = [
  "futures-timer",
  "log",
  "parity-scale-codec",
- "parking_lot 0.12.2",
- "rand 0.8.5",
+ "parking_lot 0.12.3",
+ "rand",
  "sc-block-builder",
  "sc-chain-spec",
  "sc-client-api",
@@ -8730,13 +9262,13 @@ dependencies = [
 [[package]]
 name = "sc-consensus-manual-seal"
 version = "0.35.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "assert_matches",
  "async-trait",
  "futures 0.3.30",
  "futures-timer",
- "jsonrpsee",
+ "jsonrpsee 0.23.2",
  "log",
  "parity-scale-codec",
  "sc-client-api",
@@ -8765,7 +9297,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-slots"
 version = "0.33.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "futures 0.3.30",
@@ -8788,10 +9320,10 @@ dependencies = [
 [[package]]
 name = "sc-executor"
 version = "0.32.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "sc-executor-common",
  "sc-executor-polkavm",
  "sc-executor-wasmtime",
@@ -8811,7 +9343,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-common"
 version = "0.29.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "polkavm",
  "sc-allocator",
@@ -8824,7 +9356,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-polkavm"
 version = "0.29.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "log",
  "polkavm",
@@ -8835,13 +9367,13 @@ dependencies = [
 [[package]]
 name = "sc-executor-wasmtime"
 version = "0.29.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "anyhow",
  "cfg-if",
  "libc",
  "log",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "rustix 0.36.17",
  "sc-allocator",
  "sc-executor-common",
@@ -8853,7 +9385,7 @@ dependencies = [
 [[package]]
 name = "sc-informant"
 version = "0.33.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "ansi_term",
  "futures 0.3.30",
@@ -8870,10 +9402,10 @@ dependencies = [
 [[package]]
 name = "sc-keystore"
 version = "25.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "array-bytes 6.2.2",
- "parking_lot 0.12.2",
+ "array-bytes",
+ "parking_lot 0.12.3",
  "serde_json",
  "sp-application-crypto",
  "sp-core",
@@ -8884,9 +9416,9 @@ dependencies = [
 [[package]]
 name = "sc-mixnet"
 version = "0.4.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "array-bytes 4.2.0",
+ "array-bytes",
  "arrayvec 0.7.4",
  "blake2 0.10.6",
  "bytes",
@@ -8894,9 +9426,9 @@ dependencies = [
  "futures-timer",
  "log",
  "mixnet",
- "multiaddr",
+ "multiaddr 0.18.1",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "sc-client-api",
  "sc-network",
  "sc-network-types",
@@ -8913,9 +9445,9 @@ dependencies = [
 [[package]]
 name = "sc-network"
 version = "0.34.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "array-bytes 6.2.2",
+ "array-bytes",
  "async-channel 1.9.0",
  "async-trait",
  "asynchronous-codec",
@@ -8930,15 +9462,15 @@ dependencies = [
  "linked_hash_set",
  "litep2p",
  "log",
- "mockall",
+ "mockall 0.11.4",
  "once_cell",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "partial_sort",
  "pin-project",
- "prost 0.11.9",
- "prost-build",
- "rand 0.8.5",
+ "prost 0.12.6",
+ "prost-build 0.12.6",
+ "rand",
  "sc-client-api",
  "sc-network-common",
  "sc-network-types",
@@ -8955,7 +9487,7 @@ dependencies = [
  "thiserror",
  "tokio",
  "tokio-stream",
- "unsigned-varint",
+ "unsigned-varint 0.7.2",
  "void",
  "wasm-timer",
  "zeroize",
@@ -8964,14 +9496,14 @@ dependencies = [
 [[package]]
 name = "sc-network-common"
 version = "0.33.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "bitflags 1.3.2",
  "futures 0.3.30",
  "libp2p-identity",
  "parity-scale-codec",
- "prost-build",
+ "prost-build 0.12.6",
  "sc-consensus",
  "sc-network-types",
  "sp-consensus",
@@ -8982,12 +9514,11 @@ dependencies = [
 [[package]]
 name = "sc-network-gossip"
 version = "0.34.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "ahash 0.8.11",
+ "ahash",
  "futures 0.3.30",
  "futures-timer",
- "libp2p",
  "log",
  "sc-network",
  "sc-network-common",
@@ -9002,15 +9533,15 @@ dependencies = [
 [[package]]
 name = "sc-network-light"
 version = "0.33.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "array-bytes 6.2.2",
+ "array-bytes",
  "async-channel 1.9.0",
  "futures 0.3.30",
  "log",
  "parity-scale-codec",
- "prost 0.12.4",
- "prost-build",
+ "prost 0.12.6",
+ "prost-build 0.12.6",
  "sc-client-api",
  "sc-network",
  "sc-network-types",
@@ -9023,9 +9554,9 @@ dependencies = [
 [[package]]
 name = "sc-network-sync"
 version = "0.33.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "array-bytes 6.2.2",
+ "array-bytes",
  "async-channel 1.9.0",
  "async-trait",
  "fork-tree",
@@ -9033,10 +9564,10 @@ dependencies = [
  "futures-timer",
  "libp2p",
  "log",
- "mockall",
+ "mockall 0.11.4",
  "parity-scale-codec",
- "prost 0.12.4",
- "prost-build",
+ "prost 0.12.6",
+ "prost-build 0.12.6",
  "sc-client-api",
  "sc-consensus",
  "sc-network",
@@ -9060,11 +9591,10 @@ dependencies = [
 [[package]]
 name = "sc-network-transactions"
 version = "0.33.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "array-bytes 6.2.2",
+ "array-bytes",
  "futures 0.3.30",
- "libp2p",
  "log",
  "parity-scale-codec",
  "sc-network",
@@ -9079,37 +9609,39 @@ dependencies = [
 
 [[package]]
 name = "sc-network-types"
-version = "0.10.0-dev"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+version = "0.10.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "bs58 0.4.0",
+ "bs58 0.5.1",
+ "ed25519-dalek",
  "libp2p-identity",
  "litep2p",
- "multiaddr",
- "multihash 0.17.0",
- "rand 0.8.5",
+ "log",
+ "multiaddr 0.18.1",
+ "multihash 0.19.1",
+ "rand",
  "thiserror",
+ "zeroize",
 ]
 
 [[package]]
 name = "sc-offchain"
 version = "29.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "array-bytes 6.2.2",
+ "array-bytes",
  "bytes",
  "fnv",
  "futures 0.3.30",
  "futures-timer",
- "hyper 0.14.28",
+ "hyper 0.14.29",
  "hyper-rustls",
- "libp2p",
  "log",
  "num_cpus",
  "once_cell",
  "parity-scale-codec",
- "parking_lot 0.12.2",
- "rand 0.8.5",
+ "parking_lot 0.12.3",
+ "rand",
  "sc-client-api",
  "sc-network",
  "sc-network-common",
@@ -9129,7 +9661,7 @@ dependencies = [
 [[package]]
 name = "sc-proposer-metrics"
 version = "0.17.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "log",
  "substrate-prometheus-endpoint",
@@ -9138,13 +9670,13 @@ dependencies = [
 [[package]]
 name = "sc-rpc"
 version = "29.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "futures 0.3.30",
- "jsonrpsee",
+ "jsonrpsee 0.23.2",
  "log",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "sc-block-builder",
  "sc-chain-spec",
  "sc-client-api",
@@ -9170,9 +9702,9 @@ dependencies = [
 [[package]]
 name = "sc-rpc-api"
 version = "0.33.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "jsonrpsee",
+ "jsonrpsee 0.23.2",
  "parity-scale-codec",
  "sc-chain-spec",
  "sc-mixnet",
@@ -9190,14 +9722,18 @@ dependencies = [
 [[package]]
 name = "sc-rpc-server"
 version = "11.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
+ "forwarded-header-value",
  "futures 0.3.30",
  "governor",
- "http 0.2.12",
- "hyper 0.14.28",
- "jsonrpsee",
+ "http 1.1.0",
+ "http-body-util",
+ "hyper 1.4.0",
+ "ip_network",
+ "jsonrpsee 0.23.2",
  "log",
+ "serde",
  "serde_json",
  "substrate-prometheus-endpoint",
  "tokio",
@@ -9208,17 +9744,17 @@ dependencies = [
 [[package]]
 name = "sc-rpc-spec-v2"
 version = "0.34.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "array-bytes 6.2.2",
+ "array-bytes",
  "futures 0.3.30",
  "futures-util",
  "hex",
- "jsonrpsee",
+ "jsonrpsee 0.23.2",
  "log",
  "parity-scale-codec",
- "parking_lot 0.12.2",
- "rand 0.8.5",
+ "parking_lot 0.12.3",
+ "rand",
  "sc-chain-spec",
  "sc-client-api",
  "sc-rpc",
@@ -9240,19 +9776,19 @@ dependencies = [
 [[package]]
 name = "sc-service"
 version = "0.35.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "directories",
  "exit-future",
  "futures 0.3.30",
  "futures-timer",
- "jsonrpsee",
+ "jsonrpsee 0.23.2",
  "log",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "pin-project",
- "rand 0.8.5",
+ "rand",
  "sc-chain-spec",
  "sc-client-api",
  "sc-client-db",
@@ -9304,24 +9840,24 @@ dependencies = [
 [[package]]
 name = "sc-state-db"
 version = "0.30.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "log",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "sp-core",
 ]
 
 [[package]]
 name = "sc-sysinfo"
 version = "27.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "derive_more",
  "futures 0.3.30",
  "libc",
  "log",
- "rand 0.8.5",
+ "rand",
  "rand_pcg",
  "regex",
  "sc-telemetry",
@@ -9336,15 +9872,15 @@ dependencies = [
 [[package]]
 name = "sc-telemetry"
 version = "15.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "chrono",
  "futures 0.3.30",
  "libp2p",
  "log",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "pin-project",
- "rand 0.8.5",
+ "rand",
  "sc-network",
  "sc-utils",
  "serde",
@@ -9356,7 +9892,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "ansi_term",
  "chrono",
@@ -9365,7 +9901,7 @@ dependencies = [
  "libc",
  "log",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "regex",
  "rustc-hash",
  "sc-client-api",
@@ -9379,25 +9915,25 @@ dependencies = [
  "sp-tracing 16.0.0",
  "thiserror",
  "tracing",
- "tracing-log 0.1.4",
+ "tracing-log 0.2.0",
  "tracing-subscriber 0.3.18",
 ]
 
 [[package]]
 name = "sc-tracing-proc-macro"
 version = "11.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "proc-macro-crate 3.1.0",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "sc-transaction-pool"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "futures 0.3.30",
@@ -9405,7 +9941,7 @@ dependencies = [
  "linked-hash-map",
  "log",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "sc-client-api",
  "sc-transaction-pool-api",
  "sc-utils",
@@ -9424,7 +9960,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-pool-api"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "futures 0.3.30",
@@ -9440,14 +9976,14 @@ dependencies = [
 [[package]]
 name = "sc-utils"
 version = "14.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-channel 1.9.0",
  "futures 0.3.30",
  "futures-timer",
  "lazy_static",
  "log",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "prometheus",
  "sp-arithmetic",
 ]
@@ -9460,7 +9996,19 @@ checksum = "662d10dcd57b1c2a3c41c9cf68f71fb09747ada1ea932ad961aca7e2ca28315f"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
- "scale-type-resolver",
+ "scale-type-resolver 0.1.1",
+ "serde",
+]
+
+[[package]]
+name = "scale-bits"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e57b1e7f6b65ed1f04e79a85a57d755ad56d76fdf1e9bddcc9ae14f71fcdcf54"
+dependencies = [
+ "parity-scale-codec",
+ "scale-info",
+ "scale-type-resolver 0.2.0",
  "serde",
 ]
 
@@ -9469,21 +10017,34 @@ name = "scale-decode"
 version = "0.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "afc79ba56a1c742f5aeeed1f1801f3edf51f7e818f0a54582cac6f131364ea7b"
+dependencies = [
+ "derive_more",
+ "parity-scale-codec",
+ "scale-bits 0.5.0",
+ "scale-type-resolver 0.1.1",
+ "smallvec",
+]
+
+[[package]]
+name = "scale-decode"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e98f3262c250d90e700bb802eb704e1f841e03331c2eb815e46516c4edbf5b27"
 dependencies = [
  "derive_more",
  "parity-scale-codec",
  "primitive-types",
- "scale-bits",
+ "scale-bits 0.6.0",
  "scale-decode-derive",
- "scale-type-resolver",
+ "scale-type-resolver 0.2.0",
  "smallvec",
 ]
 
 [[package]]
 name = "scale-decode-derive"
-version = "0.11.1"
+version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5398fdb3c7bea3cb419bac4983aadacae93fe1a7b5f693f4ebd98c3821aad7a5"
+checksum = "9bb22f574168103cdd3133b19281639ca65ad985e24612728f727339dcaf4021"
 dependencies = [
  "darling 0.14.4",
  "proc-macro2",
@@ -9496,21 +10057,34 @@ name = "scale-encode"
 version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "628800925a33794fb5387781b883b5e14d130fece9af5a63613867b8de07c5c7"
+dependencies = [
+ "derive_more",
+ "parity-scale-codec",
+ "scale-bits 0.5.0",
+ "scale-type-resolver 0.1.1",
+ "smallvec",
+]
+
+[[package]]
+name = "scale-encode"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ba0b9c48dc0eb20c60b083c29447c0c4617cb7c4a4c9fef72aa5c5bc539e15e"
 dependencies = [
  "derive_more",
  "parity-scale-codec",
  "primitive-types",
- "scale-bits",
+ "scale-bits 0.6.0",
  "scale-encode-derive",
- "scale-type-resolver",
+ "scale-type-resolver 0.2.0",
  "smallvec",
 ]
 
 [[package]]
 name = "scale-encode-derive"
-version = "0.6.0"
+version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a304e1af7cdfbe7a24e08b012721456cc8cecdedadc14b3d10513eada63233c"
+checksum = "82ab7e60e2d9c8d47105f44527b26f04418e5e624ffc034f6b4a86c0ba19c5bf"
 dependencies = [
  "darling 0.14.4",
  "proc-macro-crate 1.1.3",
@@ -9555,16 +10129,26 @@ dependencies = [
  "smallvec",
 ]
 
+[[package]]
+name = "scale-type-resolver"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0cded6518aa0bd6c1be2b88ac81bf7044992f0f154bfbabd5ad34f43512abcb"
+dependencies = [
+ "scale-info",
+ "smallvec",
+]
+
 [[package]]
 name = "scale-typegen"
-version = "0.2.1"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d470fa75e71b12b3244a4113adc4bc49891f3daba2054703cacd06256066397e"
+checksum = "498d1aecf2ea61325d4511787c115791639c0fd21ef4f8e11e49dd09eff2bbac"
 dependencies = [
  "proc-macro2",
  "quote",
  "scale-info",
- "syn 2.0.61",
+ "syn 2.0.68",
  "thiserror",
 ]
 
@@ -9573,6 +10157,23 @@ name = "scale-value"
 version = "0.14.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c07ccfee963104335c971aaf8b7b0e749be8569116322df23f1f75c4ca9e4a28"
+dependencies = [
+ "derive_more",
+ "either",
+ "frame-metadata 15.1.0",
+ "parity-scale-codec",
+ "scale-bits 0.5.0",
+ "scale-decode 0.11.1",
+ "scale-encode 0.6.0",
+ "scale-info",
+ "scale-type-resolver 0.1.1",
+]
+
+[[package]]
+name = "scale-value"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2cf9738c263c665144177201126bdad39d3d62512152f178f35002228026976"
 dependencies = [
  "base58",
  "blake2 0.10.6",
@@ -9580,11 +10181,11 @@ dependencies = [
  "either",
  "frame-metadata 15.1.0",
  "parity-scale-codec",
- "scale-bits",
- "scale-decode",
- "scale-encode",
+ "scale-bits 0.6.0",
+ "scale-decode 0.13.1",
+ "scale-encode 0.7.1",
  "scale-info",
- "scale-type-resolver",
+ "scale-type-resolver 0.2.0",
  "serde",
  "yap",
 ]
@@ -9600,11 +10201,11 @@ dependencies = [
 
 [[package]]
 name = "schnellru"
-version = "0.2.2"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b0cf7da6fc4477944d5529807234f66802fcb618fc62b9c05bedca7f9be6c43"
+checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367"
 dependencies = [
- "ahash 0.8.11",
+ "ahash",
  "cfg-if",
  "hashbrown 0.13.2",
 ]
@@ -9618,13 +10219,13 @@ dependencies = [
  "aead",
  "arrayref",
  "arrayvec 0.7.4",
- "curve25519-dalek 4.1.2",
+ "curve25519-dalek",
  "getrandom_or_panic",
  "merlin",
- "rand_core 0.6.4",
+ "rand_core",
  "serde_bytes",
  "sha2 0.10.8",
- "subtle 2.5.0",
+ "subtle 2.6.1",
  "zeroize",
 ]
 
@@ -9652,15 +10253,15 @@ dependencies = [
 
 [[package]]
 name = "sctp-proto"
-version = "0.1.7"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f64cef148d3295c730c3cb340b0b252a4d570b1c7d4bf0808f88540b0a888bc"
+checksum = "b6220f78bb44c15f326b0596113305f6101097a18755d53727a575c97e09fb24"
 dependencies = [
  "bytes",
  "crc",
  "fxhash",
  "log",
- "rand 0.8.5",
+ "rand",
  "slab",
  "thiserror",
 ]
@@ -9674,7 +10275,7 @@ dependencies = [
  "heck 0.4.1",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -9688,7 +10289,7 @@ dependencies = [
  "generic-array 0.14.7",
  "pkcs8",
  "serdect",
- "subtle 2.5.0",
+ "subtle 2.6.1",
  "zeroize",
 ]
 
@@ -9725,10 +10326,11 @@ version = "2.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "core-foundation",
  "core-foundation-sys",
  "libc",
+ "num-bigint",
  "security-framework-sys",
 ]
 
@@ -9766,40 +10368,46 @@ version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
 
+[[package]]
+name = "send_wrapper"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
+
 [[package]]
 name = "serde"
-version = "1.0.201"
+version = "1.0.203"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c"
+checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_bytes"
-version = "0.11.14"
+version = "0.11.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734"
+checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a"
 dependencies = [
  "serde",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.201"
+version = "1.0.203"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865"
+checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.117"
+version = "1.0.120"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
+checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
 dependencies = [
  "itoa",
  "ryu",
@@ -9808,9 +10416,9 @@ dependencies = [
 
 [[package]]
 name = "serde_spanned"
-version = "0.6.5"
+version = "0.6.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0"
 dependencies = [
  "serde",
 ]
@@ -9938,6 +10546,12 @@ dependencies = [
  "lazy_static",
 ]
 
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
 [[package]]
 name = "signal-hook-registry"
 version = "1.4.2"
@@ -9947,12 +10561,6 @@ dependencies = [
  "libc",
 ]
 
-[[package]]
-name = "signature"
-version = "1.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c"
-
 [[package]]
 name = "signature"
 version = "2.2.0"
@@ -9960,7 +10568,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
 dependencies = [
  "digest 0.10.7",
- "rand_core 0.6.4",
+ "rand_core",
 ]
 
 [[package]]
@@ -9982,7 +10590,7 @@ version = "0.5.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cae9a3fcdadafb6d97f4c0e007e4247b114ee0f119f650c3cbf3a8b3a1479694"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
 ]
 
 [[package]]
@@ -10042,7 +10650,7 @@ checksum = "0eb01866308440fc64d6c44d9e86c5cc17adfe33c4d6eed55da9145044d0ffc1"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -10057,7 +10665,7 @@ version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e635339259e51ef85ac7aa29a1cd991b957047507288697a690e80ab97d07cad"
 dependencies = [
- "async-channel 2.2.1",
+ "async-channel 2.3.1",
  "async-executor",
  "async-fs",
  "async-io",
@@ -10084,7 +10692,7 @@ dependencies = [
  "chacha20",
  "crossbeam-queue",
  "derive_more",
- "ed25519-zebra 4.0.3",
+ "ed25519-zebra",
  "either",
  "event-listener 4.0.3",
  "fnv",
@@ -10105,8 +10713,8 @@ dependencies = [
  "pbkdf2",
  "pin-project",
  "poly1305",
- "rand 0.8.5",
- "rand_chacha 0.3.1",
+ "rand",
+ "rand_chacha",
  "ruzstd",
  "schnorrkel",
  "serde",
@@ -10116,10 +10724,10 @@ dependencies = [
  "siphasher 1.0.1",
  "slab",
  "smallvec",
- "soketto",
+ "soketto 0.7.1",
  "twox-hash",
  "wasmi",
- "x25519-dalek 2.0.1",
+ "x25519-dalek",
  "zeroize",
 ]
 
@@ -10129,7 +10737,7 @@ version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5496f2d116b7019a526b1039ec2247dd172b8670633b1a64a614c9ea12c9d8c7"
 dependencies = [
- "async-channel 2.2.1",
+ "async-channel 2.3.1",
  "async-lock",
  "base64 0.21.7",
  "blake2-rfc",
@@ -10144,12 +10752,12 @@ dependencies = [
  "hex",
  "itertools 0.12.1",
  "log",
- "lru 0.12.3",
+ "lru",
  "no-std-net",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "pin-project",
- "rand 0.8.5",
- "rand_chacha 0.3.1",
+ "rand",
+ "rand_chacha",
  "serde",
  "serde_json",
  "siphasher 1.0.1",
@@ -10174,12 +10782,12 @@ dependencies = [
  "aes-gcm",
  "blake2 0.10.6",
  "chacha20poly1305",
- "curve25519-dalek 4.1.2",
- "rand_core 0.6.4",
+ "curve25519-dalek",
+ "rand_core",
  "ring 0.17.8",
  "rustc_version",
  "sha2 0.10.8",
- "subtle 2.5.0",
+ "subtle 2.6.1",
 ]
 
 [[package]]
@@ -10210,20 +10818,35 @@ checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2"
 dependencies = [
  "base64 0.13.1",
  "bytes",
- "flate2",
  "futures 0.3.30",
- "http 0.2.12",
  "httparse",
  "log",
- "rand 0.8.5",
+ "rand",
  "sha-1 0.9.8",
 ]
 
+[[package]]
+name = "soketto"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37468c595637c10857701c990f93a40ce0e357cedb0953d1c26c8d8027f9bb53"
+dependencies = [
+ "base64 0.22.1",
+ "bytes",
+ "futures 0.3.30",
+ "http 1.1.0",
+ "httparse",
+ "log",
+ "rand",
+ "sha1",
+]
+
 [[package]]
 name = "sp-api"
 version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
+ "docify",
  "hash-db",
  "log",
  "parity-scale-codec",
@@ -10244,7 +10867,7 @@ dependencies = [
 [[package]]
 name = "sp-api-proc-macro"
 version = "15.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "Inflector",
  "blake2 0.10.6",
@@ -10252,13 +10875,13 @@ dependencies = [
  "proc-macro-crate 3.1.0",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "sp-application-crypto"
 version = "30.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -10271,7 +10894,7 @@ dependencies = [
 [[package]]
 name = "sp-arithmetic"
 version = "23.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "docify",
  "integer-sqrt",
@@ -10304,7 +10927,7 @@ dependencies = [
 [[package]]
 name = "sp-authority-discovery"
 version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -10316,7 +10939,7 @@ dependencies = [
 [[package]]
 name = "sp-block-builder"
 version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "sp-api",
  "sp-inherents",
@@ -10326,12 +10949,12 @@ dependencies = [
 [[package]]
 name = "sp-blockchain"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "futures 0.3.30",
  "log",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "schnellru",
  "sp-api",
  "sp-consensus",
@@ -10344,7 +10967,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus"
 version = "0.32.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "futures 0.3.30",
@@ -10359,7 +10982,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-aura"
 version = "0.32.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -10375,7 +10998,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-babe"
 version = "0.32.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -10393,7 +11016,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-grandpa"
 version = "13.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "finality-grandpa",
  "log",
@@ -10410,7 +11033,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-slots"
 version = "0.32.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -10421,31 +11044,31 @@ dependencies = [
 [[package]]
 name = "sp-core"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "array-bytes 6.2.2",
+ "array-bytes",
  "bandersnatch_vrfs",
  "bitflags 1.3.2",
  "blake2 0.10.6",
  "bounded-collections",
  "bs58 0.5.1",
  "dyn-clonable",
- "ed25519-zebra 3.1.0",
+ "ed25519-zebra",
  "futures 0.3.30",
  "hash-db",
  "hash256-std-hasher",
  "impl-serde",
- "itertools 0.10.5",
+ "itertools 0.11.0",
  "k256",
  "libsecp256k1",
  "log",
  "merlin",
  "parity-bip39",
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "paste",
  "primitive-types",
- "rand 0.8.5",
+ "rand",
  "scale-info",
  "schnorrkel",
  "secp256k1",
@@ -10468,7 +11091,7 @@ dependencies = [
 [[package]]
 name = "sp-core-hashing"
 version = "15.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "sp-crypto-hashing",
 ]
@@ -10497,7 +11120,7 @@ dependencies = [
 [[package]]
 name = "sp-crypto-hashing"
 version = "0.1.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "blake2b_simd",
  "byteorder",
@@ -10510,20 +11133,20 @@ dependencies = [
 [[package]]
 name = "sp-crypto-hashing-proc-macro"
 version = "0.1.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "quote",
  "sp-crypto-hashing",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "sp-database"
 version = "10.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "kvdb",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
 ]
 
 [[package]]
@@ -10533,17 +11156,17 @@ source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "sp-debug-derive"
 version = "14.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -10575,7 +11198,7 @@ dependencies = [
 [[package]]
 name = "sp-externalities"
 version = "0.25.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "environmental",
  "parity-scale-codec",
@@ -10585,7 +11208,7 @@ dependencies = [
 [[package]]
 name = "sp-genesis-builder"
 version = "0.8.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -10597,7 +11220,7 @@ dependencies = [
 [[package]]
 name = "sp-inherents"
 version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "impl-trait-for-tuples",
@@ -10610,10 +11233,11 @@ dependencies = [
 [[package]]
 name = "sp-io"
 version = "30.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "bytes",
- "ed25519-dalek 2.1.1",
+ "docify",
+ "ed25519-dalek",
  "libsecp256k1",
  "log",
  "parity-scale-codec",
@@ -10636,20 +11260,20 @@ dependencies = [
 [[package]]
 name = "sp-keyring"
 version = "31.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "sp-core",
  "sp-runtime",
- "strum 0.26.2",
+ "strum 0.26.3",
 ]
 
 [[package]]
 name = "sp-keystore"
 version = "0.34.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "parity-scale-codec",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "sp-core",
  "sp-externalities 0.25.0",
 ]
@@ -10666,7 +11290,7 @@ dependencies = [
 [[package]]
 name = "sp-maybe-compressed-blob"
 version = "11.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "thiserror",
  "zstd 0.12.4",
@@ -10687,7 +11311,7 @@ dependencies = [
 [[package]]
 name = "sp-metadata-ir"
 version = "0.6.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "frame-metadata 16.0.0",
  "parity-scale-codec",
@@ -10697,7 +11321,7 @@ dependencies = [
 [[package]]
 name = "sp-mixnet"
 version = "0.4.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -10708,7 +11332,7 @@ dependencies = [
 [[package]]
 name = "sp-offchain"
 version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "sp-api",
  "sp-core",
@@ -10718,7 +11342,7 @@ dependencies = [
 [[package]]
 name = "sp-panic-handler"
 version = "13.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "backtrace",
  "lazy_static",
@@ -10728,7 +11352,7 @@ dependencies = [
 [[package]]
 name = "sp-rpc"
 version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "rustc-hash",
  "serde",
@@ -10738,16 +11362,17 @@ dependencies = [
 [[package]]
 name = "sp-runtime"
 version = "31.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "docify",
  "either",
  "hash256-std-hasher",
  "impl-trait-for-tuples",
  "log",
+ "num-traits 0.2.19",
  "parity-scale-codec",
  "paste",
- "rand 0.8.5",
+ "rand",
  "scale-info",
  "serde",
  "simple-mermaid",
@@ -10780,7 +11405,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface"
 version = "24.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "bytes",
  "impl-trait-for-tuples",
@@ -10806,26 +11431,26 @@ dependencies = [
  "proc-macro-crate 3.1.0",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "sp-runtime-interface-proc-macro"
 version = "17.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "Inflector",
  "expander",
  "proc-macro-crate 3.1.0",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "sp-session"
 version = "27.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -10839,7 +11464,7 @@ dependencies = [
 [[package]]
 name = "sp-staking"
 version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
@@ -10852,13 +11477,13 @@ dependencies = [
 [[package]]
 name = "sp-state-machine"
 version = "0.35.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "hash-db",
  "log",
  "parity-scale-codec",
- "parking_lot 0.12.2",
- "rand 0.8.5",
+ "parking_lot 0.12.3",
+ "rand",
  "smallvec",
  "sp-core",
  "sp-externalities 0.25.0",
@@ -10872,14 +11497,14 @@ dependencies = [
 [[package]]
 name = "sp-statement-store"
 version = "10.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "aes-gcm",
- "curve25519-dalek 4.1.2",
- "ed25519-dalek 2.1.1",
+ "curve25519-dalek",
+ "ed25519-dalek",
  "hkdf",
  "parity-scale-codec",
- "rand 0.8.5",
+ "rand",
  "scale-info",
  "sha2 0.10.8",
  "sp-api",
@@ -10890,7 +11515,7 @@ dependencies = [
  "sp-runtime",
  "sp-runtime-interface 24.0.0",
  "thiserror",
- "x25519-dalek 2.0.1",
+ "x25519-dalek",
 ]
 
 [[package]]
@@ -10901,7 +11526,7 @@ source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808
 [[package]]
 name = "sp-std"
 version = "14.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 
 [[package]]
 name = "sp-storage"
@@ -10919,7 +11544,7 @@ dependencies = [
 [[package]]
 name = "sp-storage"
 version = "19.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -10931,7 +11556,7 @@ dependencies = [
 [[package]]
 name = "sp-timestamp"
 version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -10955,7 +11580,7 @@ dependencies = [
 [[package]]
 name = "sp-tracing"
 version = "16.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "parity-scale-codec",
  "tracing",
@@ -10966,7 +11591,7 @@ dependencies = [
 [[package]]
 name = "sp-transaction-pool"
 version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "sp-api",
  "sp-runtime",
@@ -10975,7 +11600,7 @@ dependencies = [
 [[package]]
 name = "sp-transaction-storage-proof"
 version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -10989,16 +11614,16 @@ dependencies = [
 [[package]]
 name = "sp-trie"
 version = "29.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "ahash 0.8.11",
+ "ahash",
  "hash-db",
  "lazy_static",
  "memory-db",
  "nohash-hasher",
  "parity-scale-codec",
- "parking_lot 0.12.2",
- "rand 0.8.5",
+ "parking_lot 0.12.3",
+ "rand",
  "scale-info",
  "schnellru",
  "sp-core",
@@ -11012,7 +11637,7 @@ dependencies = [
 [[package]]
 name = "sp-version"
 version = "29.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -11029,12 +11654,12 @@ dependencies = [
 [[package]]
 name = "sp-version-proc-macro"
 version = "13.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "parity-scale-codec",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -11053,7 +11678,7 @@ dependencies = [
 [[package]]
 name = "sp-wasm-interface"
 version = "20.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "anyhow",
  "impl-trait-for-tuples",
@@ -11065,7 +11690,7 @@ dependencies = [
 [[package]]
 name = "sp-weights"
 version = "27.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "bounded-collections",
  "parity-scale-codec",
@@ -11141,7 +11766,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8a2a1c578e98c1c16fc3b8ec1328f7659a500737d7a0c6d625e73e830ff9c1f6"
 dependencies = [
  "bitflags 1.3.2",
- "cfg_aliases",
+ "cfg_aliases 0.1.1",
  "libc",
  "parking_lot 0.11.2",
  "parking_lot_core 0.8.6",
@@ -11155,7 +11780,7 @@ version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "70a2595fc3aa78f2d0e45dd425b22282dd863273761cc77780914b2cf3003acf"
 dependencies = [
- "cfg_aliases",
+ "cfg_aliases 0.1.1",
  "memchr",
  "proc-macro2",
  "quote",
@@ -11164,17 +11789,17 @@ dependencies = [
 
 [[package]]
 name = "str0m"
-version = "0.4.1"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3f10d3f68e60168d81110410428a435dbde28cc5525f5f7c6fdec92dbdc2800"
+checksum = "6706347e49b13373f7ddfafad47df7583ed52083d6fc8a594eb2c80497ef959d"
 dependencies = [
  "combine 4.6.7",
  "crc",
+ "fastrand",
  "hmac 0.12.1",
  "once_cell",
  "openssl",
  "openssl-sys",
- "rand 0.8.5",
  "sctp-proto",
  "serde",
  "sha-1 0.10.1",
@@ -11205,11 +11830,11 @@ dependencies = [
 
 [[package]]
 name = "strum"
-version = "0.26.2"
+version = "0.26.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29"
+checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
 dependencies = [
- "strum_macros 0.26.2",
+ "strum_macros 0.26.4",
 ]
 
 [[package]]
@@ -11227,21 +11852,21 @@ dependencies = [
 
 [[package]]
 name = "strum_macros"
-version = "0.26.2"
+version = "0.26.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946"
+checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
 dependencies = [
- "heck 0.4.1",
+ "heck 0.5.0",
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "substrate-bip39"
 version = "0.4.7"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "hmac 0.12.1",
  "pbkdf2",
@@ -11253,16 +11878,17 @@ dependencies = [
 [[package]]
 name = "substrate-build-script-utils"
 version = "11.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 
 [[package]]
 name = "substrate-frame-rpc-system"
 version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
+ "docify",
  "frame-system-rpc-runtime-api",
  "futures 0.3.30",
- "jsonrpsee",
+ "jsonrpsee 0.23.2",
  "log",
  "parity-scale-codec",
  "sc-rpc-api",
@@ -11277,9 +11903,9 @@ dependencies = [
 [[package]]
 name = "substrate-prometheus-endpoint"
 version = "0.17.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
- "hyper 0.14.28",
+ "hyper 0.14.29",
  "log",
  "prometheus",
  "thiserror",
@@ -11299,7 +11925,7 @@ dependencies = [
  "sp-maybe-compressed-blob 4.1.0-dev",
  "strum 0.24.1",
  "tempfile",
- "toml 0.8.12",
+ "toml 0.8.14",
  "walkdir",
  "wasm-opt",
 ]
@@ -11307,7 +11933,7 @@ dependencies = [
 [[package]]
 name = "substrate-wasm-builder"
 version = "17.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.11.0#030a7b8fd5ef03e4da466e65ce8fe92e3cff90e4"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
 dependencies = [
  "build-helper",
  "cargo_metadata",
@@ -11316,9 +11942,9 @@ dependencies = [
  "parity-wasm",
  "polkavm-linker",
  "sp-maybe-compressed-blob 11.0.0",
- "strum 0.26.2",
+ "strum 0.26.3",
  "tempfile",
- "toml 0.8.12",
+ "toml 0.8.14",
  "walkdir",
  "wasm-opt",
 ]
@@ -11331,9 +11957,9 @@ checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee"
 
 [[package]]
 name = "subtle"
-version = "2.5.0"
+version = "2.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
 
 [[package]]
 name = "subweight-core"
@@ -11351,37 +11977,35 @@ dependencies = [
  "semver 1.0.23",
  "serde",
  "serde_json",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "subxt"
-version = "0.35.3"
-source = "git+https://github.com/duniter/subxt?branch=subxt-v0.35.3-duniter-substrate-v1.11.0#04282d7f1638f8e86200958ee36cb3920852ed4f"
+version = "0.37.0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
 dependencies = [
  "async-trait",
- "base58",
- "blake2 0.10.6",
- "derivative",
+ "derive-where",
  "either",
  "frame-metadata 16.0.0",
  "futures 0.3.30",
  "hex",
  "impl-serde",
  "instant",
- "jsonrpsee",
+ "jsonrpsee 0.22.5",
  "parity-scale-codec",
  "primitive-types",
- "scale-bits",
- "scale-decode",
- "scale-encode",
+ "reconnecting-jsonrpsee-ws-client",
+ "scale-bits 0.6.0",
+ "scale-decode 0.13.1",
+ "scale-encode 0.7.1",
  "scale-info",
- "scale-value",
+ "scale-value 0.16.0",
  "serde",
  "serde_json",
- "sp-core",
  "sp-crypto-hashing",
- "sp-runtime",
+ "subxt-core",
  "subxt-lightclient",
  "subxt-macro",
  "subxt-metadata",
@@ -11393,28 +12017,56 @@ dependencies = [
 
 [[package]]
 name = "subxt-codegen"
-version = "0.35.3"
-source = "git+https://github.com/duniter/subxt?branch=subxt-v0.35.3-duniter-substrate-v1.11.0#04282d7f1638f8e86200958ee36cb3920852ed4f"
+version = "0.37.0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
 dependencies = [
  "frame-metadata 16.0.0",
- "heck 0.4.1",
+ "heck 0.5.0",
  "hex",
- "jsonrpsee",
+ "jsonrpsee 0.22.5",
  "parity-scale-codec",
  "proc-macro2",
  "quote",
  "scale-info",
  "scale-typegen",
  "subxt-metadata",
- "syn 2.0.61",
+ "syn 2.0.68",
  "thiserror",
  "tokio",
 ]
 
+[[package]]
+name = "subxt-core"
+version = "0.37.0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
+dependencies = [
+ "base58",
+ "blake2 0.10.6",
+ "derive-where",
+ "frame-metadata 16.0.0",
+ "hashbrown 0.14.5",
+ "hex",
+ "impl-serde",
+ "parity-scale-codec",
+ "primitive-types",
+ "scale-bits 0.6.0",
+ "scale-decode 0.13.1",
+ "scale-encode 0.7.1",
+ "scale-info",
+ "scale-value 0.16.0",
+ "serde",
+ "serde_json",
+ "sp-core",
+ "sp-crypto-hashing",
+ "sp-runtime",
+ "subxt-metadata",
+ "tracing",
+]
+
 [[package]]
 name = "subxt-lightclient"
-version = "0.35.3"
-source = "git+https://github.com/duniter/subxt?branch=subxt-v0.35.3-duniter-substrate-v1.11.0#04282d7f1638f8e86200958ee36cb3920852ed4f"
+version = "0.37.0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
 dependencies = [
  "futures 0.3.30",
  "futures-util",
@@ -11429,24 +12081,23 @@ dependencies = [
 
 [[package]]
 name = "subxt-macro"
-version = "0.35.3"
-source = "git+https://github.com/duniter/subxt?branch=subxt-v0.35.3-duniter-substrate-v1.11.0#04282d7f1638f8e86200958ee36cb3920852ed4f"
+version = "0.37.0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
 dependencies = [
- "darling 0.20.8",
+ "darling 0.20.9",
  "parity-scale-codec",
  "proc-macro-error",
  "quote",
  "scale-typegen",
  "subxt-codegen",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "subxt-metadata"
-version = "0.35.3"
-source = "git+https://github.com/duniter/subxt?branch=subxt-v0.35.3-duniter-substrate-v1.11.0#04282d7f1638f8e86200958ee36cb3920852ed4f"
+version = "0.37.0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
 dependencies = [
- "derive_more",
  "frame-metadata 16.0.0",
  "hashbrown 0.14.5",
  "parity-scale-codec",
@@ -11467,9 +12118,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.61"
+version = "2.0.68"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9"
+checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -11478,9 +12129,9 @@ dependencies = [
 
 [[package]]
 name = "sync_wrapper"
-version = "0.1.2"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
 
 [[package]]
 name = "synstructure"
@@ -11494,13 +12145,24 @@ dependencies = [
  "unicode-xid",
 ]
 
+[[package]]
+name = "synstructure"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.68",
+]
+
 [[package]]
 name = "synthez"
 version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a3d2c2202510a1e186e63e596d9318c91a8cbe85cd1a56a7be0c333e5f59ec8d"
 dependencies = [
- "syn 2.0.61",
+ "syn 2.0.68",
  "synthez-codegen",
  "synthez-core",
 ]
@@ -11511,7 +12173,7 @@ version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f724aa6d44b7162f3158a57bccd871a77b39a4aef737e01bcdff41f4772c7746"
 dependencies = [
- "syn 2.0.61",
+ "syn 2.0.68",
  "synthez-core",
 ]
 
@@ -11524,7 +12186,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "sealed",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -11574,11 +12236,11 @@ dependencies = [
 
 [[package]]
 name = "tera"
-version = "1.19.1"
+version = "1.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "970dff17c11e884a4a09bc76e3a17ef71e01bb13447a11e85226e254fe6d10b8"
+checksum = "ab9d851b45e865f178319da0abdbfe6acbc4328759ff18dafc3a41c16b4cd2ee"
 dependencies = [
- "globwalk",
+ "globwalk 0.9.1",
  "lazy_static",
  "pest",
  "pest_derive",
@@ -11626,22 +12288,22 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.60"
+version = "1.0.61"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18"
+checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.60"
+version = "1.0.61"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524"
+checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -11669,6 +12331,16 @@ dependencies = [
  "num_cpus",
 ]
 
+[[package]]
+name = "tikv-jemalloc-sys"
+version = "0.5.4+5.3.0-patched"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9402443cb8fd499b6f327e40565234ff34dbda27460c5b47db0db77443dd85d1"
+dependencies = [
+ "cc",
+ "libc",
+]
+
 [[package]]
 name = "time"
 version = "0.3.36"
@@ -11711,9 +12383,9 @@ dependencies = [
 
 [[package]]
 name = "tinyvec"
-version = "1.6.0"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82"
 dependencies = [
  "tinyvec_macros",
 ]
@@ -11726,16 +12398,16 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.37.0"
+version = "1.38.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
+checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a"
 dependencies = [
  "backtrace",
  "bytes",
  "libc",
  "mio",
  "num_cpus",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "pin-project-lite 0.2.14",
  "signal-hook-registry",
  "socket2 0.5.7",
@@ -11745,13 +12417,13 @@ dependencies = [
 
 [[package]]
 name = "tokio-macros"
-version = "2.2.0"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -11775,6 +12447,17 @@ dependencies = [
  "tokio",
 ]
 
+[[package]]
+name = "tokio-rustls"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
+dependencies = [
+ "rustls 0.23.10",
+ "rustls-pki-types",
+ "tokio",
+]
+
 [[package]]
 name = "tokio-stream"
 version = "0.1.15"
@@ -11827,21 +12510,21 @@ dependencies = [
 
 [[package]]
 name = "toml"
-version = "0.8.12"
+version = "0.8.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
+checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335"
 dependencies = [
  "serde",
  "serde_spanned",
  "toml_datetime",
- "toml_edit 0.22.12",
+ "toml_edit 0.22.14",
 ]
 
 [[package]]
 name = "toml_datetime"
-version = "0.6.5"
+version = "0.6.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf"
 dependencies = [
  "serde",
 ]
@@ -11859,15 +12542,15 @@ dependencies = [
 
 [[package]]
 name = "toml_edit"
-version = "0.22.12"
+version = "0.22.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef"
+checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38"
 dependencies = [
  "indexmap 2.2.6",
  "serde",
  "serde_spanned",
  "toml_datetime",
- "winnow 0.6.8",
+ "winnow 0.6.13",
 ]
 
 [[package]]
@@ -11888,17 +12571,15 @@ dependencies = [
 
 [[package]]
 name = "tower-http"
-version = "0.4.4"
+version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140"
+checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "bytes",
- "futures-core",
- "futures-util",
- "http 0.2.12",
- "http-body 0.4.6",
- "http-range-header",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "http-body-util",
  "pin-project-lite 0.2.14",
  "tower-layer",
  "tower-service",
@@ -11936,7 +12617,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -12022,7 +12703,7 @@ dependencies = [
  "matchers 0.1.0",
  "nu-ansi-term",
  "once_cell",
- "parking_lot 0.12.2",
+ "parking_lot 0.12.3",
  "regex",
  "sharded-slab",
  "smallvec",
@@ -12034,9 +12715,9 @@ dependencies = [
 
 [[package]]
 name = "trie-db"
-version = "0.29.0"
+version = "0.29.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65ed83be775d85ebb0e272914fff6462c39b3ddd6dc67b5c1c41271aad280c69"
+checksum = "0c992b4f40c234a074d48a757efeabb1a6be88af84c0c23f7ca158950cb0ae7f"
 dependencies = [
  "hash-db",
  "log",
@@ -12069,7 +12750,7 @@ dependencies = [
  "idna 0.2.3",
  "ipnet",
  "lazy_static",
- "rand 0.8.5",
+ "rand",
  "smallvec",
  "socket2 0.4.10",
  "thiserror",
@@ -12095,7 +12776,7 @@ dependencies = [
  "idna 0.4.0",
  "ipnet",
  "once_cell",
- "rand 0.8.5",
+ "rand",
  "smallvec",
  "thiserror",
  "tinyvec",
@@ -12104,26 +12785,6 @@ dependencies = [
  "url",
 ]
 
-[[package]]
-name = "trust-dns-resolver"
-version = "0.22.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfe"
-dependencies = [
- "cfg-if",
- "futures-util",
- "ipconfig",
- "lazy_static",
- "lru-cache",
- "parking_lot 0.12.2",
- "resolv-conf",
- "smallvec",
- "thiserror",
- "tokio",
- "tracing",
- "trust-dns-proto 0.22.0",
-]
-
 [[package]]
 name = "trust-dns-resolver"
 version = "0.23.2"
@@ -12135,8 +12796,8 @@ dependencies = [
  "ipconfig",
  "lru-cache",
  "once_cell",
- "parking_lot 0.12.2",
- "rand 0.8.5",
+ "parking_lot 0.12.3",
+ "rand",
  "resolv-conf",
  "smallvec",
  "thiserror",
@@ -12169,7 +12830,7 @@ dependencies = [
  "http 0.2.12",
  "httparse",
  "log",
- "rand 0.8.5",
+ "rand",
  "rustls 0.21.12",
  "sha1",
  "thiserror",
@@ -12185,7 +12846,7 @@ checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
 dependencies = [
  "cfg-if",
  "digest 0.10.7",
- "rand 0.8.5",
+ "rand",
  "static_assertions",
 ]
 
@@ -12206,7 +12867,7 @@ checksum = "29a3151c41d0b13e3d011f98adc24434560ef06673a155a6c7f66b9879eecce2"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -12318,9 +12979,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
 
 [[package]]
 name = "unicode-width"
-version = "0.1.12"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
 
 [[package]]
 name = "unicode-xid"
@@ -12335,7 +12996,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"
 dependencies = [
  "crypto-common",
- "subtle 2.5.0",
+ "subtle 2.6.1",
 ]
 
 [[package]]
@@ -12363,6 +13024,15 @@ dependencies = [
  "bytes",
  "futures-io",
  "futures-util",
+]
+
+[[package]]
+name = "unsigned-varint"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06"
+dependencies = [
+ "bytes",
  "tokio-util",
 ]
 
@@ -12380,9 +13050,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
 
 [[package]]
 name = "url"
-version = "2.5.0"
+version = "2.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
 dependencies = [
  "form_urlencoded",
  "idna 0.5.0",
@@ -12397,9 +13067,9 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
 
 [[package]]
 name = "utf8parse"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
 
 [[package]]
 name = "valuable"
@@ -12427,9 +13097,9 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
 
 [[package]]
 name = "w3f-bls"
-version = "0.1.3"
+version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7335e4c132c28cc43caef6adb339789e599e39adbe78da0c4d547fad48cbc331"
+checksum = "9c5da5fa2c6afa2c9158eaa7cd9aee249765eb32b5fb0c63ad8b9e79336a47ec"
 dependencies = [
  "ark-bls12-377",
  "ark-bls12-381",
@@ -12440,9 +13110,9 @@ dependencies = [
  "arrayref",
  "constcat",
  "digest 0.10.7",
- "rand 0.8.5",
- "rand_chacha 0.3.1",
- "rand_core 0.6.4",
+ "rand",
+ "rand_chacha",
+ "rand_core",
  "sha2 0.10.8",
  "sha3",
  "thiserror",
@@ -12468,12 +13138,6 @@ dependencies = [
  "try-lock",
 ]
 
-[[package]]
-name = "wasi"
-version = "0.9.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
-
 [[package]]
 name = "wasi"
 version = "0.11.0+wasi-snapshot-preview1"
@@ -12501,7 +13165,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
  "wasm-bindgen-shared",
 ]
 
@@ -12535,7 +13199,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -12835,7 +13499,7 @@ dependencies = [
  "memfd",
  "memoffset",
  "paste",
- "rand 0.8.5",
+ "rand",
  "rustix 0.36.17",
  "wasmtime-asm-macros",
  "wasmtime-environ",
@@ -12877,11 +13541,17 @@ dependencies = [
 
 [[package]]
 name = "webpki-roots"
-version = "0.22.6"
+version = "0.25.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1"
+
+[[package]]
+name = "webpki-roots"
+version = "0.26.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87"
+checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd"
 dependencies = [
- "webpki",
+ "rustls-pki-types",
 ]
 
 [[package]]
@@ -12908,9 +13578,9 @@ dependencies = [
 
 [[package]]
 name = "wide"
-version = "0.7.17"
+version = "0.7.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f0e39d2c603fdc0504b12b458cf1f34e0b937ed2f4f2dc20796e3e86f34e11f"
+checksum = "2caba658a80831539b30698ae9862a72db6697dfdd7151e46920f5f2755c3ce2"
 dependencies = [
  "bytemuck",
  "safe_arch",
@@ -13212,9 +13882,9 @@ dependencies = [
 
 [[package]]
 name = "winnow"
-version = "0.6.8"
+version = "0.6.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d"
+checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1"
 dependencies = [
  "memchr",
 ]
@@ -13248,42 +13918,30 @@ dependencies = [
  "tap",
 ]
 
-[[package]]
-name = "x25519-dalek"
-version = "1.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4f"
-dependencies = [
- "curve25519-dalek 3.2.0",
- "rand_core 0.5.1",
- "zeroize",
-]
-
 [[package]]
 name = "x25519-dalek"
 version = "2.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277"
 dependencies = [
- "curve25519-dalek 4.1.2",
- "rand_core 0.6.4",
+ "curve25519-dalek",
+ "rand_core",
  "serde",
  "zeroize",
 ]
 
 [[package]]
 name = "x509-parser"
-version = "0.14.0"
+version = "0.15.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8"
+checksum = "7069fba5b66b9193bd2c5d3d4ff12b839118f6bcbef5328efafafb5395cf63da"
 dependencies = [
- "asn1-rs",
- "base64 0.13.1",
+ "asn1-rs 0.5.2",
  "data-encoding",
- "der-parser",
+ "der-parser 8.2.0",
  "lazy_static",
  "nom",
- "oid-registry",
+ "oid-registry 0.6.1",
  "rusticata-macros",
  "thiserror",
  "time",
@@ -13291,21 +13949,36 @@ dependencies = [
 
 [[package]]
 name = "x509-parser"
-version = "0.15.1"
+version = "0.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7069fba5b66b9193bd2c5d3d4ff12b839118f6bcbef5328efafafb5395cf63da"
+checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69"
 dependencies = [
- "asn1-rs",
+ "asn1-rs 0.6.1",
  "data-encoding",
- "der-parser",
+ "der-parser 9.0.0",
  "lazy_static",
  "nom",
- "oid-registry",
+ "oid-registry 0.7.0",
  "rusticata-macros",
  "thiserror",
  "time",
 ]
 
+[[package]]
+name = "xml-rs"
+version = "0.8.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193"
+
+[[package]]
+name = "xmltree"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7d8a75eaf6557bb84a65ace8609883db44a29951042ada9b393151532e41fcb"
+dependencies = [
+ "xml-rs",
+]
+
 [[package]]
 name = "xtask"
 version = "0.1.0"
@@ -13320,7 +13993,7 @@ dependencies = [
  "placeholder",
  "reqwest",
  "scale-info",
- "scale-value",
+ "scale-value 0.14.1",
  "serde",
  "serde_json",
  "tera",
@@ -13331,15 +14004,16 @@ dependencies = [
 
 [[package]]
 name = "yamux"
-version = "0.10.2"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5d9ba232399af1783a58d8eb26f6b5006fbefe2dc9ef36bd283324792d03ea5"
+checksum = "9ed0164ae619f2dc144909a9f082187ebb5893693d8c0196e8085283ccd4b776"
 dependencies = [
  "futures 0.3.30",
  "log",
  "nohash-hasher",
- "parking_lot 0.12.2",
- "rand 0.8.5",
+ "parking_lot 0.12.3",
+ "pin-project",
+ "rand",
  "static_assertions",
 ]
 
@@ -13360,29 +14034,29 @@ dependencies = [
 
 [[package]]
 name = "zerocopy"
-version = "0.7.34"
+version = "0.7.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
 dependencies = [
  "zerocopy-derive",
 ]
 
 [[package]]
 name = "zerocopy-derive"
-version = "0.7.34"
+version = "0.7.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "zeroize"
-version = "1.7.0"
+version = "1.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
 dependencies = [
  "zeroize_derive",
 ]
@@ -13395,7 +14069,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.61",
+ "syn 2.0.68",
 ]
 
 [[package]]
@@ -13438,9 +14112,9 @@ dependencies = [
 
 [[package]]
 name = "zstd-sys"
-version = "2.0.10+zstd.1.5.6"
+version = "2.0.11+zstd.1.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa"
+checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4"
 dependencies = [
  "cc",
  "pkg-config",
diff --git a/Cargo.toml b/Cargo.toml
index 3f19f2f60..ccafea017 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -75,7 +75,7 @@ enum-as-inner = { version = "=0.5.1", default-features = false }
 futures = { version = "0.3.30", default-features = false }
 tera = { version = "1", default-features = false }
 hex = { version = "0.4.3", default-features = false }
-jsonrpsee = { version = "0.22", default-features = false } # Version should exactly match polkadot one
+jsonrpsee = { version = "0.23", default-features = false } # Version should exactly match polkadot one
 lazy_static = { version = "1.4.0", default-features = false }
 log = { version = "0.4.21", default-features = false }
 maplit = { version = '1.0.2', default-features = false }
@@ -104,7 +104,7 @@ dubp-wot = { version = "0.11.1", default-features = false }
 flate2 = { version = "1.0.28", default-features = false }
 
 # Subxt
-subxt = { git = 'https://github.com/duniter/subxt', branch = 'subxt-v0.35.3-duniter-substrate-v1.11.0', default-features = false }
+subxt = { git = 'https://github.com/duniter/subxt', branch = 'subxt-v0.37.0-duniter-substrate-v1.14.0', default-features = false }
 
 # local dependencies
 weight-analyzer = { path = "resources/weight_analyzer", default-features = false }
@@ -136,85 +136,85 @@ sp-distance = { path = 'primitives/distance', default-features = false }
 sp-membership = { path = 'primitives/membership', default-features = false }
 
 # substrate dependencies
-pallet-transaction-payment-rpc = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-frame-benchmarking = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-frame-executive = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-frame-support = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-frame-system = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-frame-system-benchmarking = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-frame-system-rpc-runtime-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-frame-try-runtime = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-atomic-swap = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-authority-discovery = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-authorship = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-babe = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-balances = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-collective = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-grandpa = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-im-online = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-multisig = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-preimage = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-proxy = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-scheduler = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-session = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-sudo = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-timestamp = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-transaction-payment = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-transaction-payment-rpc-runtime-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-treasury = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-pallet-utility = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-arithmetic = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-block-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-client-db = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-client-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-consensus-grandpa = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-consensus-babe = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-consensus-babe-rpc = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-blockchain = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-offchain = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-consensus-babe = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-consensus-grandpa = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-core = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-inherents = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-offchain = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-runtime = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-session = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-std = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-staking = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-weights = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-transaction-pool = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-version = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-cli = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-service = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-trie = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-authority-discovery = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-genesis-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-keyring = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-consensus = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-core-hashing = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-keystore = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-rpc-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-substrate-wasm-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-io = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-substrate-build-script-utils = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0' }
-node-primitives = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-frame-benchmarking-cli = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-chain-spec = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-consensus = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-consensus-manual-seal = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-executor = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-telemetry = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-transaction-pool = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-basic-authorship = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-network = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-keystore = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-storage = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-timestamp = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-transaction-storage-proof = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sc-transaction-pool-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-sp-state-machine = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
-substrate-frame-rpc-system = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.11.0', default-features = false }
+pallet-transaction-payment-rpc = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+frame-benchmarking = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+frame-executive = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+frame-support = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+frame-system = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+frame-system-benchmarking = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+frame-system-rpc-runtime-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+frame-try-runtime = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-atomic-swap = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-authority-discovery = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-authorship = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-babe = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-balances = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-collective = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-grandpa = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-im-online = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-multisig = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-preimage = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-proxy = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-scheduler = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-session = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-sudo = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-timestamp = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-transaction-payment = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-transaction-payment-rpc-runtime-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-treasury = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+pallet-utility = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-arithmetic = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-block-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-client-db = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-client-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-consensus-grandpa = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-consensus-babe = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-consensus-babe-rpc = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-blockchain = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-offchain = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-consensus-babe = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-consensus-grandpa = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-core = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-inherents = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-offchain = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-runtime = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-session = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-std = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-staking = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-weights = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-transaction-pool = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-version = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-cli = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-service = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-trie = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-authority-discovery = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-genesis-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-keyring = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-consensus = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-core-hashing = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-keystore = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-rpc-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+substrate-wasm-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-io = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+substrate-build-script-utils = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0' }
+node-primitives = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+frame-benchmarking-cli = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-chain-spec = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-consensus = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-consensus-manual-seal = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-executor = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-telemetry = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-transaction-pool = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-basic-authorship = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-network = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-keystore = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-storage = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-timestamp = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-transaction-storage-proof = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sc-transaction-pool-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+sp-state-machine = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
+substrate-frame-rpc-system = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.14.0', default-features = false }
 
 # The list of dependencies below (which can be both direct and indirect dependencies) are crates
 # that are suspected to be CPU-intensive, and that are unlikely to require debugging (as some of
@@ -240,7 +240,6 @@ crossbeam-deque = { opt-level = 3 }
 crypto-mac = { opt-level = 3 }
 curve25519-dalek = { opt-level = 3 }
 ed25519-dalek = { opt-level = 3 }
-flate2 = { opt-level = 3 }
 futures-channel = { opt-level = 3 }
 hashbrown = { opt-level = 3 }
 hash-db = { opt-level = 3 }
@@ -266,7 +265,6 @@ smallvec = { opt-level = 3 }
 snow = { opt-level = 3 }
 twox-hash = { opt-level = 3 }
 uint = { opt-level = 3 }
-wasmi = { opt-level = 3 }
 x25519-dalek = { opt-level = 3 }
 yamux = { opt-level = 3 }
 zeroize = { opt-level = 3 }
diff --git a/distance-oracle/src/api.rs b/distance-oracle/src/api.rs
index 66f17d6ce..99e6b6f51 100644
--- a/distance-oracle/src/api.rs
+++ b/distance-oracle/src/api.rs
@@ -108,12 +108,12 @@ pub async fn member_iter(client: &Client, evaluation_block: H256) -> MemberIter
 pub struct MemberIter(
     subxt::backend::StreamOfResults<
         subxt::storage::StorageKeyValuePair<
-            subxt::storage::Address<
+            subxt::storage::StaticAddress<
                 (),
                 runtime::runtime_types::sp_membership::MembershipData<u32>,
                 (),
                 (),
-                subxt::storage::address::Yes,
+                subxt::utils::Yes,
             >,
         >,
     >,
@@ -143,12 +143,12 @@ pub async fn cert_iter(client: &Client, evaluation_block: H256) -> CertIter {
 pub struct CertIter(
     subxt::backend::StreamOfResults<
         subxt::storage::StorageKeyValuePair<
-            subxt::storage::Address<
+            subxt::storage::StaticAddress<
                 (),
                 Vec<(u32, u32)>,
                 (),
-                subxt::storage::address::Yes,
-                subxt::storage::address::Yes,
+                subxt::utils::Yes,
+                subxt::utils::Yes,
             >,
         >,
     >,
diff --git a/distance-oracle/src/mock.rs b/distance-oracle/src/mock.rs
index 56e5f98bc..b21f4e796 100644
--- a/distance-oracle/src/mock.rs
+++ b/distance-oracle/src/mock.rs
@@ -64,7 +64,10 @@ pub async fn current_pool(
             .zip(0..client.pool_len)
             .map(|(wot_id, _)| {
                 (wot_id.0 as IdtyIndex, unsafe {
-                    std::mem::transmute((Vec::<()>::new(), Option::<u32>::None, 0))
+                    std::mem::transmute::<
+                        (std::vec::Vec<()>, std::option::Option<u32>, i32),
+                        MedianAcc<Perbill>,
+                    >((Vec::<()>::new(), Option::<u32>::None, 0))
                 })
             })
             .collect(),),
diff --git a/end2end-tests/tests/common/cert.rs b/end2end-tests/tests/common/cert.rs
index 8ca1d080a..bccd2db93 100644
--- a/end2end-tests/tests/common/cert.rs
+++ b/end2end-tests/tests/common/cert.rs
@@ -20,8 +20,8 @@ use subxt::{tx::PairSigner, utils::MultiAddress};
 
 pub async fn certify(client: &FullClient, from: AccountKeyring, to: AccountKeyring) -> Result<()> {
     let signer = PairSigner::new(from.pair());
-    let from = from.to_account_id();
-    let to = to.to_account_id();
+    let from: subxt::utils::AccountId32 = from.to_account_id().into();
+    let to: subxt::utils::AccountId32 = to.to_account_id().into();
 
     let _issuer_index = client
         .client
@@ -29,11 +29,7 @@ pub async fn certify(client: &FullClient, from: AccountKeyring, to: AccountKeyri
         .at_latest()
         .await
         .unwrap()
-        .fetch(
-            &gdev::storage()
-                .identity()
-                .identity_index_of(&from.clone().into()),
-        )
+        .fetch(&gdev::storage().identity().identity_index_of(from.clone()))
         .await?
         .unwrap_or_else(|| panic!("{} issuer must exist", from));
     let receiver_index = client
@@ -42,7 +38,7 @@ pub async fn certify(client: &FullClient, from: AccountKeyring, to: AccountKeyri
         .at_latest()
         .await
         .unwrap()
-        .fetch(&gdev::storage().identity().identity_index_of(&to.into()))
+        .fetch(&gdev::storage().identity().identity_index_of(to))
         .await?
         .unwrap_or_else(|| panic!("{} issuer must exist", from));
 
diff --git a/end2end-tests/tests/cucumber_tests.rs b/end2end-tests/tests/cucumber_tests.rs
index 4b35e0242..add3f14a0 100644
--- a/end2end-tests/tests/cucumber_tests.rs
+++ b/end2end-tests/tests/cucumber_tests.rs
@@ -94,7 +94,7 @@ impl DuniterWorld {
         Output = std::result::Result<Option<Address::Target>, subxt::error::Error>,
     > + 'a
     where
-        Address: subxt::storage::StorageAddress<IsFetchable = subxt::storage::address::Yes> + 'a,
+        Address: subxt::storage::Address<IsFetchable = subxt::custom_values::Yes> + 'a,
     {
         self.client()
             .storage()
@@ -110,9 +110,9 @@ impl DuniterWorld {
         address: &'a Address,
     ) -> impl std::future::Future<Output = std::result::Result<Address::Target, subxt::error::Error>> + 'a
     where
-        Address: subxt::storage::StorageAddress<
-                IsFetchable = subxt::storage::address::Yes,
-                IsDefaultable = subxt::storage::address::Yes,
+        Address: subxt::storage::Address<
+                IsFetchable = subxt::custom_values::Yes,
+                IsDefaultable = subxt::custom_values::Yes,
             > + 'a,
     {
         self.client()
@@ -510,10 +510,13 @@ async fn should_have_distance_result_in_sessions(
 ) -> Result<()> {
     assert!(sessions < 3, "Session number must be < 3");
 
-    let who = AccountKeyring::from_str(&who).unwrap().to_account_id();
+    let who: subxt::utils::AccountId32 = AccountKeyring::from_str(&who)
+        .unwrap()
+        .to_account_id()
+        .into();
 
     let idty_id = world
-        .read(&gdev::storage().identity().identity_index_of(&who.into()))
+        .read(&gdev::storage().identity().identity_index_of(who))
         .await
         .await?
         .unwrap();
diff --git a/node/Cargo.toml b/node/Cargo.toml
index 3d90a37e8..7c5db8247 100644
--- a/node/Cargo.toml
+++ b/node/Cargo.toml
@@ -128,63 +128,63 @@ jsonrpsee = { workspace = true, features = ["server"] }
 log = { workspace = true }
 memmap2 = { workspace = true }
 num-format = { workspace = true }
-pallet-grandpa = { workspace = true }
-pallet-im-online = { workspace = true }
-pallet-transaction-payment = { workspace = true }
-pallet-transaction-payment-rpc = { workspace = true }
-pallet-transaction-payment-rpc-runtime-api = { workspace = true }
-pallet-treasury = { workspace = true }
-sc-basic-authorship = { workspace = true }
-sc-chain-spec = { workspace = true }
-sc-client-api = { workspace = true }
-sc-client-db = { workspace = true }
-sc-consensus = { workspace = true }
-sc-consensus-babe = { workspace = true }
-sc-consensus-babe-rpc = { workspace = true }
-sc-consensus-grandpa = { workspace = true }
-sc-consensus-manual-seal = { workspace = true }
-sc-executor = { workspace = true }
-sc-keystore = { workspace = true }
-sc-network = { workspace = true }
-sc-offchain = { workspace = true }
-sc-rpc-api = { workspace = true }
-sc-telemetry = { workspace = true }
-sc-transaction-pool = { workspace = true }
-sc-transaction-pool-api = { workspace = true }
+pallet-grandpa = { workspace = true, default-features = true }
+pallet-im-online = { workspace = true, default-features = true }
+pallet-transaction-payment = { workspace = true, default-features = true }
+pallet-transaction-payment-rpc = { workspace = true, default-features = true }
+pallet-transaction-payment-rpc-runtime-api = { workspace = true, default-features = true }
+pallet-treasury = { workspace = true, default-features = true }
+sc-basic-authorship = { workspace = true, default-features = true }
+sc-chain-spec = { workspace = true, default-features = true }
+sc-client-api = { workspace = true, default-features = true }
+sc-client-db = { workspace = true, default-features = true }
+sc-consensus = { workspace = true, default-features = true }
+sc-consensus-babe = { workspace = true, default-features = true }
+sc-consensus-babe-rpc = { workspace = true, default-features = true }
+sc-consensus-grandpa = { workspace = true, default-features = true }
+sc-consensus-manual-seal = { workspace = true, default-features = true }
+sc-executor = { workspace = true, default-features = true }
+sc-keystore = { workspace = true, default-features = true }
+sc-network = { workspace = true, default-features = true }
+sc-offchain = { workspace = true, default-features = true }
+sc-rpc-api = { workspace = true, default-features = true }
+sc-telemetry = { workspace = true, default-features = true }
+sc-transaction-pool = { workspace = true, default-features = true }
+sc-transaction-pool-api = { workspace = true, default-features = true }
 serde = { workspace = true }
 serde_json = { workspace = true }
 serde_yaml = { workspace = true }
-sp-api = { workspace = true }
-sp-authority-discovery = { workspace = true }
-sp-block-builder = { workspace = true }
-sp-blockchain = { workspace = true }
-sp-consensus = { workspace = true }
-sp-consensus-babe = { workspace = true }
-sp-consensus-grandpa = { workspace = true }
-sp-core = { workspace = true }
-sp-distance = { workspace = true }
-sp-inherents = { workspace = true }
-sp-io = { workspace = true }
-sp-keyring = { workspace = true }
-sp-keystore = { workspace = true }
-sp-membership = { workspace = true }
-sp-offchain = { workspace = true }
-sp-runtime = { workspace = true }
-sp-session = { workspace = true }
-sp-storage = { workspace = true }
-sp-timestamp = { workspace = true }
-sp-transaction-pool = { workspace = true }
-sp-transaction-storage-proof = { workspace = true }
-substrate-frame-rpc-system = { workspace = true }
+sp-api = { workspace = true, default-features = true }
+sp-authority-discovery = { workspace = true, default-features = true }
+sp-block-builder = { workspace = true, default-features = true }
+sp-blockchain = { workspace = true, default-features = true }
+sp-consensus = { workspace = true, default-features = true }
+sp-consensus-babe = { workspace = true, default-features = true }
+sp-consensus-grandpa = { workspace = true, default-features = true }
+sp-core = { workspace = true, default-features = true }
+sp-distance = { workspace = true, default-features = true }
+sp-inherents = { workspace = true, default-features = true }
+sp-io = { workspace = true, default-features = true }
+sp-keyring = { workspace = true, default-features = true }
+sp-keystore = { workspace = true, default-features = true }
+sp-membership = { workspace = true, default-features = true }
+sp-offchain = { workspace = true, default-features = true }
+sp-runtime = { workspace = true, default-features = true }
+sp-session = { workspace = true, default-features = true }
+sp-storage = { workspace = true, default-features = true }
+sp-timestamp = { workspace = true, default-features = true }
+sp-transaction-pool = { workspace = true, default-features = true }
+sp-transaction-storage-proof = { workspace = true, default-features = true }
+substrate-frame-rpc-system = { workspace = true, default-features = true }
 
 [build-dependencies]
-substrate-build-script-utils = { workspace = true }
+substrate-build-script-utils = { workspace = true, default-features = true}
 
 # Dependencies for specific targets
 [target.'cfg(any(target_arch="x86_64", target_arch="aarch64"))'.dependencies]
-sc-cli = { workspace = true }
-sc-service = { workspace = true }
-sp-trie = { workspace = true }
+sc-cli = { workspace = true, default-features = true }
+sc-service = { workspace = true, default-features = true }
+sp-trie = { workspace = true, default-features = true }
 
 [package.metadata.deb]
 maintainer-scripts = "../resources/debian"
diff --git a/node/src/chain_spec/g1.rs b/node/src/chain_spec/g1.rs
index 952f493e9..2ffda73f1 100644
--- a/node/src/chain_spec/g1.rs
+++ b/node/src/chain_spec/g1.rs
@@ -14,8 +14,195 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
-pub type ChainSpec = sc_service::GenericChainSpec<g1_runtime::GenesisConfig>;
+use super::*;
+use crate::chain_spec::gen_genesis_data::{
+    AuthorityKeys, CommonParameters, GenesisIdentity, SessionKeysProvider,
+};
+use common_runtime::{constants::*, entities::IdtyData, GenesisIdty, IdtyStatus};
+use g1_runtime::{opaque::SessionKeys, parameters, WASM_BINARY};
+use sc_service::ChainType;
+use serde::Deserialize;
+use sp_core::sr25519;
+use std::{env, fs};
 
-pub fn development_chain_spec() -> Result<ChainSpec, String> {
-    todo!()
+pub type ChainSpec = sc_service::GenericChainSpec;
+
+#[derive(Default, Clone, Deserialize)]
+// No parameters for GTest (unlike GDev)
+struct GenesisParameters {}
+
+const TOKEN_DECIMALS: usize = 2;
+const TOKEN_SYMBOL: &str = "Äž";
+static EXISTENTIAL_DEPOSIT: u64 = parameters::ExistentialDeposit::get();
+
+struct G1SKP;
+impl SessionKeysProvider<SessionKeys> for G1SKP {
+    fn session_keys(keys: &AuthorityKeys) -> SessionKeys {
+        let cloned = keys.clone();
+        SessionKeys {
+            grandpa: cloned.1,
+            babe: cloned.2,
+            im_online: cloned.3,
+            authority_discovery: cloned.4,
+        }
+    }
+}
+
+fn get_parameters(_parameters_from_file: &Option<GenesisParameters>) -> CommonParameters {
+    CommonParameters::default()
+}
+
+/// generate local network chainspects
+pub fn local_testnet_config(
+    initial_authorities_len: usize,
+    initial_smiths_len: usize,
+    initial_identities_len: usize,
+) -> Result<ChainSpec, String> {
+    Ok(ChainSpec::builder(
+        &get_wasm_binary().ok_or_else(|| "Development wasm not available".to_string())?,
+        None,
+    )
+    .with_name("Äž1 Local Testnet")
+    .with_id("g1_local")
+    .with_chain_type(ChainType::Local)
+    .with_genesis_config_patch({
+        let genesis_data =
+            gen_genesis_data::generate_genesis_data_for_local_chain::<_, _, SessionKeys, G1SKP>(
+                // Initial authorities len
+                initial_authorities_len,
+                // Initial smiths len,
+                initial_smiths_len,
+                // Initial identities len
+                initial_identities_len,
+                EXISTENTIAL_DEPOSIT,
+                None,
+                // Sudo account
+                get_account_id_from_seed::<sr25519::Public>("Alice"),
+                get_parameters,
+            )
+            .expect("Genesis Data must be buildable");
+        genesis_data_to_g1_genesis_conf(genesis_data)
+    })
+    .with_properties(
+        serde_json::json!({
+            "tokenDecimals": TOKEN_DECIMALS,
+            "tokenSymbol": TOKEN_SYMBOL,
+        })
+        .as_object()
+        .expect("must be a map")
+        .clone(),
+    )
+    .build())
+}
+
+/// custom genesis
+fn genesis_data_to_g1_genesis_conf(
+    genesis_data: super::gen_genesis_data::GenesisData<GenesisParameters, SessionKeys>,
+) -> serde_json::Value {
+    let super::gen_genesis_data::GenesisData {
+        accounts,
+        treasury_balance,
+        certs_by_receiver,
+        first_ud,
+        first_ud_reeval,
+        identities,
+        initial_authorities,
+        initial_monetary_mass,
+        memberships,
+        parameters: _,
+        common_parameters: _,
+        session_keys_map,
+        initial_smiths,
+        sudo_key,
+        technical_committee_members,
+        ud,
+    } = genesis_data;
+
+    serde_json::json!({
+        "account": {
+            "accounts": accounts,
+            "treasuryBalance": treasury_balance,
+        },
+        "authorityMembers": {
+            "initialAuthorities": initial_authorities,
+        },
+        "balances": {
+            "totalIssuance": initial_monetary_mass,
+        },
+        "babe": {
+            "epochConfig": Some(BABE_GENESIS_EPOCH_CONFIG),
+        },
+        "session": {
+            "keys": session_keys_map
+                .into_iter()
+                .map(|(account_id, session_keys)| (account_id.clone(), account_id, session_keys))
+                .collect::<Vec<_>>(),
+        },
+        "sudo": { "key": sudo_key },
+        "technicalCommittee": {
+            "members": technical_committee_members,
+        },
+        "quota": {
+            "identities": identities.iter().map(|i| i.idty_index).collect::<Vec<_>>(),
+        },
+        "identity": {
+            "identities": identities
+                .into_iter()
+                .map(
+                    |GenesisIdentity {
+                         idty_index,
+                         name,
+                         owner_key,
+                         status,
+                         expires_on,
+                         revokes_on,
+                     }| GenesisIdty {
+                        index: idty_index,
+                        name: common_runtime::IdtyName::from(name.as_str()),
+                        value: common_runtime::IdtyValue {
+                            data: IdtyData::new(),
+                            next_creatable_identity_on: 0,
+                            old_owner_key: None,
+                            owner_key,
+                            next_scheduled: match status {
+                                IdtyStatus::Unconfirmed | IdtyStatus::Unvalidated => {
+                                    panic!("Unconfirmed or Unvalidated identity in genesis")
+                                }
+                                IdtyStatus::Member => expires_on.expect("must have expires_on set"),
+                                IdtyStatus::Revoked => 0,
+                                IdtyStatus::NotMember => {
+                                    revokes_on.expect("must have revokes_on set")
+                                }
+                            },
+                            status,
+                        },
+                    },
+                )
+                .collect::<Vec<GenesisIdty<g1_runtime::Runtime>>>(),
+        },
+        "certification": {
+            "applyCertPeriodAtGenesis": false,
+            "certsByReceiver": certs_by_receiver,
+        },
+        "membership": { "memberships": memberships },
+        "smithMembers": { "initialSmiths": initial_smiths},
+        "universalDividend": {
+            "firstReeval": first_ud_reeval,
+            "firstUd": first_ud,
+            "initialMonetaryMass": initial_monetary_mass,
+            "ud": ud,
+        },
+    })
+}
+
+/// Get the WASM bytes either from filesytem (`WASM_FILE` env variable giving the path to the wasm blob)
+/// or else get the one compiled from source code.
+/// Goal: allow to provide the WASM built with srtool, which is reproductible.
+fn get_wasm_binary() -> Option<Vec<u8>> {
+    let wasm_bytes_from_file = if let Ok(file_path) = env::var("WASM_FILE") {
+        Some(fs::read(file_path).unwrap_or_else(|e| panic!("Could not read wasm file: {}", e)))
+    } else {
+        None
+    };
+    wasm_bytes_from_file.or_else(|| WASM_BINARY.map(|bytes| bytes.to_vec()))
 }
diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs
index 57a3e5306..2197879f0 100644
--- a/node/src/chain_spec/gdev.rs
+++ b/node/src/chain_spec/gdev.rs
@@ -20,8 +20,7 @@ use crate::chain_spec::gen_genesis_data::{
 };
 use common_runtime::{constants::*, entities::IdtyData, GenesisIdty, IdtyStatus};
 use gdev_runtime::{
-    opaque::SessionKeys, pallet_universal_dividend, parameters, Runtime, RuntimeGenesisConfig,
-    WASM_BINARY,
+    opaque::SessionKeys, pallet_universal_dividend, parameters, Runtime, WASM_BINARY,
 };
 use jsonrpsee::core::JsonValue;
 use sc_network::config::MultiaddrWithPeerId;
@@ -32,7 +31,7 @@ use sp_core::{sr25519, Get};
 use sp_runtime::Perbill;
 use std::{env, fs};
 
-pub type ChainSpec = sc_service::GenericChainSpec<RuntimeGenesisConfig>;
+pub type ChainSpec = sc_service::GenericChainSpec;
 
 type GenesisParameters = gdev_runtime::GenesisParameters<u32, u32, u64, u32>;
 
diff --git a/node/src/chain_spec/gen_genesis_data.rs b/node/src/chain_spec/gen_genesis_data.rs
index 28014f16e..72a7a0dc6 100644
--- a/node/src/chain_spec/gen_genesis_data.rs
+++ b/node/src/chain_spec/gen_genesis_data.rs
@@ -14,6 +14,9 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
+#![allow(unused_imports)]
+#![allow(dead_code)]
+
 use crate::chain_spec::{get_account_id_from_seed, get_from_seed, AccountPublic};
 use common_runtime::{
     constants::{DAYS, MILLISECS_PER_BLOCK},
@@ -1611,7 +1614,6 @@ fn decorate_smiths_with_identity(
         .collect()
 }
 
-#[cfg(feature = "gdev")]
 pub fn generate_genesis_data_for_local_chain<P, SK, SessionKeys: Encode, SKP>(
     initial_authorities_len: usize,
     initial_smiths_len: usize,
@@ -1626,6 +1628,7 @@ where
     SK: Decode,
     SKP: SessionKeysProvider<SessionKeys>,
 {
+    // For benchmarking, the total length of identities should be at least MinReceivedCertToBeAbleToIssueCert + 1
     assert!(initial_identities_len <= 6);
     assert!(initial_smiths_len <= initial_identities_len);
     assert!(initial_authorities_len <= initial_smiths_len);
@@ -1770,7 +1773,6 @@ where
     Ok(genesis_data)
 }
 
-#[cfg(feature = "gdev")]
 fn clique_wot(
     initial_identities_len: usize,
 ) -> (
@@ -1797,7 +1799,6 @@ fn clique_wot(
     (certs_by_issuer, count)
 }
 
-#[cfg(feature = "gdev")]
 fn clique_smith_wot(initial_identities_len: usize) -> BTreeMap<IdtyIndex, (bool, Vec<IdtyIndex>)> {
     let mut certs_by_issuer = BTreeMap::new();
     for i in 1..=initial_identities_len {
diff --git a/node/src/chain_spec/gtest.rs b/node/src/chain_spec/gtest.rs
index 0646b6e2a..912387391 100644
--- a/node/src/chain_spec/gtest.rs
+++ b/node/src/chain_spec/gtest.rs
@@ -18,8 +18,8 @@ use super::*;
 use crate::chain_spec::gen_genesis_data::{CommonParameters, GenesisIdentity, SessionKeysProvider};
 use common_runtime::{constants::*, entities::IdtyData, GenesisIdty, IdtyStatus};
 use gtest_runtime::{
-    opaque::SessionKeys, pallet_universal_dividend, parameters, AccountId, ImOnlineId, Perbill,
-    Runtime, RuntimeGenesisConfig, WASM_BINARY,
+    opaque::SessionKeys, pallet_universal_dividend, parameters, ImOnlineId, Perbill, Runtime,
+    WASM_BINARY,
 };
 use jsonrpsee::core::JsonValue;
 use sc_consensus_grandpa::AuthorityId as GrandpaId;
@@ -29,10 +29,10 @@ use sc_telemetry::TelemetryEndpoints;
 use serde::Deserialize;
 use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId;
 use sp_consensus_babe::AuthorityId as BabeId;
-use sp_core::Get;
+use sp_core::{sr25519, Get};
 use std::{env, fs};
 
-pub type ChainSpec = sc_service::GenericChainSpec<RuntimeGenesisConfig>;
+pub type ChainSpec = sc_service::GenericChainSpec;
 pub type AuthorityKeys = (
     AccountId,
     GrandpaId,
@@ -43,6 +43,7 @@ pub type AuthorityKeys = (
 
 const TOKEN_DECIMALS: usize = 2;
 const TOKEN_SYMBOL: &str = "ÄžT";
+static EXISTENTIAL_DEPOSIT: u64 = parameters::ExistentialDeposit::get();
 
 #[derive(Default, Clone, Deserialize)]
 // No parameters for GTest (unlike GDev)
@@ -61,6 +62,49 @@ impl SessionKeysProvider<SessionKeys> for GTestSKP {
     }
 }
 
+/// generate local network chainspects
+pub fn local_testnet_config(
+    initial_authorities_len: usize,
+    initial_smiths_len: usize,
+    initial_identities_len: usize,
+) -> Result<ChainSpec, String> {
+    Ok(ChainSpec::builder(
+        &get_wasm_binary().ok_or_else(|| "Development wasm not available".to_string())?,
+        None,
+    )
+    .with_name("ÄžTest Local Testnet")
+    .with_id("gtest_local")
+    .with_chain_type(ChainType::Local)
+    .with_genesis_config_patch({
+        let genesis_data =
+            gen_genesis_data::generate_genesis_data_for_local_chain::<_, _, SessionKeys, GTestSKP>(
+                // Initial authorities len
+                initial_authorities_len,
+                // Initial smiths len,
+                initial_smiths_len,
+                // Initial identities len
+                initial_identities_len,
+                EXISTENTIAL_DEPOSIT,
+                None,
+                // Sudo account
+                get_account_id_from_seed::<sr25519::Public>("Alice"),
+                get_parameters,
+            )
+            .expect("Genesis Data must be buildable");
+        genesis_data_to_gtest_genesis_conf(genesis_data)
+    })
+    .with_properties(
+        serde_json::json!({
+            "tokenDecimals": TOKEN_DECIMALS,
+            "tokenSymbol": TOKEN_SYMBOL,
+        })
+        .as_object()
+        .expect("must be a map")
+        .clone(),
+    )
+    .build())
+}
+
 fn get_parameters(_: &Option<GenesisParameters>) -> CommonParameters {
     CommonParameters {
         currency_name: TOKEN_SYMBOL.to_string(),
diff --git a/node/src/command.rs b/node/src/command.rs
index 9b0f335c3..be3e2b16f 100644
--- a/node/src/command.rs
+++ b/node/src/command.rs
@@ -84,8 +84,9 @@ impl SubstrateCli for Cli {
     fn load_spec(&self, id: &str) -> Result<Box<dyn sc_service::ChainSpec>, String> {
         Ok(match id {
             // Development chainspec with generated genesis and Alice as a validator
+            // For benchmarking, the total length of identities should be at least MinReceivedCertToBeAbleToIssueCert + 1
             #[cfg(feature = "gdev")]
-            "dev" => Box::new(chain_spec::gdev::local_testnet_config(1, 3, 4)?),
+            "dev" => Box::new(chain_spec::gdev::local_testnet_config(1, 5, 6)?),
 
             // Local testnet with G1 data, Gdev configuration (parameters & Smiths), and Alice as a validator.
             // Optionally, load configuration from DUNITER_GENESIS_CONFIG file to override default Gdev configuration.
@@ -120,6 +121,10 @@ impl SubstrateCli for Cli {
                 &include_bytes!("../specs/gdev-raw.json")[..],
             )?),
 
+            // For benchmarking, the total length of identities should be at least MinReceivedCertToBeAbleToIssueCert + 1
+            #[cfg(feature = "gtest")]
+            "dev" => Box::new(chain_spec::gtest::local_testnet_config(1, 5, 6)?),
+
             // Generate development chainspecs with Alice as a validator.
             // Provide the DUNITER_GTEST_GENESIS environment variable to build genesis from JSON; otherwise, a local testnet with generated genesis will be used.
             #[cfg(feature = "gtest")]
@@ -157,11 +162,9 @@ impl SubstrateCli for Cli {
                 &include_bytes!("../specs/gtest-raw.json")[..],
             )?),
 
+            // For benchmarking, the total length of identities should be at least MinReceivedCertToBeAbleToIssueCert + 1
             #[cfg(feature = "g1")]
-            "g1" => {
-                unimplemented!()
-                //Box::new(chain_spec::g1::ChainSpec::from_json_file(file_path)?)
-            }
+            "dev" => Box::new(chain_spec::g1::local_testnet_config(1, 5, 6)?),
 
             path => {
                 let path = std::path::PathBuf::from(path);
diff --git a/node/src/rpc.rs b/node/src/rpc.rs
index e61d608f5..d70694e23 100644
--- a/node/src/rpc.rs
+++ b/node/src/rpc.rs
@@ -51,8 +51,6 @@ pub struct FullDeps<C, P, SC> {
     pub pool: Arc<P>,
     /// The SelectChain Strategy
     pub select_chain: SC,
-    /// A copy of the chain spec.
-    pub chain_spec: Box<dyn sc_chain_spec::ChainSpec>,
     /// Whether to deny unsafe calls
     pub deny_unsafe: DenyUnsafe,
     /// Manual seal command sink
@@ -88,7 +86,6 @@ where
         client,
         pool,
         select_chain,
-        chain_spec: _,
         deny_unsafe,
         command_sink_opt,
         babe,
diff --git a/node/src/service.rs b/node/src/service.rs
index 8ce3d3c2b..048f0f565 100644
--- a/node/src/service.rs
+++ b/node/src/service.rs
@@ -576,7 +576,6 @@ where
         let client = client.clone();
         let pool = transaction_pool.clone();
         let select_chain = select_chain;
-        let chain_spec = config.chain_spec.cloned_box();
         let keystore = keystore_container.keystore().clone();
         let babe_deps = babe_worker_handle.map(|babe_worker_handle| crate::rpc::BabeDeps {
             babe_worker_handle,
@@ -588,7 +587,6 @@ where
                 client: client.clone(),
                 pool: pool.clone(),
                 select_chain: select_chain.clone(),
-                chain_spec: chain_spec.cloned_box(),
                 deny_unsafe,
                 babe: babe_deps.clone(),
                 command_sink_opt: command_sink_opt.clone(),
diff --git a/pallets/authority-members/src/lib.rs b/pallets/authority-members/src/lib.rs
index 1f5150bde..7520d02e4 100644
--- a/pallets/authority-members/src/lib.rs
+++ b/pallets/authority-members/src/lib.rs
@@ -55,7 +55,6 @@ mod mock;
 #[cfg(test)]
 mod tests;
 
-#[cfg(feature = "runtime-benchmarks")]
 mod benchmarking;
 
 pub use pallet::*;
diff --git a/pallets/certification/src/lib.rs b/pallets/certification/src/lib.rs
index bd535195e..caeaab9f3 100644
--- a/pallets/certification/src/lib.rs
+++ b/pallets/certification/src/lib.rs
@@ -25,7 +25,6 @@
 
 #![cfg_attr(not(feature = "std"), no_std)]
 
-#[cfg(feature = "runtime-benchmarks")]
 pub mod benchmarking;
 
 pub mod traits;
diff --git a/pallets/distance/src/lib.rs b/pallets/distance/src/lib.rs
index e7e42dff2..82997a880 100644
--- a/pallets/distance/src/lib.rs
+++ b/pallets/distance/src/lib.rs
@@ -69,7 +69,6 @@ pub mod traits;
 mod types;
 mod weights;
 
-#[cfg(feature = "runtime-benchmarks")]
 pub mod benchmarking;
 
 #[cfg(test)]
diff --git a/pallets/duniter-account/src/lib.rs b/pallets/duniter-account/src/lib.rs
index be8a98e7e..1d824d0b0 100644
--- a/pallets/duniter-account/src/lib.rs
+++ b/pallets/duniter-account/src/lib.rs
@@ -31,7 +31,6 @@
 
 #![cfg_attr(not(feature = "std"), no_std)]
 
-#[cfg(feature = "runtime-benchmarks")]
 mod benchmarking;
 
 mod types;
diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs
index d306d9ca5..f0f70e6c5 100644
--- a/pallets/identity/src/lib.rs
+++ b/pallets/identity/src/lib.rs
@@ -64,7 +64,6 @@ mod mock;
 #[cfg(test)]
 mod tests;
 
-#[cfg(feature = "runtime-benchmarks")]
 pub mod benchmarking;
 
 pub use pallet::*;
diff --git a/pallets/membership/src/lib.rs b/pallets/membership/src/lib.rs
index 860d3bd25..b661c6273 100644
--- a/pallets/membership/src/lib.rs
+++ b/pallets/membership/src/lib.rs
@@ -31,7 +31,6 @@ mod mock;
 #[cfg(test)]
 mod tests;
 
-#[cfg(feature = "runtime-benchmarks")]
 mod benchmarking;
 
 pub mod weights;
diff --git a/pallets/offences/src/mock.rs b/pallets/offences/src/mock.rs
index 62cd5150d..49611fb08 100644
--- a/pallets/offences/src/mock.rs
+++ b/pallets/offences/src/mock.rs
@@ -14,8 +14,6 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
-#![cfg(test)]
-
 use crate::{self as pallet_offences, Config, SlashStrategy};
 use codec::Encode;
 use frame_support::{
diff --git a/pallets/offences/src/tests.rs b/pallets/offences/src/tests.rs
index 1b5fefff8..cf7fc9fc2 100644
--- a/pallets/offences/src/tests.rs
+++ b/pallets/offences/src/tests.rs
@@ -14,8 +14,6 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
-#![cfg(test)]
-
 use super::*;
 use crate::mock::{new_test_ext, offence_reports, Offence, Offences, RuntimeEvent, System, KIND};
 use frame_system::{EventRecord, Phase};
diff --git a/pallets/oneshot-account/src/mock.rs b/pallets/oneshot-account/src/mock.rs
index 451c5c154..d742e3343 100644
--- a/pallets/oneshot-account/src/mock.rs
+++ b/pallets/oneshot-account/src/mock.rs
@@ -105,16 +105,11 @@ impl pallet_transaction_payment::Config for Test {
 }
 impl pallet_oneshot_account::Config for Test {
     type Currency = Balances;
-    type InnerOnChargeTransaction = FungibleAdapter<Balances, HandleFees>;
+    type InnerOnChargeTransaction = FungibleAdapter<Balances, ()>;
     type RuntimeEvent = RuntimeEvent;
     type WeightInfo = ();
 }
 
-pub struct HandleFees;
-type Imbalance =
-    frame_support::traits::fungible::Credit<<Test as frame_system::Config>::AccountId, Balances>;
-impl frame_support::traits::OnUnbalanced<Imbalance> for HandleFees {}
-
 // Build genesis storage according to the mock runtime.
 #[allow(dead_code)]
 pub fn new_test_ext() -> sp_io::TestExternalities {
diff --git a/pallets/provide-randomness/src/lib.rs b/pallets/provide-randomness/src/lib.rs
index 28c4f1dcd..af35e6703 100644
--- a/pallets/provide-randomness/src/lib.rs
+++ b/pallets/provide-randomness/src/lib.rs
@@ -23,7 +23,6 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 #![allow(clippy::boxed_local)]
 
-#[cfg(feature = "runtime-benchmarks")]
 mod benchmarking;
 
 mod types;
diff --git a/pallets/quota/src/lib.rs b/pallets/quota/src/lib.rs
index 8b24f8a61..2281ebaeb 100644
--- a/pallets/quota/src/lib.rs
+++ b/pallets/quota/src/lib.rs
@@ -46,7 +46,6 @@ mod mock;
 #[cfg(test)]
 mod tests;
 
-#[cfg(feature = "runtime-benchmarks")]
 pub mod benchmarking;
 
 use crate::traits::*;
diff --git a/pallets/smith-members/src/benchmarking.rs b/pallets/smith-members/src/benchmarking.rs
index 0381e177c..7db266901 100644
--- a/pallets/smith-members/src/benchmarking.rs
+++ b/pallets/smith-members/src/benchmarking.rs
@@ -39,7 +39,8 @@ mod benchmarks {
         let issuer: T::IdtyIndex = 1.into();
         let caller: T::AccountId = T::IdtyAttr::owner_key(issuer).unwrap();
         Pallet::<T>::on_smith_goes_online(1.into());
-        let receiver: T::IdtyIndex = 4.into();
+        // Should be the last identities from the local_testnet_config
+        let receiver: T::IdtyIndex = 6.into();
 
         #[extrinsic_call]
         _(RawOrigin::Signed(caller), receiver);
@@ -54,9 +55,10 @@ mod benchmarks {
         Pallet::<T>::on_smith_goes_online(1.into());
         let caller_origin: <T as frame_system::Config>::RuntimeOrigin =
             RawOrigin::Signed(caller.clone()).into();
-        let receiver: T::IdtyIndex = 4.into();
+        // Should be the last identities from the local_testnet_config
+        let receiver: T::IdtyIndex = 6.into();
         Pallet::<T>::invite_smith(caller_origin, receiver)?;
-        let issuer: T::IdtyIndex = 4.into();
+        let issuer: T::IdtyIndex = 6.into();
         let caller: T::AccountId = T::IdtyAttr::owner_key(issuer).unwrap();
 
         #[extrinsic_call]
@@ -78,7 +80,8 @@ mod benchmarks {
         Pallet::<T>::on_smith_goes_online(1.into());
         let caller_origin: <T as frame_system::Config>::RuntimeOrigin =
             RawOrigin::Signed(caller.clone()).into();
-        let receiver: T::IdtyIndex = 4.into();
+        // Should be the last identities from the local_testnet_config
+        let receiver: T::IdtyIndex = 6.into();
         Pallet::<T>::invite_smith(caller_origin, receiver)?;
         let issuer: T::IdtyIndex = receiver;
         let caller: T::AccountId = T::IdtyAttr::owner_key(issuer).unwrap();
diff --git a/pallets/smith-members/src/lib.rs b/pallets/smith-members/src/lib.rs
index b9bf58af2..c76d12326 100644
--- a/pallets/smith-members/src/lib.rs
+++ b/pallets/smith-members/src/lib.rs
@@ -50,7 +50,6 @@ pub mod traits;
 mod types;
 pub mod weights;
 
-#[cfg(feature = "runtime-benchmarks")]
 mod benchmarking;
 
 use codec::{Codec, Decode, Encode};
diff --git a/pallets/smith-members/src/mock.rs b/pallets/smith-members/src/mock.rs
index fa181f3bf..27ecfe885 100644
--- a/pallets/smith-members/src/mock.rs
+++ b/pallets/smith-members/src/mock.rs
@@ -14,8 +14,6 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
-#![cfg(test)]
-
 use crate::{self as pallet_smith_members};
 use frame_support::{
     pallet_prelude::Hooks,
diff --git a/pallets/smith-members/src/tests.rs b/pallets/smith-members/src/tests.rs
index 3f30805ea..0ac9ba7ed 100644
--- a/pallets/smith-members/src/tests.rs
+++ b/pallets/smith-members/src/tests.rs
@@ -14,8 +14,6 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
-#![cfg(test)]
-
 use super::*;
 use crate::mock::{new_test_ext, run_to_block, Runtime, RuntimeEvent, RuntimeOrigin, System};
 use frame_support::{assert_err, assert_ok};
diff --git a/resources/metadata.scale b/resources/metadata.scale
index cd7176512ddbd3d7cfa4b633e8d3ef6a071d0813..7b3fc4e7c424afabf32ed020c7739a4ab0be673f 100644
GIT binary patch
delta 2229
zcmZ`*ZA@F&89wjvxzu*Z;<O-zkVppz7^q1hB?*v_mJrgU5fCttbX#h!?PGjv`(AVJ
zb%1IWV^y^zN~O{pa-dx`Wm<lWmVA-)PVJ_tQnac4u}a&dX4Cp3(yA$yqLLqJ)M?fB
z+Ri#qH|fgf>$%VSoacSdxjyrT?{~All8ms`4ZpZra%d2moil?^0CC<MoCk2i;VS3z
za1f~T=uj9uPGV>rm~(6BG$>AV_(dpjJ{|rCJmTCM83C{J#IYFo9OqaR{LYuhj=;L*
z{l|mtlpl3gX3LhRXB+(`foRUuz0OZ(%cr3}B}6u&rnQrTLm+AxY2x4V&;1DCc2aOF
zD`Hwg6LFr_#&cSnCrlxDR86aTOyI!C6kvv_jcGbpV=*JA+uKPk98RoS2wMMH;zEyG
zJeTEBkv1l{6M4O6+6P7voR`H_J<dn}D{7Q$7Eh>YON0u94@2+?EuBUZZVELk;@imp
z4C`qvg^DqPrjPMNE+5G@xXL4W;s{scaZ^}Uh)*Q7SdwRiDbiEes40O!+-&g`O~)9B
z)1qk+sscNS0!H%;quj^}Q?)fiFNQZoJclmWhOMSirj;w05}hgv&E%~p#uo92Q+4l|
z<uBg+SH-&1kiZaW&7O)lD>rJw-;Bmg+<R8-=s0SMlZGw!`VWP8-@Xv<%GpVD*q#b&
zW4dbROcB~g2-$|Xn32h7HY2?hX4mrW{-3->ynpZiXI{SW?t2rk$*tZ27kwMrdUKYY
z_u0bGBJO^&2kIVk%6YY0)(=xq=>7aC+}sS?TrC9yRNd5PbQ_jUyzDvXGq|nAQo=^R
z>?CF)hAVtRwJ>eC4J72~*7ruc4LzZab#!2BY4L|1kDkb9&$0~@EynC*O`&DfF(JFg
zpvL`c2CD1iwsX(`w`Jcs2nIsUhxL=_Yy7Yt7n6j@o9Eyu0LkW{1E_pz4qgI}{Pi5P
z1CtNtK!74ooQFM7A{Wj>Cp;oQIS;$QE59S58+>w5BGNC<N(gWIj1j{49d?)9WB1ut
z43zcCMupswAI-yNxp5wv;cl`2{dss?cFjYj{MkGN<&X2dzs*Cn{4n3ET7bHBUo$A}
zF;zmoW^!f;%G|^P{3L)%J&Vv<q9}wBpX^)&jsl-wgi6%%!6Jq^w+JCvpYL~gHY#2x
z!YgIP+t32#^2pop7pRbR@4)XHwkm8>e>PvGj157R0^UHMp$jaSK-kC#MyeD-fRHM=
zbqV%Dt^Dp1)Ix(CSU{q=C8&lb`AcldTNG#;5wX2JleVd0Vq#cyO+^^H1pSYqDU7rt
zZwnIACWY*j;u1Uy?efYcXc*~Sqoe)XI@*gmx)3)gtX$gmqTW-i2YL|e?N2ds3dsq2
zWirxJ1oz0-uArF%m!S?0%gM{AwpYG+87gpuD>d@gWpHr{`{OVm=~dj?u&lodjV;3p
z<NJs3`s!7)UUmeQfQ>*aZs9qkF8t6F3c-gk?-DMk^5v^A_}G8~SXfECEOh&TYGc|&
zQG@>)>}uB5h|egi)o1d&YvpHT_8R;F#%1?1)K2HtI5hQbho*{~&NuWWh2VqQT0iiR
z8O2*~Wg{luFj_{0`m^eIPK>DOoInI=g)RBK<=QY|udInNvpU9xVmZtdgPc~J=lK>H
zxq;_l`*q0BS65B^<~jsnR{s4u>}Z@_!#KB^u}C;qB%J%^{TE<Ceslwi_bvJ01_XT<
z5I{8`7v12y5K`c_JM=#M*<ZSH--mTc$Pcy761V-gux%8|<Vujf4xhR&*HaZrZ?oNm
z0sRnW=x1`JftDxku(MBhCq*n3#xK=~FfFY6yDZRFm>ZgWICGB$nhP_}2whm3b)PjC
z5xs_qmp5LmU$N%;0s_xU46lZ>p~C2x(8iMXdYNjZm29JOR&mcX(jeeTx%N1nW)%v%
zDJMd-Mjj8*&3FQ>5Pc1{%2Q9%gYL6U^mFQ|Qfl3{eYBFw!5#Dmc+NiFLEB)b^gc<K
z@u>XjNqPV}U1+86fTv06l2>-pk39oQi~P|p`hvef3B<AJ1{76(xr^Q{6N=ZKY*Ol@
zX(N`3BvmWftho<%)AuQiyUQJv1LWL4?V&35%oGFnQ+UNiJ*Lvoq?D$G9yqO#16VHR
zR3srpB#wVOw6x_d%}v@50k6uMgES5c?x}<H3-G+9jJq!$qQ^aO!TsYA+6tbF3i&q;
C=cE7t

delta 3094
zcmbVOZEO_B8Qyn117{nOqrqVF5e9!?o0#*N*kBtw_%H^XU>kh4Nt#CX`gVM`@!syS
zyXTK8#Nr1Hv_`^S@PsN+iV6*1CI+|NluAwMhtl>>)t{*pHK~MDexQmUs3H<+XK!t4
z<5rbwoxD5mzVpsA&-2dv&ZiUE-~E2}vLv(RXQyv2JJ6Y1OAnbw%CMM%oozLngA%T8
zXTvm=G0IxV>FBHkaK<{{1?1#MH|Nk!_9lzjObH18!oUVgldS|(oD0#stuv7)6X~#Q
zQFG397ad6JibaQ+$!KPRvm?3{up>vKK%AdMkHRviwCfZscW!ol8v;&6_g9eZl=k#M
zj`Ma;404^n_VmLFr{%~iuyS_dNNF8xnElzA-8s&Mi~DB3c<-MDs1BSyw`h0VlyxN~
z*Vi91*^ptgh65F}{iTYWNZL*qrfQEy)wnL(X_LJqNm8-!iW$kIYGbJlK_nBSVqpyb
z>wk|jd)vJ|oL^k+6UKV26w{RetR9lJG^=oqcWvTVE1{rFYI^rj+NJ}BIV_tBm8q4E
z$C+iThVB_@W}d3Y`KDd4eN2W3RhW=PwS7iS&r#N>ZBRSGXeK&UJ%%l24lxl>SA1s0
zyE>3@n%B_x^F<5IwA%hyP@oH6Lyxf~-u<!%k|`mnwy3CxHXF&5#zq8r`P*nmSyj1I
zEUYa<Ot&rR2Q7j<i@x5M8GF3@>D2dzhr>$8V$8Az(psp&&xT$f7Qayig{z^V&rc^o
z$Q*+T|GE}7@R~*ljh*chdljn1Rd4U}gbb^iM*HUy>Hh;cpTkQ)HpwZ0V~Ax?BE!nS
z%tLz*Mtu7doU-OAwPxMPwzOq?XkPDYHuM2CUSB`w%G(=Z%~%^mY%xibZDvwiO|pu`
zY|n2-)-)p~oRoQq`<c!L)R-!pqZx5M+2^THo~FWNzMM-0+fAu2S!khV7uyZWGV)Pb
zoJb}V^j01)jif*)(n?XSlx)WmAvawKm$G@yF4*YqsDpy%_{7Vw);)R<M!|nw(GI^^
z2h{yj0uCb{?1Dn~M}ttfr3B}9q`a)fxC`<j5NtPeCXQS%Y9tw!@+Ao*=}Z3U1Z+ij
zG4H5^e4aZA&vb-St-6&S@b)eeY%ZNlYmcnSB3C5|kIdUjE!yu}y_B{MgKEZbDBP-x
z<Dn|8y23^z;N_FB8xU6~p&qjM#Ys4ZF@Eb1f9FMbo;N!J8{yw_fWb2UD+hMLa{jdg
zjS%1sXJH3qbL%WLLk@S(LLKDt2WKIge-8^7^ge!oAL2*&F(zac$s^KzUO5Hp_|Q2B
z!vp{Q&N+C2ho)dXUp@t;@W`_^z+?a8ccx%VE)ZDJV#<OJ;<{5X6GVjYjh%vx;~&EM
z=4>KiX(a(|z?74syo_2lOV-ynCs=GyFdAbGU80a>lR!AGu%TWvt$Rtfq0@f~zNMA?
zFCW4_w2JWX6cq5L%RnKI%a@^DjAkywpJAi-Sj|7U0=LUIlZCpKkR`&Ekc@IA{+y|+
zPzL4vldDj|qt{>!|LQ6fLKWY54GQyW2-NnlSVPN*ZK}GZ#stzT-gOO>ZwLmlR4vfe
zh;XQiNOk-V*WhJn<ayVjyeF~<MdMNwjXsJN;n&Hmv}OlHmYu{c&?<Zb9fMdp>Fr%G
zYhtO@cW&ivA3-7i>2=rwZT$1=0_fqXX($kb%!h_)_!tiR?`v;B2XyoJ4Jd)v_~{$4
zwdys3>7Fi=u{Jpsz^}kG;2x+J+jv8S&-_C&k;G5Jfobu9@xR@G&gZ%bh>T2#&ZpaZ
zWm^cXdP}?-PA<ZJlq>{))C;*7{ZSv-KR$vPNb}1xP|`WNh^1poSvux#+<TzoL=r!N
zt@=)ubb<s9S*hNbp<7HGHmi58<#A8X@>7fAo>&_9gdg`bpST4@{Mb!M!i4|+%q@}S
z=lG6Wu)X};qA=%|hB@ztIqyw<2j1revrqvS_`X>v&A#MeRzbSr4hbuPyY3G^hR<?V
z1n+GVbwiSV`TVBk?#W+6ao-pX`vpPP_87YI84d<ZB`MGibe}25G7Z)kSWve`)$rS=
zosey6C5*JDcm=#)O!k_mF3POp6>Ed0H2JCS7+M81qElIPwUk#fMY9+aZCZ4vI1^n^
z6lqIDl4FA*8hLX4`S+zrF_=Yl!wwx>2)Rww)nq!EPd(t?A8rLYXQXn{5NDZ+E%<k+
zr%<P~F@Z4yTYl0Zy$eNB9u(J!1^a$#O?kvy^K&c?qPLnq{NJlBU2M&NUX4!|p-K4C
zZ7N1GjNQdMB@F2Ia2(yk^uT=i`X)1tsJJjO^FAJL%2=Z*7VBZAB|66g9IVaQx<=+K
z4{<P@vFsP!(Ne8PIP8108Ky0YzCHRFhs)-p#~2~w72YUk@CZ}m340Y8=Wkzz0-Q(2
zv)%n$P$`HaXq2KcQ3U^9ikieDT!zlTX7^4R3TI`NkaG879a@k0vmx{rY~$l0R10<d
zw;?o(8wnogcPh~uK3R!gfQb8xN^~8vsz?h@R-r#;b(0#tdpmkFXB!DB;^=o1#%H&q
z`>RzFut%y$S-<G{gS`oHfet6#AHRrxjv(!(b|4Bc>Q3xLGRivP1L#0-iVH~l-0wA@
z3KFOyD>SADPxDVAs9=6H!M}(gCHH+&%z*AmtD3?iEodzdHlt;(wg>$VvM!LcyK^sk
RH484eXZE9N$htzLe*qq(!fgNm

diff --git a/resources/weight_analyzer/src/lib.rs b/resources/weight_analyzer/src/lib.rs
index 4f0682466..0f39bbd72 100644
--- a/resources/weight_analyzer/src/lib.rs
+++ b/resources/weight_analyzer/src/lib.rs
@@ -47,10 +47,10 @@ pub struct WeightInfo {
 ///
 /// # Arguments
 ///
-/// * `folder_path` - A Path to a folder where the weight files are stored.
-/// `paritydb_weights.rs` is mandatory and pallet weights should start by
-/// `pallet_`.
-/// *`max_block_weight` - The maximal weight of a block.
+///   * `folder_path` - A Path to a folder where the weight files are stored.
+///     `paritydb_weights.rs` is mandatory and pallet weights should start by
+///     `pallet_`.
+///   * `max_block_weight` - The maximal weight of a block.
 ///
 /// # Examples
 ///
@@ -58,7 +58,7 @@ pub struct WeightInfo {
 ///    use weightanalyzer::analyze_weight;
 ///    use std::path::Path;
 ///    use weightanalyzer::MaxBlockWeight;
-///    let weight_by_pallet = analyze_weight(Path::new("../../runtime/common/src/weights/"), &MaxBlockWeight::default());
+///    let weight_by_pallet = analyze_weight(Path::new("../../runtime/gdev/src/weights/"), &MaxBlockWeight::default());
 ///    println!("{:?}", weight_by_pallet);
 /// ```
 pub fn analyze_weight(
@@ -177,7 +177,7 @@ mod tests {
     #[test]
     fn should_works() {
         let weight_by_pallet = analyze_weight(
-            Path::new("../../runtime/common/src/weights/"),
+            Path::new("../../runtime/gdev/src/weights/"),
             &MaxBlockWeight::default(),
         );
         assert!(
@@ -187,7 +187,7 @@ mod tests {
                 .get("Balances")
                 .unwrap()
                 .len()
-                == 8
+                == 10
         ); // 8 extrinsics in pallet
         println!("{:?}", weight_by_pallet); // cargo test  -- --nocapture
     }
diff --git a/runtime/common/src/constants.rs b/runtime/common/src/constants.rs
index 77de93269..a9f31004c 100644
--- a/runtime/common/src/constants.rs
+++ b/runtime/common/src/constants.rs
@@ -17,8 +17,6 @@
 use crate::{Balance, BlockNumber};
 use sp_runtime::Perbill;
 
-pub use crate::weights::paritydb_weights::constants::ParityDbWeight as DbWeight;
-
 /// This determines the average expected block time that we are targeting.
 /// Blocks will be produced at a minimum duration defined by `SLOT_DURATION`.
 /// `SLOT_DURATION` is picked up by `pallet_timestamp` which is in turn picked
diff --git a/runtime/common/src/fees.rs b/runtime/common/src/fees.rs
index 50e40df1f..9d7a166bb 100644
--- a/runtime/common/src/fees.rs
+++ b/runtime/common/src/fees.rs
@@ -27,7 +27,6 @@ use sp_core::Get;
 use sp_runtime::{traits::Convert, Perquintill};
 #[cfg(not(feature = "constant-fees"))]
 use {
-    crate::weights::extrinsic_weights::ExtrinsicBaseWeight,
     frame_support::pallet_prelude::DispatchClass,
     frame_support::weights::{
         WeightToFeeCoefficient, WeightToFeeCoefficients, WeightToFeePolynomial,
@@ -154,7 +153,8 @@ where
         } else {
             // The extrinsic base weight (smallest non-zero weight) is mapped to 5 cents
             let p: Self::Balance = 5u64.into();
-            let q: Self::Balance = Self::Balance::from(ExtrinsicBaseWeight::get().ref_time());
+            let q: Self::Balance =
+                Self::Balance::from(weights.get(DispatchClass::Normal).base_extrinsic.ref_time());
             smallvec![WeightToFeeCoefficient {
                 degree: 1,
                 negative: false,
diff --git a/runtime/common/src/handlers.rs b/runtime/common/src/handlers.rs
index e8518fd1c..fa247d1c5 100644
--- a/runtime/common/src/handlers.rs
+++ b/runtime/common/src/handlers.rs
@@ -17,6 +17,7 @@
 use super::{entities::*, AccountId, IdtyIndex};
 use frame_support::{pallet_prelude::Weight, traits::UnfilteredDispatchable};
 use pallet_smith_members::SmithRemovalReason;
+use sp_core::Get;
 
 /// OnNewSession handler for the runtime calling all the implementation
 /// of OnNewSession
@@ -108,7 +109,7 @@ impl<
         let mut weight = pallet_duniter_wot::Pallet::<Runtime>::on_removed(idty_index);
 
         let mut add_db_reads_writes = |reads, writes| {
-            weight += crate::constants::DbWeight::get().reads_writes(reads, writes);
+            weight += Runtime::DbWeight::get().reads_writes(reads, writes);
         };
 
         // When membership is removed, call on_removed_member handler which auto claims UD.
diff --git a/runtime/common/src/lib.rs b/runtime/common/src/lib.rs
index 589b4f381..e4fac0aa6 100644
--- a/runtime/common/src/lib.rs
+++ b/runtime/common/src/lib.rs
@@ -23,7 +23,6 @@ pub mod fees;
 pub mod handlers;
 mod pallets_config;
 pub mod providers;
-pub mod weights;
 
 pub use pallet_duniter_account::GenesisAccountData;
 pub use pallet_identity::{GenesisIdty, IdtyName, IdtyStatus, IdtyValue};
diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs
index ef3af870a..b376b12d8 100644
--- a/runtime/common/src/pallets_config.rs
+++ b/runtime/common/src/pallets_config.rs
@@ -74,7 +74,7 @@ macro_rules! pallets_config {
             type SS58Prefix = SS58Prefix;
             type SingleBlockMigrations = ();
             /// Weight information for the extrinsics of this pallet.
-            type SystemWeightInfo = common_runtime::weights::frame_system::WeightInfo<Runtime>;
+            type SystemWeightInfo = weights::frame_system::WeightInfo<Runtime>;
             /// Version of the runtime.
             type Version = Version;
         }
@@ -97,7 +97,7 @@ macro_rules! pallets_config {
             type RuntimeEvent = RuntimeEvent;
             type RuntimeOrigin = RuntimeOrigin;
             type ScheduleOrigin = EnsureRoot<AccountId>;
-            type WeightInfo = common_runtime::weights::pallet_scheduler::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_scheduler::WeightInfo<Runtime>;
         }
 
         // ACCOUNT //
@@ -107,7 +107,7 @@ macro_rules! pallets_config {
             type InnerOnChargeTransaction = FungibleAdapter<Balances, HandleFees>;
             type Refund = Quota;
             type RuntimeEvent = RuntimeEvent;
-            type WeightInfo = common_runtime::weights::pallet_duniter_account::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_duniter_account::WeightInfo<Runtime>;
         }
 
         // QUOTA //
@@ -130,7 +130,7 @@ macro_rules! pallets_config {
             type RefundAccount = TreasuryAccountId;
             type ReloadRate = ReloadRate;
             type RuntimeEvent = RuntimeEvent;
-            type WeightInfo = common_runtime::weights::pallet_quota::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_quota::WeightInfo<Runtime>;
         }
 
         // BLOCK CREATION //
@@ -147,14 +147,14 @@ macro_rules! pallets_config {
                 <Historical as KeyOwnerProofSystem<(KeyTypeId, pallet_babe::AuthorityId)>>::Proof;
             type MaxAuthorities = MaxAuthorities;
             type MaxNominators = MaxNominators;
-            type WeightInfo = common_runtime::weights::pallet_babe::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_babe::WeightInfo<Runtime>;
         }
 
         impl pallet_timestamp::Config for Runtime {
             type MinimumPeriod = MinimumPeriod;
             type Moment = u64;
             type OnTimestampSet = (Babe, UniversalDividend);
-            type WeightInfo = common_runtime::weights::pallet_timestamp::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
         }
 
         // MONEY MANAGEMENT //
@@ -172,7 +172,7 @@ macro_rules! pallets_config {
             type RuntimeEvent = RuntimeEvent;
             type RuntimeFreezeReason = ();
             type RuntimeHoldReason = RuntimeHoldReason;
-            type WeightInfo = common_runtime::weights::pallet_balances::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_balances::WeightInfo<Runtime>;
         }
 
         type CreditOf = frame_support::traits::tokens::fungible::Credit<AccountId, Balances>;
@@ -208,7 +208,7 @@ macro_rules! pallets_config {
             // when call is not oneshot account, fall back to duniter-account implementation
             type InnerOnChargeTransaction = Account;
             type RuntimeEvent = RuntimeEvent;
-            type WeightInfo = common_runtime::weights::pallet_oneshot_account::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_oneshot_account::WeightInfo<Runtime>;
         }
 
         // CONSENSUS  //
@@ -226,8 +226,7 @@ macro_rules! pallets_config {
             type OnOutgoingMember = SmithMembers;
             type RemoveMemberOrigin = EnsureRoot<Self::AccountId>;
             type RuntimeEvent = RuntimeEvent;
-            type WeightInfo =
-                common_runtime::weights::pallet_authority_members::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_authority_members::WeightInfo<Runtime>;
         }
         impl pallet_authorship::Config for Runtime {
             type EventHandler = ImOnline;
@@ -245,7 +244,7 @@ macro_rules! pallets_config {
             type RuntimeEvent = RuntimeEvent;
             type UnsignedPriority = ImOnlineUnsignedPriority;
             type ValidatorSet = Historical;
-            type WeightInfo = common_runtime::weights::pallet_im_online::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_im_online::WeightInfo<Runtime>;
         }
         impl pallet_offences::Config for Runtime {
             type IdentificationTuple = pallet_session::historical::IdentificationTuple<Self>;
@@ -262,7 +261,7 @@ macro_rules! pallets_config {
             type ShouldEndSession = Babe;
             type ValidatorId = AccountId;
             type ValidatorIdOf = sp_runtime::traits::ConvertInto;
-            type WeightInfo = common_runtime::weights::pallet_session::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_session::WeightInfo<Runtime>;
         }
         impl pallet_session::historical::Config for Runtime {
             type FullIdentification = ValidatorFullIdentification;
@@ -280,7 +279,7 @@ macro_rules! pallets_config {
             type MaxNominators = frame_support::traits::ConstU32<64>;
             type MaxSetIdSessionEntries = MaxSetIdSessionEntries;
             type RuntimeEvent = RuntimeEvent;
-            type WeightInfo = common_runtime::weights::pallet_grandpa::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_grandpa::WeightInfo<Runtime>;
         }
         parameter_types! {
             // BondingDuration::get() * SessionsPerEra::get();
@@ -303,7 +302,7 @@ macro_rules! pallets_config {
                 2,
                 3,
             >;
-            type WeightInfo = common_runtime::weights::pallet_upgrade_origin::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_upgrade_origin::WeightInfo<Runtime>;
             #[cfg(feature = "runtime-benchmarks")]
             type WorstCaseOrigin = WorstCaseOrigin;
             #[cfg(feature = "runtime-benchmarks")]
@@ -321,7 +320,7 @@ macro_rules! pallets_config {
             type Currency = Balances;
             type ManagerOrigin = EnsureRoot<AccountId>;
             type RuntimeEvent = RuntimeEvent;
-            type WeightInfo = common_runtime::weights::pallet_preimage::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_preimage::WeightInfo<Runtime>;
         }
 
         // UTILITIES //
@@ -342,8 +341,7 @@ macro_rules! pallets_config {
             type RandomnessFromOneEpochAgo = pallet_babe::RandomnessFromOneEpochAgo<Self>;
             type RequestPrice = frame_support::traits::ConstU64<2_000>;
             type RuntimeEvent = RuntimeEvent;
-            type WeightInfo =
-                common_runtime::weights::pallet_provide_randomness::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_provide_randomness::WeightInfo<Runtime>;
         }
 
         parameter_types! {
@@ -366,7 +364,7 @@ macro_rules! pallets_config {
             type ProxyType = ProxyType;
             type RuntimeCall = RuntimeCall;
             type RuntimeEvent = RuntimeEvent;
-            type WeightInfo = common_runtime::weights::pallet_proxy::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_proxy::WeightInfo<Runtime>;
         }
 
         parameter_types! {
@@ -380,14 +378,14 @@ macro_rules! pallets_config {
             type MaxSignatories = MaxSignatories;
             type RuntimeCall = RuntimeCall;
             type RuntimeEvent = RuntimeEvent;
-            type WeightInfo = common_runtime::weights::pallet_multisig::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_multisig::WeightInfo<Runtime>;
         }
 
         impl pallet_utility::Config for Runtime {
             type PalletsOrigin = OriginCaller;
             type RuntimeCall = RuntimeCall;
             type RuntimeEvent = RuntimeEvent;
-            type WeightInfo = common_runtime::weights::pallet_utility::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_utility::WeightInfo<Runtime>;
         }
 
         parameter_types! {
@@ -400,7 +398,6 @@ macro_rules! pallets_config {
             pub const TreasuryPalletId: PalletId = PalletId(*b"py/trsry");
         }
         impl pallet_treasury::Config for Runtime {
-            type ApproveOrigin = TreasuryApproveOrigin;
             type AssetKind = ();
             type BalanceConverter = frame_support::traits::tokens::UnityAssetBalanceConversion;
             #[cfg(feature = "runtime-benchmarks")]
@@ -411,20 +408,16 @@ macro_rules! pallets_config {
             type BurnDestination = ();
             type Currency = Balances;
             type MaxApprovals = frame_support::traits::ConstU32<100>;
-            type OnSlash = Treasury;
             type PalletId = TreasuryPalletId;
             type Paymaster =
                 frame_support::traits::tokens::pay::PayFromAccount<Balances, TreasuryAccount>;
             type PayoutPeriod = sp_core::ConstU32<10>;
-            type ProposalBond = ProposalBond;
-            type ProposalBondMaximum = ProposalBondMaximum;
-            type ProposalBondMinimum = frame_support::traits::ConstU64<10_000>;
             type RejectOrigin = TreasuryRejectOrigin;
             type RuntimeEvent = RuntimeEvent;
             type SpendFunds = TreasurySpendFunds<Self>;
             type SpendOrigin = frame_support::traits::NeverEnsureOrigin<Balance>;
             type SpendPeriod = SpendPeriod;
-            type WeightInfo = common_runtime::weights::pallet_treasury::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_treasury::WeightInfo<Runtime>;
         }
 
         // UNIVERSAL DIVIDEND //
@@ -448,8 +441,7 @@ macro_rules! pallets_config {
             type SquareMoneyGrowthRate = SquareMoneyGrowthRate;
             type UdCreationPeriod = UdCreationPeriod;
             type UdReevalPeriod = UdReevalPeriod;
-            type WeightInfo =
-                common_runtime::weights::pallet_universal_dividend::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_universal_dividend::WeightInfo<Runtime>;
         }
 
         // WEB OF TRUST //
@@ -482,13 +474,13 @@ macro_rules! pallets_config {
             type Signature = Signature;
             type Signer = <Signature as sp_runtime::traits::Verify>::Signer;
             type ValidationPeriod = ValidationPeriod;
-            type WeightInfo = common_runtime::weights::pallet_identity::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_identity::WeightInfo<Runtime>;
         }
 
         impl pallet_sudo::Config for Runtime {
             type RuntimeCall = RuntimeCall;
             type RuntimeEvent = RuntimeEvent;
-            type WeightInfo = common_runtime::weights::pallet_sudo::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_sudo::WeightInfo<Runtime>;
         }
 
         impl pallet_membership::Config for Runtime {
@@ -502,7 +494,7 @@ macro_rules! pallets_config {
             type OnNewMembership = OnNewMembershipHandler<Runtime>;
             type OnRemoveMembership = OnRemoveMembershipHandler<Runtime>;
             type RuntimeEvent = RuntimeEvent;
-            type WeightInfo = common_runtime::weights::pallet_membership::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_membership::WeightInfo<Runtime>;
         }
 
         impl pallet_certification::Config for Runtime {
@@ -516,7 +508,7 @@ macro_rules! pallets_config {
             type OnRemovedCert = Wot;
             type RuntimeEvent = RuntimeEvent;
             type ValidityPeriod = ValidityPeriod;
-            type WeightInfo = common_runtime::weights::pallet_certification::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_certification::WeightInfo<Runtime>;
         }
         parameter_types! {
             pub const MinAccessibleReferees: Perbill = Perbill::from_percent(80);
@@ -531,7 +523,7 @@ macro_rules! pallets_config {
             type OnValidDistanceStatus = Wot;
             type RuntimeEvent = RuntimeEvent;
             type RuntimeHoldReason = RuntimeHoldReason;
-            type WeightInfo = common_runtime::weights::pallet_distance::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_distance::WeightInfo<Runtime>;
         }
 
         // SMITH-MEMBERS
@@ -546,7 +538,7 @@ macro_rules! pallets_config {
             type OnSmithDelete = OnSmithDeletedHandler<Runtime>;
             type RuntimeEvent = RuntimeEvent;
             type SmithInactivityMaxDuration = SmithInactivityMaxDuration;
-            type WeightInfo = common_runtime::weights::pallet_smith_members::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_smith_members::WeightInfo<Runtime>;
         }
 
         pub struct TechnicalCommitteeDefaultVote;
@@ -577,7 +569,7 @@ macro_rules! pallets_config {
             type RuntimeEvent = RuntimeEvent;
             type RuntimeOrigin = RuntimeOrigin;
             type SetMembersOrigin = EnsureRoot<AccountId>;
-            type WeightInfo = common_runtime::weights::pallet_collective::WeightInfo<Runtime>;
+            type WeightInfo = weights::pallet_collective::WeightInfo<Runtime>;
         }
     };
 }
diff --git a/runtime/common/src/weights/pallet_treasury.rs b/runtime/common/src/weights/pallet_treasury.rs
deleted file mode 100644
index 5bfd1059f..000000000
--- a/runtime/common/src/weights/pallet_treasury.rs
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright 2021-2022 Axiom-Team
-//
-// This file is part of Duniter-v2S.
-//
-// Duniter-v2S is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, version 3 of the License.
-//
-// Duniter-v2S is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
-
-//! Autogenerated weights for `pallet_treasury`
-//!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
-//! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
-//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
-
-// Executed Command:
-// target/release/duniter
-// benchmark
-// pallet
-// --chain=dev
-// --steps=50
-// --repeat=20
-// --pallet=*
-// --extrinsic=*
-// --wasm-execution=compiled
-// --heap-pages=4096
-// --header=./file_header.txt
-// --output=./runtime/common/src/weights/
-
-#![cfg_attr(rustfmt, rustfmt_skip)]
-#![allow(unused_parens)]
-#![allow(unused_imports)]
-#![allow(missing_docs)]
-
-use frame_support::{traits::Get, weights::Weight};
-use core::marker::PhantomData;
-
-/// Weight functions for `pallet_treasury`.
-pub struct WeightInfo<T>(PhantomData<T>);
-impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
-	fn spend_local() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `0`
-		// Minimum execution time: 0_000 picoseconds.
-		Weight::from_parts(0, 0)
-			.saturating_add(Weight::from_parts(0, 0))
-	}
-	/// Storage: `Treasury::ProposalCount` (r:1 w:1)
-	/// Proof: `Treasury::ProposalCount` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
-	/// Storage: `Treasury::Proposals` (r:0 w:1)
-	/// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(92), added: 2567, mode: `MaxEncodedLen`)
-	fn propose_spend() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `67`
-		//  Estimated: `1489`
-		// Minimum execution time: 16_895_000 picoseconds.
-		Weight::from_parts(17_676_000, 0)
-			.saturating_add(Weight::from_parts(0, 1489))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(2))
-	}
-	/// Storage: `Treasury::Proposals` (r:1 w:1)
-	/// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(92), added: 2567, mode: `MaxEncodedLen`)
-	/// Storage: `System::Account` (r:2 w:2)
-	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
-	fn reject_proposal() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `272`
-		//  Estimated: `6126`
-		// Minimum execution time: 27_835_000 picoseconds.
-		Weight::from_parts(28_815_000, 0)
-			.saturating_add(Weight::from_parts(0, 6126))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().writes(3))
-	}
-	/// Storage: `Treasury::Proposals` (r:1 w:0)
-	/// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(92), added: 2567, mode: `MaxEncodedLen`)
-	/// Storage: `Treasury::Approvals` (r:1 w:1)
-	/// Proof: `Treasury::Approvals` (`max_values`: Some(1), `max_size`: Some(402), added: 897, mode: `MaxEncodedLen`)
-	/// The range of component `p` is `[0, 99]`.
-	fn approve_proposal(p: u32, ) -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `433 + p * (8 ±0)`
-		//  Estimated: `3557`
-		// Minimum execution time: 6_110_000 picoseconds.
-		Weight::from_parts(9_332_735, 0)
-			.saturating_add(Weight::from_parts(0, 3557))
-			// Standard Error: 1_142
-			.saturating_add(Weight::from_parts(49_768, 0).saturating_mul(p.into()))
-			.saturating_add(T::DbWeight::get().reads(2))
-			.saturating_add(T::DbWeight::get().writes(1))
-	}
-	/// Storage: `Treasury::Approvals` (r:1 w:1)
-	/// Proof: `Treasury::Approvals` (`max_values`: Some(1), `max_size`: Some(402), added: 897, mode: `MaxEncodedLen`)
-	fn remove_approval() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `90`
-		//  Estimated: `1887`
-		// Minimum execution time: 4_290_000 picoseconds.
-		Weight::from_parts(4_657_000, 0)
-			.saturating_add(Weight::from_parts(0, 1887))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(1))
-	}
-	/// Storage: `System::Account` (r:199 w:199)
-	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
-	/// Storage: `Treasury::Deactivated` (r:1 w:1)
-	/// Proof: `Treasury::Deactivated` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
-	/// Storage: `Treasury::Approvals` (r:1 w:1)
-	/// Proof: `Treasury::Approvals` (`max_values`: Some(1), `max_size`: Some(402), added: 897, mode: `MaxEncodedLen`)
-	/// Storage: `Treasury::Proposals` (r:99 w:99)
-	/// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(92), added: 2567, mode: `MaxEncodedLen`)
-	/// The range of component `p` is `[0, 99]`.
-	fn on_initialize_proposals(p: u32, ) -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `0 + p * (195 ±0)`
-		//  Estimated: `3558 + p * (5136 ±0)`
-		// Minimum execution time: 11_965_000 picoseconds.
-		Weight::from_parts(24_309_981, 0)
-			.saturating_add(Weight::from_parts(0, 3558))
-			// Standard Error: 14_472
-			.saturating_add(Weight::from_parts(23_310_107, 0).saturating_mul(p.into()))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().reads((3_u64).saturating_mul(p.into())))
-			.saturating_add(T::DbWeight::get().writes(3))
-			.saturating_add(T::DbWeight::get().writes((3_u64).saturating_mul(p.into())))
-			.saturating_add(Weight::from_parts(0, 5136).saturating_mul(p.into()))
-	}
-	fn spend() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `0`
-		// Minimum execution time: 0_000 picoseconds.
-		Weight::from_parts(0, 0)
-			.saturating_add(Weight::from_parts(0, 0))
-	}
-	/// Storage: `Treasury::Spends` (r:1 w:1)
-	/// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(61), added: 2536, mode: `MaxEncodedLen`)
-	/// Storage: `System::Account` (r:2 w:2)
-	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
-	fn payout() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `179`
-		//  Estimated: `6126`
-		// Minimum execution time: 39_319_000 picoseconds.
-		Weight::from_parts(40_632_000, 0)
-			.saturating_add(Weight::from_parts(0, 6126))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().writes(3))
-	}
-	/// Storage: `Treasury::Spends` (r:1 w:1)
-	/// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(61), added: 2536, mode: `MaxEncodedLen`)
-	fn check_status() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `116`
-		//  Estimated: `3526`
-		// Minimum execution time: 8_711_000 picoseconds.
-		Weight::from_parts(9_202_000, 0)
-			.saturating_add(Weight::from_parts(0, 3526))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(1))
-	}
-	/// Storage: `Treasury::Spends` (r:1 w:1)
-	/// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(61), added: 2536, mode: `MaxEncodedLen`)
-	fn void_spend() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `116`
-		//  Estimated: `3526`
-		// Minimum execution time: 7_887_000 picoseconds.
-		Weight::from_parts(8_349_000, 0)
-			.saturating_add(Weight::from_parts(0, 3526))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(1))
-	}
-}
diff --git a/runtime/g1/Cargo.toml b/runtime/g1/Cargo.toml
index 94b683b12..a33d3a134 100644
--- a/runtime/g1/Cargo.toml
+++ b/runtime/g1/Cargo.toml
@@ -119,6 +119,7 @@ std = [
 	"sp-transaction-pool/std",
 	"sp-version/std",
 	"substrate-wasm-builder",
+	"sp-weights/std",
 ]
 try-runtime = [
 	"common-runtime/try-runtime",
@@ -237,3 +238,4 @@ sp-transaction-pool = { workspace = true }
 sp-version = { workspace = true }
 node-primitives = { workspace = true }
 sp-genesis-builder = { workspace = true }
+sp-weights = { workspace = true }
diff --git a/runtime/g1/src/lib.rs b/runtime/g1/src/lib.rs
index 21378216a..865c524eb 100644
--- a/runtime/g1/src/lib.rs
+++ b/runtime/g1/src/lib.rs
@@ -27,6 +27,7 @@ include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
 extern crate frame_benchmarking;
 
 pub mod parameters;
+pub mod weights;
 
 pub use self::parameters::*;
 use common_runtime::IdtyNameValidatorImpl;
@@ -67,6 +68,7 @@ use sp_std::prelude::*;
 #[cfg(feature = "std")]
 use sp_version::NativeVersion;
 use sp_version::RuntimeVersion;
+pub use weights::paritydb_weights::constants::ParityDbWeight as DbWeight;
 
 // A few exports that help ease life for downstream crates.
 use frame_support::instances::Instance2;
@@ -171,6 +173,7 @@ mod benches {
 
 pub struct BaseCallFilter;
 impl Contains<RuntimeCall> for BaseCallFilter {
+    #[cfg(not(feature = "runtime-benchmarks"))]
     fn contains(call: &RuntimeCall) -> bool {
         !matches!(
             call,
@@ -179,6 +182,11 @@ impl Contains<RuntimeCall> for BaseCallFilter {
             ) | RuntimeCall::Session(_)
         )
     }
+
+    #[cfg(feature = "runtime-benchmarks")]
+    fn contains(call: &RuntimeCall) -> bool {
+        !matches!(call, RuntimeCall::Session(_))
+    }
 }
 
 /// The type used to represent the kinds of proxying allowed.
diff --git a/runtime/g1/src/parameters.rs b/runtime/g1/src/parameters.rs
index 4be9a2361..12c2b52fe 100644
--- a/runtime/g1/src/parameters.rs
+++ b/runtime/g1/src/parameters.rs
@@ -57,7 +57,7 @@ parameter_types! {
 
 // ImOnline
 parameter_types! {
-    pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value();
+    pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::MAX;
     pub const MaxPeerInHeartbeats: u32 = 10_000;
     pub const MaxPeerDataEncodingSize: u32 = 1_000;
 }
@@ -67,6 +67,15 @@ parameter_types! {
 /*********/
 
 // Balances
+// Why? Pallet treasury benchmarks are broken because the spend
+// value is hardcoded 100 in benchmark and the account is not provided enough funds
+// to exist if ED > 100.
+#[cfg(feature = "runtime-benchmarks")]
+frame_support::parameter_types! {
+    pub const ExistentialDeposit: Balance = 100;
+    pub const MaxLocks: u32 = 50;
+}
+#[cfg(not(feature = "runtime-benchmarks"))]
 frame_support::parameter_types! {
     pub const ExistentialDeposit: Balance = 200;
     pub const MaxLocks: u32 = 50;
diff --git a/runtime/common/src/weights.rs b/runtime/g1/src/weights.rs
similarity index 100%
rename from runtime/common/src/weights.rs
rename to runtime/g1/src/weights.rs
diff --git a/runtime/g1/src/weights/block_weights.rs b/runtime/g1/src/weights/block_weights.rs
new file mode 100644
index 000000000..c1d7190e7
--- /dev/null
+++ b/runtime/g1/src/weights/block_weights.rs
@@ -0,0 +1,64 @@
+
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03 (Y/M/D)
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//!
+//! SHORT-NAME: `block`, LONG-NAME: `BlockExecution`, RUNTIME: `Äž1 Local Testnet`
+//! WARMUPS: `10`, REPEAT: `100`
+//! WEIGHT-PATH: `./runtime/g1/src/weights/`
+//! WEIGHT-METRIC: `Average`, WEIGHT-MUL: `1.0`, WEIGHT-ADD: `0`
+
+// Executed Command:
+//   target/release/duniter
+//   benchmark
+//   overhead
+//   --chain=dev
+//   --wasm-execution=compiled
+//   --weight-path=./runtime/g1/src/weights/
+//   --warmup=10
+//   --repeat=100
+
+use sp_core::parameter_types;
+use sp_weights::{constants::WEIGHT_REF_TIME_PER_NANOS, Weight};
+
+parameter_types! {
+	/// Time to execute an empty block.
+	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
+	///
+	/// Stats nanoseconds:
+	///   Min, Max: 147_581, 238_445
+	///   Average:  155_146
+	///   Median:   151_315
+	///   Std-Dev:  15439.75
+	///
+	/// Percentiles nanoseconds:
+	///   99th: 235_717
+	///   95th: 167_204
+	///   75th: 152_784
+	pub const BlockExecutionWeight: Weight =
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(155_146), 0);
+}
+
+#[cfg(test)]
+mod test_weights {
+	use sp_weights::constants;
+
+	/// Checks that the weight exists and is sane.
+	// NOTE: If this test fails but you are sure that the generated values are fine,
+	// you can delete it.
+	#[test]
+	fn sane() {
+		let w = super::BlockExecutionWeight::get();
+
+		// At least 100 µs.
+		assert!(
+			w.ref_time() >= 100u64 * constants::WEIGHT_REF_TIME_PER_MICROS,
+			"Weight should be at least 100 µs."
+		);
+		// At most 50 ms.
+		assert!(
+			w.ref_time() <= 50u64 * constants::WEIGHT_REF_TIME_PER_MILLIS,
+			"Weight should be at most 50 ms."
+		);
+	}
+}
diff --git a/runtime/g1/src/weights/extrinsic_weights.rs b/runtime/g1/src/weights/extrinsic_weights.rs
new file mode 100644
index 000000000..647f7a814
--- /dev/null
+++ b/runtime/g1/src/weights/extrinsic_weights.rs
@@ -0,0 +1,64 @@
+
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03 (Y/M/D)
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//!
+//! SHORT-NAME: `extrinsic`, LONG-NAME: `ExtrinsicBase`, RUNTIME: `Äž1 Local Testnet`
+//! WARMUPS: `10`, REPEAT: `100`
+//! WEIGHT-PATH: `./runtime/g1/src/weights/`
+//! WEIGHT-METRIC: `Average`, WEIGHT-MUL: `1.0`, WEIGHT-ADD: `0`
+
+// Executed Command:
+//   target/release/duniter
+//   benchmark
+//   overhead
+//   --chain=dev
+//   --wasm-execution=compiled
+//   --weight-path=./runtime/g1/src/weights/
+//   --warmup=10
+//   --repeat=100
+
+use sp_core::parameter_types;
+use sp_weights::{constants::WEIGHT_REF_TIME_PER_NANOS, Weight};
+
+parameter_types! {
+	/// Time to execute a NO-OP extrinsic, for example `System::remark`.
+	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
+	///
+	/// Stats nanoseconds:
+	///   Min, Max: 96_925, 98_618
+	///   Average:  97_312
+	///   Median:   97_192
+	///   Std-Dev:  355.74
+	///
+	/// Percentiles nanoseconds:
+	///   99th: 98_487
+	///   95th: 98_202
+	///   75th: 97_332
+	pub const ExtrinsicBaseWeight: Weight =
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(97_312), 0);
+}
+
+#[cfg(test)]
+mod test_weights {
+	use sp_weights::constants;
+
+	/// Checks that the weight exists and is sane.
+	// NOTE: If this test fails but you are sure that the generated values are fine,
+	// you can delete it.
+	#[test]
+	fn sane() {
+		let w = super::ExtrinsicBaseWeight::get();
+
+		// At least 10 µs.
+		assert!(
+			w.ref_time() >= 10u64 * constants::WEIGHT_REF_TIME_PER_MICROS,
+			"Weight should be at least 10 µs."
+		);
+		// At most 1 ms.
+		assert!(
+			w.ref_time() <= constants::WEIGHT_REF_TIME_PER_MILLIS,
+			"Weight should be at most 1 ms."
+		);
+	}
+}
diff --git a/runtime/g1/src/weights/frame_benchmarking_baseline.rs b/runtime/g1/src/weights/frame_benchmarking_baseline.rs
new file mode 100644
index 000000000..083ca5330
--- /dev/null
+++ b/runtime/g1/src/weights/frame_benchmarking_baseline.rs
@@ -0,0 +1,105 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `frame_benchmarking::baseline`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `frame_benchmarking::baseline`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for WeightInfo<T> {
+	/// The range of component `i` is `[0, 1000000]`.
+	fn addition(_i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 80_000 picoseconds.
+		Weight::from_parts(104_010, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `i` is `[0, 1000000]`.
+	fn subtraction(_i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 81_000 picoseconds.
+		Weight::from_parts(107_208, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `i` is `[0, 1000000]`.
+	fn multiplication(_i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 81_000 picoseconds.
+		Weight::from_parts(108_233, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `i` is `[0, 1000000]`.
+	fn division(_i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 80_000 picoseconds.
+		Weight::from_parts(104_143, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn hashing() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 19_764_981_000 picoseconds.
+		Weight::from_parts(19_816_222_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `i` is `[0, 100]`.
+	fn sr25519_verification(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 83_000 picoseconds.
+		Weight::from_parts(27_202_423, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 11_806
+			.saturating_add(Weight::from_parts(32_090_608, 0).saturating_mul(i.into()))
+	}
+}
diff --git a/runtime/common/src/weights/frame_system.rs b/runtime/g1/src/weights/frame_system.rs
similarity index 80%
rename from runtime/common/src/weights/frame_system.rs
rename to runtime/g1/src/weights/frame_system.rs
index 898c8d46d..8bc82dcc2 100644
--- a/runtime/common/src/weights/frame_system.rs
+++ b/runtime/g1/src/weights/frame_system.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `frame_system`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/g1/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -52,22 +52,22 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_419_000 picoseconds.
-		Weight::from_parts(1_498_000, 0)
+		// Minimum execution time: 1_457_000 picoseconds.
+		Weight::from_parts(1_505_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 0
-			.saturating_add(Weight::from_parts(256, 0).saturating_mul(b.into()))
+			.saturating_add(Weight::from_parts(259, 0).saturating_mul(b.into()))
 	}
 	/// The range of component `b` is `[0, 3932160]`.
 	fn remark_with_event(b: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_020_000 picoseconds.
-		Weight::from_parts(4_121_000, 0)
+		// Minimum execution time: 3_990_000 picoseconds.
+		Weight::from_parts(4_220_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 0
-			.saturating_add(Weight::from_parts(1_075, 0).saturating_mul(b.into()))
+			// Standard Error: 1
+			.saturating_add(Weight::from_parts(1_054, 0).saturating_mul(b.into()))
 	}
 	/// Storage: `System::Digest` (r:1 w:1)
 	/// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
@@ -77,8 +77,8 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `1485`
-		// Minimum execution time: 2_492_000 picoseconds.
-		Weight::from_parts(2_799_000, 0)
+		// Minimum execution time: 2_307_000 picoseconds.
+		Weight::from_parts(2_632_000, 0)
 			.saturating_add(Weight::from_parts(0, 1485))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -91,8 +91,8 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `1485`
-		// Minimum execution time: 63_133_954_000 picoseconds.
-		Weight::from_parts(63_864_391_000, 0)
+		// Minimum execution time: 78_028_464_000 picoseconds.
+		Weight::from_parts(79_807_475_000, 0)
 			.saturating_add(Weight::from_parts(0, 1485))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -104,11 +104,11 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_449_000 picoseconds.
-		Weight::from_parts(1_579_000, 0)
+		// Minimum execution time: 1_444_000 picoseconds.
+		Weight::from_parts(1_537_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 559
-			.saturating_add(Weight::from_parts(556_169, 0).saturating_mul(i.into()))
+			// Standard Error: 689
+			.saturating_add(Weight::from_parts(591_176, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
@@ -118,11 +118,11 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_433_000 picoseconds.
-		Weight::from_parts(1_567_000, 0)
+		// Minimum execution time: 1_455_000 picoseconds.
+		Weight::from_parts(1_585_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 663
-			.saturating_add(Weight::from_parts(431_131, 0).saturating_mul(i.into()))
+			// Standard Error: 1_055
+			.saturating_add(Weight::from_parts(471_623, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
@@ -132,11 +132,11 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + p * (69 ±0)`
 		//  Estimated: `76 + p * (70 ±0)`
-		// Minimum execution time: 2_623_000 picoseconds.
-		Weight::from_parts(2_777_000, 0)
+		// Minimum execution time: 2_647_000 picoseconds.
+		Weight::from_parts(2_844_000, 0)
 			.saturating_add(Weight::from_parts(0, 76))
-			// Standard Error: 880
-			.saturating_add(Weight::from_parts(884_981, 0).saturating_mul(p.into()))
+			// Standard Error: 796
+			.saturating_add(Weight::from_parts(912_193, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(p.into())))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into())))
 			.saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into()))
@@ -147,8 +147,8 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 8_355_000 picoseconds.
-		Weight::from_parts(9_636_000, 0)
+		// Minimum execution time: 8_398_000 picoseconds.
+		Weight::from_parts(9_856_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -162,8 +162,8 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `22`
 		//  Estimated: `1518`
-		// Minimum execution time: 67_748_762_000 picoseconds.
-		Weight::from_parts(68_751_848_000, 0)
+		// Minimum execution time: 81_694_942_000 picoseconds.
+		Weight::from_parts(83_179_550_000, 0)
 			.saturating_add(Weight::from_parts(0, 1518))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/common/src/weights/pallet_authority_members.rs b/runtime/g1/src/weights/pallet_authority_members.rs
similarity index 88%
rename from runtime/common/src/weights/pallet_authority_members.rs
rename to runtime/g1/src/weights/pallet_authority_members.rs
index 55a182c4a..f47828c72 100644
--- a/runtime/common/src/weights/pallet_authority_members.rs
+++ b/runtime/g1/src/weights/pallet_authority_members.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_authority_members`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/g1/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -61,11 +61,11 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	fn go_offline() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `750`
-		//  Estimated: `4215`
-		// Minimum execution time: 19_493_000 picoseconds.
-		Weight::from_parts(20_030_000, 0)
-			.saturating_add(Weight::from_parts(0, 4215))
+		//  Measured:  `900`
+		//  Estimated: `4365`
+		// Minimum execution time: 18_224_000 picoseconds.
+		Weight::from_parts(19_396_000, 0)
+			.saturating_add(Weight::from_parts(0, 4365))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -87,11 +87,11 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	fn go_online() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1141`
-		//  Estimated: `4606`
-		// Minimum execution time: 25_348_000 picoseconds.
-		Weight::from_parts(26_404_000, 0)
-			.saturating_add(Weight::from_parts(0, 4606))
+		//  Measured:  `1356`
+		//  Estimated: `4821`
+		// Minimum execution time: 25_899_000 picoseconds.
+		Weight::from_parts(26_652_000, 0)
+			.saturating_add(Weight::from_parts(0, 4821))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -109,11 +109,11 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn set_session_keys() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1511`
-		//  Estimated: `12401`
-		// Minimum execution time: 32_606_000 picoseconds.
-		Weight::from_parts(34_374_000, 0)
-			.saturating_add(Weight::from_parts(0, 12401))
+		//  Measured:  `1805`
+		//  Estimated: `12695`
+		// Minimum execution time: 34_695_000 picoseconds.
+		Weight::from_parts(36_119_000, 0)
+			.saturating_add(Weight::from_parts(0, 12695))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -133,11 +133,11 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn remove_member() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `716`
-		//  Estimated: `4181`
-		// Minimum execution time: 31_528_000 picoseconds.
-		Weight::from_parts(32_724_000, 0)
-			.saturating_add(Weight::from_parts(0, 4181))
+		//  Measured:  `847`
+		//  Estimated: `4312`
+		// Minimum execution time: 33_106_000 picoseconds.
+		Weight::from_parts(34_600_000, 0)
+			.saturating_add(Weight::from_parts(0, 4312))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(10))
 	}
@@ -147,8 +147,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `199`
 		//  Estimated: `1684`
-		// Minimum execution time: 6_678_000 picoseconds.
-		Weight::from_parts(7_152_000, 0)
+		// Minimum execution time: 6_602_000 picoseconds.
+		Weight::from_parts(7_068_000, 0)
 			.saturating_add(Weight::from_parts(0, 1684))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/common/src/weights/pallet_babe.rs b/runtime/g1/src/weights/pallet_babe.rs
similarity index 100%
rename from runtime/common/src/weights/pallet_babe.rs
rename to runtime/g1/src/weights/pallet_babe.rs
diff --git a/runtime/common/src/weights/pallet_balances.rs b/runtime/g1/src/weights/pallet_balances.rs
similarity index 73%
rename from runtime/common/src/weights/pallet_balances.rs
rename to runtime/g1/src/weights/pallet_balances.rs
index 839334501..d3ef1bfae 100644
--- a/runtime/common/src/weights/pallet_balances.rs
+++ b/runtime/g1/src/weights/pallet_balances.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_balances`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/g1/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -53,8 +53,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `63`
 		//  Estimated: `6126`
-		// Minimum execution time: 41_565_000 picoseconds.
-		Weight::from_parts(42_593_000, 0)
+		// Minimum execution time: 45_437_000 picoseconds.
+		Weight::from_parts(47_312_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -65,8 +65,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `3558`
-		// Minimum execution time: 27_790_000 picoseconds.
-		Weight::from_parts(29_817_000, 0)
+		// Minimum execution time: 28_129_000 picoseconds.
+		Weight::from_parts(29_220_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -75,10 +75,10 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	fn force_set_balance_creating() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `100`
+		//  Measured:  `134`
 		//  Estimated: `3558`
-		// Minimum execution time: 9_821_000 picoseconds.
-		Weight::from_parts(10_305_000, 0)
+		// Minimum execution time: 9_086_000 picoseconds.
+		Weight::from_parts(9_762_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -87,10 +87,10 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	fn force_set_balance_killing() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `100`
+		//  Measured:  `134`
 		//  Estimated: `3558`
-		// Minimum execution time: 12_978_000 picoseconds.
-		Weight::from_parts(13_582_000, 0)
+		// Minimum execution time: 13_670_000 picoseconds.
+		Weight::from_parts(14_604_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -101,8 +101,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `126`
 		//  Estimated: `8694`
-		// Minimum execution time: 42_747_000 picoseconds.
-		Weight::from_parts(44_051_000, 0)
+		// Minimum execution time: 49_450_000 picoseconds.
+		Weight::from_parts(50_090_000, 0)
 			.saturating_add(Weight::from_parts(0, 8694))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -113,8 +113,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `3558`
-		// Minimum execution time: 34_844_000 picoseconds.
-		Weight::from_parts(35_230_000, 0)
+		// Minimum execution time: 36_827_000 picoseconds.
+		Weight::from_parts(38_004_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -123,10 +123,10 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	fn force_unreserve() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `100`
+		//  Measured:  `134`
 		//  Estimated: `3558`
-		// Minimum execution time: 11_831_000 picoseconds.
-		Weight::from_parts(12_229_000, 0)
+		// Minimum execution time: 11_942_000 picoseconds.
+		Weight::from_parts(12_481_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -135,8 +135,28 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_144_000 picoseconds.
-		Weight::from_parts(4_464_000, 0)
+		// Minimum execution time: 3_983_000 picoseconds.
+		Weight::from_parts(4_329_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn burn_allow_death() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `63`
+		//  Estimated: `3558`
+		// Minimum execution time: 32_292_000 picoseconds.
+		Weight::from_parts(32_918_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn burn_keep_alive() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 14_593_000 picoseconds.
+		Weight::from_parts(15_003_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/g1/src/weights/pallet_certification.rs b/runtime/g1/src/weights/pallet_certification.rs
new file mode 100644
index 000000000..273ec9110
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_certification.rs
@@ -0,0 +1,191 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_certification`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_certification`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T> {
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:2 w:2)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:2 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsRemovableOn` (r:1 w:1)
+	/// Proof: `Certification::CertsRemovableOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn add_cert() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `996`
+		//  Estimated: `6936`
+		// Minimum execution time: 31_893_000 picoseconds.
+		Weight::from_parts(32_848_000, 0)
+			.saturating_add(Weight::from_parts(0, 6936))
+			.saturating_add(T::DbWeight::get().reads(7))
+			.saturating_add(T::DbWeight::get().writes(4))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:1 w:1)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:2 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsRemovableOn` (r:1 w:1)
+	/// Proof: `Certification::CertsRemovableOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn renew_cert() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1019`
+		//  Estimated: `6959`
+		// Minimum execution time: 28_566_000 picoseconds.
+		Weight::from_parts(29_757_000, 0)
+			.saturating_add(Weight::from_parts(0, 6959))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:2 w:2)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::CounterForMembership` (r:1 w:1)
+	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:1 w:1)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:1)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn del_cert() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `2202`
+		//  Estimated: `15567`
+		// Minimum execution time: 103_234_000 picoseconds.
+		Weight::from_parts(108_000_000, 0)
+			.saturating_add(Weight::from_parts(0, 15567))
+			.saturating_add(T::DbWeight::get().reads(20))
+			.saturating_add(T::DbWeight::get().writes(22))
+	}
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:1000 w:1000)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:0)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[2, 1000]`.
+	fn remove_all_certs_received_by(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `554 + i * (35 ±0)`
+		//  Estimated: `4018 + i * (2511 ±0)`
+		// Minimum execution time: 23_100_000 picoseconds.
+		Weight::from_parts(23_651_000, 0)
+			.saturating_add(Weight::from_parts(0, 4018))
+			// Standard Error: 25_413
+			.saturating_add(Weight::from_parts(8_491_182, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().writes(1))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
+			.saturating_add(Weight::from_parts(0, 2511).saturating_mul(i.into()))
+	}
+	/// Storage: `Certification::CertsRemovableOn` (r:1 w:0)
+	/// Proof: `Certification::CertsRemovableOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn on_initialize() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `138`
+		//  Estimated: `3603`
+		// Minimum execution time: 2_364_000 picoseconds.
+		Weight::from_parts(2_670_000, 0)
+			.saturating_add(Weight::from_parts(0, 3603))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_remove_cert_noop() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `275`
+		//  Estimated: `3740`
+		// Minimum execution time: 3_367_000 picoseconds.
+		Weight::from_parts(3_667_000, 0)
+			.saturating_add(Weight::from_parts(0, 3740))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:2 w:2)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:0)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_remove_cert() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `711`
+		//  Estimated: `6651`
+		// Minimum execution time: 18_539_000 picoseconds.
+		Weight::from_parts(19_686_000, 0)
+			.saturating_add(Weight::from_parts(0, 6651))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+}
diff --git a/runtime/g1/src/weights/pallet_collective.rs b/runtime/g1/src/weights/pallet_collective.rs
new file mode 100644
index 000000000..257fda3db
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_collective.rs
@@ -0,0 +1,302 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_collective`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_collective`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Voting` (r:20 w:20)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Prime` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::Prime` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `m` is `[0, 100]`.
+	/// The range of component `n` is `[0, 100]`.
+	/// The range of component `p` is `[0, 20]`.
+	fn set_members(m: u32, _n: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0 + m * (672 ±0) + p * (3191 ±0)`
+		//  Estimated: `10019 + m * (416 ±5) + p * (4183 ±27)`
+		// Minimum execution time: 10_782_000 picoseconds.
+		Weight::from_parts(10_876_000, 0)
+			.saturating_add(Weight::from_parts(0, 10019))
+			// Standard Error: 8_959
+			.saturating_add(Weight::from_parts(688_596, 0).saturating_mul(m.into()))
+			// Standard Error: 44_289
+			.saturating_add(Weight::from_parts(5_970_127, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(p.into())))
+			.saturating_add(T::DbWeight::get().writes(2))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into())))
+			.saturating_add(Weight::from_parts(0, 416).saturating_mul(m.into()))
+			.saturating_add(Weight::from_parts(0, 4183).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `b` is `[2, 1024]`.
+	/// The range of component `m` is `[1, 100]`.
+	fn execute(b: u32, m: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `32 + m * (32 ±0)`
+		//  Estimated: `1518 + m * (32 ±0)`
+		// Minimum execution time: 9_204_000 picoseconds.
+		Weight::from_parts(8_677_118, 0)
+			.saturating_add(Weight::from_parts(0, 1518))
+			// Standard Error: 29
+			.saturating_add(Weight::from_parts(1_422, 0).saturating_mul(b.into()))
+			// Standard Error: 305
+			.saturating_add(Weight::from_parts(11_306, 0).saturating_mul(m.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
+	}
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `b` is `[2, 1024]`.
+	/// The range of component `m` is `[1, 100]`.
+	fn propose_execute(b: u32, m: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `32 + m * (32 ±0)`
+		//  Estimated: `3498 + m * (32 ±0)`
+		// Minimum execution time: 10_920_000 picoseconds.
+		Weight::from_parts(10_706_263, 0)
+			.saturating_add(Weight::from_parts(0, 3498))
+			// Standard Error: 30
+			.saturating_add(Weight::from_parts(1_200, 0).saturating_mul(b.into()))
+			// Standard Error: 319
+			.saturating_add(Weight::from_parts(18_402, 0).saturating_mul(m.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
+	}
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalCount` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::ProposalCount` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Voting` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `b` is `[2, 1024]`.
+	/// The range of component `m` is `[2, 100]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn propose_proposed(b: u32, m: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `24 + m * (32 ±0) + p * (55 ±0)`
+		//  Estimated: `3461 + m * (32 ±0) + p * (54 ±0)`
+		// Minimum execution time: 16_209_000 picoseconds.
+		Weight::from_parts(15_596_781, 0)
+			.saturating_add(Weight::from_parts(0, 3461))
+			// Standard Error: 57
+			.saturating_add(Weight::from_parts(2_110, 0).saturating_mul(b.into()))
+			// Standard Error: 604
+			.saturating_add(Weight::from_parts(14_247, 0).saturating_mul(m.into()))
+			// Standard Error: 3_020
+			.saturating_add(Weight::from_parts(253_504, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(4))
+			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
+			.saturating_add(Weight::from_parts(0, 54).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Voting` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `m` is `[5, 100]`.
+	fn vote(m: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `573 + m * (64 ±0)`
+		//  Estimated: `4037 + m * (64 ±0)`
+		// Minimum execution time: 14_200_000 picoseconds.
+		Weight::from_parts(15_042_566, 0)
+			.saturating_add(Weight::from_parts(0, 4037))
+			// Standard Error: 528
+			.saturating_add(Weight::from_parts(32_395, 0).saturating_mul(m.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+			.saturating_add(Weight::from_parts(0, 64).saturating_mul(m.into()))
+	}
+	/// Storage: `TechnicalCommittee::Voting` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `m` is `[4, 100]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn close_early_disapproved(m: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `117 + m * (64 ±0) + p * (55 ±0)`
+		//  Estimated: `3591 + m * (64 ±0) + p * (55 ±0)`
+		// Minimum execution time: 18_100_000 picoseconds.
+		Weight::from_parts(16_774_858, 0)
+			.saturating_add(Weight::from_parts(0, 3591))
+			// Standard Error: 510
+			.saturating_add(Weight::from_parts(29_208, 0).saturating_mul(m.into()))
+			// Standard Error: 2_518
+			.saturating_add(Weight::from_parts(228_790, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(Weight::from_parts(0, 64).saturating_mul(m.into()))
+			.saturating_add(Weight::from_parts(0, 55).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::Voting` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `b` is `[2, 1024]`.
+	/// The range of component `m` is `[4, 100]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn close_early_approved(b: u32, m: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `62 + b * (1 ±0) + m * (64 ±0) + p * (78 ±0)`
+		//  Estimated: `3619 + b * (1 ±0) + m * (63 ±0) + p * (74 ±0)`
+		// Minimum execution time: 25_796_000 picoseconds.
+		Weight::from_parts(25_017_596, 0)
+			.saturating_add(Weight::from_parts(0, 3619))
+			// Standard Error: 70
+			.saturating_add(Weight::from_parts(1_694, 0).saturating_mul(b.into()))
+			// Standard Error: 746
+			.saturating_add(Weight::from_parts(13_933, 0).saturating_mul(m.into()))
+			// Standard Error: 3_682
+			.saturating_add(Weight::from_parts(327_000, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(Weight::from_parts(0, 1).saturating_mul(b.into()))
+			.saturating_add(Weight::from_parts(0, 63).saturating_mul(m.into()))
+			.saturating_add(Weight::from_parts(0, 74).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::Voting` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Prime` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Prime` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `m` is `[4, 100]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn close_disapproved(m: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `137 + m * (64 ±0) + p * (55 ±0)`
+		//  Estimated: `3611 + m * (64 ±0) + p * (55 ±0)`
+		// Minimum execution time: 20_399_000 picoseconds.
+		Weight::from_parts(18_472_236, 0)
+			.saturating_add(Weight::from_parts(0, 3611))
+			// Standard Error: 518
+			.saturating_add(Weight::from_parts(34_095, 0).saturating_mul(m.into()))
+			// Standard Error: 2_559
+			.saturating_add(Weight::from_parts(244_676, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(Weight::from_parts(0, 64).saturating_mul(m.into()))
+			.saturating_add(Weight::from_parts(0, 55).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::Voting` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Prime` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Prime` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `b` is `[2, 1024]`.
+	/// The range of component `m` is `[4, 100]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn close_approved(b: u32, m: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `82 + b * (1 ±0) + m * (64 ±0) + p * (78 ±0)`
+		//  Estimated: `3639 + b * (1 ±0) + m * (63 ±0) + p * (74 ±0)`
+		// Minimum execution time: 27_466_000 picoseconds.
+		Weight::from_parts(26_231_791, 0)
+			.saturating_add(Weight::from_parts(0, 3639))
+			// Standard Error: 78
+			.saturating_add(Weight::from_parts(2_085, 0).saturating_mul(b.into()))
+			// Standard Error: 834
+			.saturating_add(Weight::from_parts(17_130, 0).saturating_mul(m.into()))
+			// Standard Error: 4_117
+			.saturating_add(Weight::from_parts(330_521, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(Weight::from_parts(0, 1).saturating_mul(b.into()))
+			.saturating_add(Weight::from_parts(0, 63).saturating_mul(m.into()))
+			.saturating_add(Weight::from_parts(0, 74).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Voting` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `p` is `[1, 20]`.
+	fn disapprove_proposal(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `189 + p * (32 ±0)`
+		//  Estimated: `1674 + p * (32 ±0)`
+		// Minimum execution time: 9_002_000 picoseconds.
+		Weight::from_parts(10_005_676, 0)
+			.saturating_add(Weight::from_parts(0, 1674))
+			// Standard Error: 1_795
+			.saturating_add(Weight::from_parts(184_544, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(Weight::from_parts(0, 32).saturating_mul(p.into()))
+	}
+}
diff --git a/runtime/g1/src/weights/pallet_distance.rs b/runtime/g1/src/weights/pallet_distance.rs
new file mode 100644
index 000000000..eff3a35cd
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_distance.rs
@@ -0,0 +1,252 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_distance`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_distance`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::PendingEvaluationRequest` (r:1 w:1)
+	/// Proof: `Distance::PendingEvaluationRequest` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:0)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:1 w:0)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::CurrentPoolIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPoolIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::EvaluationPool2` (r:1 w:1)
+	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Balances::Holds` (r:1 w:1)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
+	fn request_distance_evaluation() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1107`
+		//  Estimated: `4572`
+		// Minimum execution time: 53_927_000 picoseconds.
+		Weight::from_parts(56_000_000, 0)
+			.saturating_add(Weight::from_parts(0, 4572))
+			.saturating_add(T::DbWeight::get().reads(9))
+			.saturating_add(T::DbWeight::get().writes(4))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:2 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::PendingEvaluationRequest` (r:1 w:1)
+	/// Proof: `Distance::PendingEvaluationRequest` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:0)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:1 w:0)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::CurrentPoolIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPoolIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::EvaluationPool2` (r:1 w:1)
+	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Balances::Holds` (r:1 w:1)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
+	fn request_distance_evaluation_for() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1136`
+		//  Estimated: `7076`
+		// Minimum execution time: 55_791_000 picoseconds.
+		Weight::from_parts(56_931_000, 0)
+			.saturating_add(Weight::from_parts(0, 7076))
+			.saturating_add(T::DbWeight::get().reads(10))
+			.saturating_add(T::DbWeight::get().writes(4))
+	}
+	/// Storage: `Distance::DidUpdate` (r:1 w:1)
+	/// Proof: `Distance::DidUpdate` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Authorship::Author` (r:1 w:1)
+	/// Proof: `Authorship::Author` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	/// Storage: `System::Digest` (r:1 w:0)
+	/// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::Validators` (r:1 w:0)
+	/// Proof: `Session::Validators` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::CurrentPoolIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPoolIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::EvaluationPool0` (r:1 w:1)
+	/// Proof: `Distance::EvaluationPool0` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[1, 1300]`.
+	fn update_evaluation(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `401 + i * (10 ±0)`
+		//  Estimated: `1886 + i * (10 ±0)`
+		// Minimum execution time: 12_325_000 picoseconds.
+		Weight::from_parts(14_475_998, 0)
+			.saturating_add(Weight::from_parts(0, 1886))
+			// Standard Error: 78
+			.saturating_add(Weight::from_parts(104_795, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(Weight::from_parts(0, 10).saturating_mul(i.into()))
+	}
+	/// Storage: `Distance::CurrentPoolIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPoolIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::EvaluationPool0` (r:1 w:1)
+	/// Proof: `Distance::EvaluationPool0` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[1, 1300]`.
+	fn force_update_evaluation(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `139 + i * (10 ±0)`
+		//  Estimated: `1624 + i * (10 ±0)`
+		// Minimum execution time: 5_082_000 picoseconds.
+		Weight::from_parts(7_157_536, 0)
+			.saturating_add(Weight::from_parts(0, 1624))
+			// Standard Error: 87
+			.saturating_add(Weight::from_parts(102_817, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+			.saturating_add(Weight::from_parts(0, 10).saturating_mul(i.into()))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:2 w:2)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn force_valid_distance_status() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `539`
+		//  Estimated: `6479`
+		// Minimum execution time: 22_434_000 picoseconds.
+		Weight::from_parts(23_373_000, 0)
+			.saturating_add(Weight::from_parts(0, 6479))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	fn on_initialize_overhead() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 83_000 picoseconds.
+		Weight::from_parts(104_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `System::ParentHash` (r:1 w:0)
+	/// Proof: `System::ParentHash` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	/// Storage: `Distance::EvaluationPool2` (r:1 w:1)
+	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::PendingEvaluationRequest` (r:1 w:1)
+	/// Proof: `Distance::PendingEvaluationRequest` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Balances::Holds` (r:1 w:1)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
+	/// Storage: `Identity::Identities` (r:1 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:2 w:2)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::EvaluationBlock` (r:0 w:1)
+	/// Proof: `Distance::EvaluationBlock` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn do_evaluation_success() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `951`
+		//  Estimated: `6891`
+		// Minimum execution time: 53_118_000 picoseconds.
+		Weight::from_parts(55_294_000, 0)
+			.saturating_add(Weight::from_parts(0, 6891))
+			.saturating_add(T::DbWeight::get().reads(9))
+			.saturating_add(T::DbWeight::get().writes(8))
+	}
+	/// Storage: `System::ParentHash` (r:1 w:0)
+	/// Proof: `System::ParentHash` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	/// Storage: `Distance::EvaluationPool2` (r:1 w:1)
+	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::PendingEvaluationRequest` (r:1 w:1)
+	/// Proof: `Distance::PendingEvaluationRequest` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Balances::Holds` (r:1 w:1)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Distance::EvaluationBlock` (r:0 w:1)
+	/// Proof: `Distance::EvaluationBlock` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn do_evaluation_failure() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `412`
+		//  Estimated: `3877`
+		// Minimum execution time: 26_570_000 picoseconds.
+		Weight::from_parts(27_525_000, 0)
+			.saturating_add(Weight::from_parts(0, 3877))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
+	/// Storage: `System::ParentHash` (r:1 w:0)
+	/// Proof: `System::ParentHash` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	/// Storage: `Distance::EvaluationPool2` (r:1 w:0)
+	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::EvaluationBlock` (r:0 w:1)
+	/// Proof: `Distance::EvaluationBlock` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn do_evaluation_overhead() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `109`
+		//  Estimated: `1594`
+		// Minimum execution time: 2_460_000 picoseconds.
+		Weight::from_parts(2_720_000, 0)
+			.saturating_add(Weight::from_parts(0, 1594))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Distance::DidUpdate` (r:1 w:1)
+	/// Proof: `Distance::DidUpdate` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn on_finalize() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `133`
+		//  Estimated: `1618`
+		// Minimum execution time: 2_346_000 picoseconds.
+		Weight::from_parts(2_551_000, 0)
+			.saturating_add(Weight::from_parts(0, 1618))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_duniter_account.rs b/runtime/g1/src/weights/pallet_duniter_account.rs
similarity index 91%
rename from runtime/common/src/weights/pallet_duniter_account.rs
rename to runtime/g1/src/weights/pallet_duniter_account.rs
index d43be46c9..025ab5f04 100644
--- a/runtime/common/src/weights/pallet_duniter_account.rs
+++ b/runtime/g1/src/weights/pallet_duniter_account.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_duniter_account`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/g1/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -53,8 +53,8 @@ impl<T: frame_system::Config> pallet_duniter_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `3558`
-		// Minimum execution time: 2_950_000 picoseconds.
-		Weight::from_parts(3_302_000, 0)
+		// Minimum execution time: 3_157_000 picoseconds.
+		Weight::from_parts(3_507_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/common/src/weights/pallet_grandpa.rs b/runtime/g1/src/weights/pallet_grandpa.rs
similarity index 100%
rename from runtime/common/src/weights/pallet_grandpa.rs
rename to runtime/g1/src/weights/pallet_grandpa.rs
diff --git a/runtime/g1/src/weights/pallet_identity.rs b/runtime/g1/src/weights/pallet_identity.rs
new file mode 100644
index 000000000..ee655ae3d
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_identity.rs
@@ -0,0 +1,402 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_identity`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_identity`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
+	/// Storage: `Identity::IdentityIndexOf` (r:2 w:1)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:2 w:2)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:2 w:2)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Identity::NextIdtyIndex` (r:1 w:1)
+	/// Proof: `Identity::NextIdtyIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:1 w:1)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::CounterForIdentities` (r:1 w:1)
+	/// Proof: `Identity::CounterForIdentities` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Certification::CertsRemovableOn` (r:1 w:1)
+	/// Proof: `Certification::CertsRemovableOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	fn create_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1042`
+		//  Estimated: `6982`
+		// Minimum execution time: 58_728_000 picoseconds.
+		Weight::from_parts(61_212_000, 0)
+			.saturating_add(Weight::from_parts(0, 6982))
+			.saturating_add(T::DbWeight::get().reads(12))
+			.saturating_add(T::DbWeight::get().writes(12))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentitiesNames` (r:1 w:1)
+	/// Proof: `Identity::IdentitiesNames` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn confirm_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `784`
+		//  Estimated: `6724`
+		// Minimum execution time: 28_436_000 picoseconds.
+		Weight::from_parts(29_683_000, 0)
+			.saturating_add(Weight::from_parts(0, 6724))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(4))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:2 w:2)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::BlockHash` (r:1 w:0)
+	/// Proof: `System::BlockHash` (`max_values`: None, `max_size`: Some(44), added: 2519, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn change_owner_key() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `813`
+		//  Estimated: `6753`
+		// Minimum execution time: 71_160_000 picoseconds.
+		Weight::from_parts(73_401_000, 0)
+			.saturating_add(Weight::from_parts(0, 6753))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::BlockHash` (r:1 w:0)
+	/// Proof: `System::BlockHash` (`max_values`: None, `max_size`: Some(44), added: 2519, mode: `MaxEncodedLen`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	fn revoke_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `697`
+		//  Estimated: `6637`
+		// Minimum execution time: 62_618_000 picoseconds.
+		Weight::from_parts(63_735_000, 0)
+			.saturating_add(Weight::from_parts(0, 6637))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
+	/// Storage: `Identity::IdentitiesNames` (r:0 w:999)
+	/// Proof: `Identity::IdentitiesNames` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[2, 1000]`.
+	fn prune_item_identities_names(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_575_000 picoseconds.
+		Weight::from_parts(3_652_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 1_080
+			.saturating_add(Weight::from_parts(1_250_114, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().writes(1))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn fix_sufficients() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `104`
+		//  Estimated: `3558`
+		// Minimum execution time: 5_967_000 picoseconds.
+		Weight::from_parts(6_421_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::BlockHash` (r:1 w:0)
+	/// Proof: `System::BlockHash` (`max_values`: None, `max_size`: Some(44), added: 2519, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn link_account() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `403`
+		//  Estimated: `3868`
+		// Minimum execution time: 49_319_000 picoseconds.
+		Weight::from_parts(50_969_000, 0)
+			.saturating_add(Weight::from_parts(0, 3868))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn on_initialize() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 91_000 picoseconds.
+		Weight::from_parts(117_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_revoke_identity_noop() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `327`
+		//  Estimated: `3792`
+		// Minimum execution time: 3_577_000 picoseconds.
+		Weight::from_parts(3_722_000, 0)
+			.saturating_add(Weight::from_parts(0, 3792))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:1)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::CounterForMembership` (r:1 w:1)
+	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:1 w:1)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_revoke_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1873`
+		//  Estimated: `15238`
+		// Minimum execution time: 87_711_000 picoseconds.
+		Weight::from_parts(92_152_000, 0)
+			.saturating_add(Weight::from_parts(0, 15238))
+			.saturating_add(T::DbWeight::get().reads(18))
+			.saturating_add(T::DbWeight::get().writes(21))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_remove_identity_noop() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `327`
+		//  Estimated: `3792`
+		// Minimum execution time: 3_510_000 picoseconds.
+		Weight::from_parts(3_748_000, 0)
+			.saturating_add(Weight::from_parts(0, 3792))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::CounterForIdentities` (r:1 w:1)
+	/// Proof: `Identity::CounterForIdentities` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::CounterForMembership` (r:1 w:1)
+	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:1 w:1)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:6 w:6)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityIndexOf` (r:0 w:1)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_remove_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `2322`
+		//  Estimated: `18162`
+		// Minimum execution time: 132_099_000 picoseconds.
+		Weight::from_parts(139_825_000, 0)
+			.saturating_add(Weight::from_parts(0, 18162))
+			.saturating_add(T::DbWeight::get().reads(24))
+			.saturating_add(T::DbWeight::get().writes(30))
+	}
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::CounterForMembership` (r:1 w:1)
+	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:1 w:1)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:1)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:6 w:6)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_remove_identity_handler() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `2315`
+		//  Estimated: `18155`
+		// Minimum execution time: 126_646_000 picoseconds.
+		Weight::from_parts(130_869_000, 0)
+			.saturating_add(Weight::from_parts(0, 18155))
+			.saturating_add(T::DbWeight::get().reads(25))
+			.saturating_add(T::DbWeight::get().writes(28))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn membership_removed() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `407`
+		//  Estimated: `6347`
+		// Minimum execution time: 13_404_000 picoseconds.
+		Weight::from_parts(14_240_000, 0)
+			.saturating_add(Weight::from_parts(0, 6347))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `Identity::IdentityChangeSchedule` (r:1 w:0)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn prune_identities_noop() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `108`
+		//  Estimated: `3573`
+		// Minimum execution time: 1_974_000 picoseconds.
+		Weight::from_parts(2_102_000, 0)
+			.saturating_add(Weight::from_parts(0, 3573))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Identity::IdentityChangeSchedule` (r:1 w:1)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn prune_identities_none() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `325`
+		//  Estimated: `3790`
+		// Minimum execution time: 5_279_000 picoseconds.
+		Weight::from_parts(5_524_000, 0)
+			.saturating_add(Weight::from_parts(0, 3790))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Identity::IdentityChangeSchedule` (r:1 w:1)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::CounterForIdentities` (r:1 w:1)
+	/// Proof: `Identity::CounterForIdentities` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:0)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityIndexOf` (r:0 w:1)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	fn prune_identities_err() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `914`
+		//  Estimated: `4379`
+		// Minimum execution time: 30_157_000 picoseconds.
+		Weight::from_parts(31_401_000, 0)
+			.saturating_add(Weight::from_parts(0, 4379))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(7))
+	}
+}
diff --git a/runtime/g1/src/weights/pallet_im_online.rs b/runtime/g1/src/weights/pallet_im_online.rs
new file mode 100644
index 000000000..8efec6b5f
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_im_online.rs
@@ -0,0 +1,74 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_im_online`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_im_online`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_im_online::WeightInfo for WeightInfo<T> {
+	/// Storage: `Session::Validators` (r:1 w:0)
+	/// Proof: `Session::Validators` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::CurrentIndex` (r:1 w:0)
+	/// Proof: `Session::CurrentIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `ImOnline::Keys` (r:1 w:0)
+	/// Proof: `ImOnline::Keys` (`max_values`: Some(1), `max_size`: Some(32002), added: 32497, mode: `MaxEncodedLen`)
+	/// Storage: `ImOnline::ReceivedHeartbeats` (r:1 w:1)
+	/// Proof: `ImOnline::ReceivedHeartbeats` (`max_values`: None, `max_size`: Some(25), added: 2500, mode: `MaxEncodedLen`)
+	/// Storage: `ImOnline::AuthoredBlocks` (r:1 w:0)
+	/// Proof: `ImOnline::AuthoredBlocks` (`max_values`: None, `max_size`: Some(56), added: 2531, mode: `MaxEncodedLen`)
+	/// The range of component `k` is `[1, 1000]`.
+	fn validate_unsigned_and_then_heartbeat(k: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `525 + k * (32 ±0)`
+		//  Estimated: `33487 + k * (1761 ±0)`
+		// Minimum execution time: 51_876_000 picoseconds.
+		Weight::from_parts(60_173_627, 0)
+			.saturating_add(Weight::from_parts(0, 33487))
+			// Standard Error: 647
+			.saturating_add(Weight::from_parts(52_878, 0).saturating_mul(k.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(1))
+			.saturating_add(Weight::from_parts(0, 1761).saturating_mul(k.into()))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_membership.rs b/runtime/g1/src/weights/pallet_membership.rs
similarity index 85%
rename from runtime/common/src/weights/pallet_membership.rs
rename to runtime/g1/src/weights/pallet_membership.rs
index e73cd744d..116b2f879 100644
--- a/runtime/common/src/weights/pallet_membership.rs
+++ b/runtime/g1/src/weights/pallet_membership.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_membership`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/g1/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -51,8 +51,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 81_000 picoseconds.
-		Weight::from_parts(102_000, 0)
+		// Minimum execution time: 88_000 picoseconds.
+		Weight::from_parts(114_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Membership::MembershipsExpireOn` (r:2 w:2)
@@ -63,11 +63,11 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
 	/// Storage: `Identity::Identities` (r:3 w:3)
 	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
-	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:1)
 	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
 	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
-	/// Storage: `SmithMembers::Smiths` (r:3 w:3)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
 	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `AuthorityMembers::Members` (r:3 w:3)
 	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -86,17 +86,17 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 	/// The range of component `i` is `[0, 3]`.
 	fn expire_memberships(i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `138 + i * (804 ±0)`
-		//  Estimated: `9744 + i * (2687 ±0)`
-		// Minimum execution time: 4_020_000 picoseconds.
-		Weight::from_parts(10_625_923, 0)
-			.saturating_add(Weight::from_parts(0, 9744))
-			// Standard Error: 438_932
-			.saturating_add(Weight::from_parts(59_569_449, 0).saturating_mul(i.into()))
+		//  Measured:  `139 + i * (964 ±0)`
+		//  Estimated: `15002 + i * (2695 ±1)`
+		// Minimum execution time: 3_695_000 picoseconds.
+		Weight::from_parts(10_190_341, 0)
+			.saturating_add(Weight::from_parts(0, 15002))
+			// Standard Error: 430_998
+			.saturating_add(Weight::from_parts(67_919_443, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().reads((10_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().reads((11_u64).saturating_mul(i.into())))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(T::DbWeight::get().writes((14_u64).saturating_mul(i.into())))
-			.saturating_add(Weight::from_parts(0, 2687).saturating_mul(i.into()))
+			.saturating_add(Weight::from_parts(0, 2695).saturating_mul(i.into()))
 	}
 }
diff --git a/runtime/g1/src/weights/pallet_multisig.rs b/runtime/g1/src/weights/pallet_multisig.rs
new file mode 100644
index 000000000..f93fa001c
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_multisig.rs
@@ -0,0 +1,162 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_multisig`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_multisig`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
+	/// The range of component `z` is `[0, 10000]`.
+	fn as_multi_threshold_1(z: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 5_155_000 picoseconds.
+		Weight::from_parts(5_485_952, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(325, 0).saturating_mul(z.into()))
+	}
+	/// Storage: `Multisig::Multisigs` (r:1 w:1)
+	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[2, 10]`.
+	/// The range of component `z` is `[0, 10000]`.
+	fn as_multi_create(s: u32, z: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `125 + s * (5 ±0)`
+		//  Estimated: `3922`
+		// Minimum execution time: 23_813_000 picoseconds.
+		Weight::from_parts(24_230_744, 0)
+			.saturating_add(Weight::from_parts(0, 3922))
+			// Standard Error: 8_091
+			.saturating_add(Weight::from_parts(119_324, 0).saturating_mul(s.into()))
+			// Standard Error: 6
+			.saturating_add(Weight::from_parts(1_109, 0).saturating_mul(z.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Multisig::Multisigs` (r:1 w:1)
+	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[3, 10]`.
+	/// The range of component `z` is `[0, 10000]`.
+	fn as_multi_approve(s: u32, z: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `240`
+		//  Estimated: `3922`
+		// Minimum execution time: 13_586_000 picoseconds.
+		Weight::from_parts(13_165_299, 0)
+			.saturating_add(Weight::from_parts(0, 3922))
+			// Standard Error: 5_423
+			.saturating_add(Weight::from_parts(107_138, 0).saturating_mul(s.into()))
+			// Standard Error: 4
+			.saturating_add(Weight::from_parts(1_070, 0).saturating_mul(z.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Multisig::Multisigs` (r:1 w:1)
+	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[2, 10]`.
+	/// The range of component `z` is `[0, 10000]`.
+	fn as_multi_complete(s: u32, z: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `259 + s * (37 ±0)`
+		//  Estimated: `3922`
+		// Minimum execution time: 26_067_000 picoseconds.
+		Weight::from_parts(26_204_511, 0)
+			.saturating_add(Weight::from_parts(0, 3922))
+			// Standard Error: 7_217
+			.saturating_add(Weight::from_parts(160_307, 0).saturating_mul(s.into()))
+			// Standard Error: 6
+			.saturating_add(Weight::from_parts(1_063, 0).saturating_mul(z.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Multisig::Multisigs` (r:1 w:1)
+	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[2, 10]`.
+	fn approve_as_multi_create(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `130 + s * (5 ±0)`
+		//  Estimated: `3922`
+		// Minimum execution time: 22_083_000 picoseconds.
+		Weight::from_parts(23_495_636, 0)
+			.saturating_add(Weight::from_parts(0, 3922))
+			// Standard Error: 6_673
+			.saturating_add(Weight::from_parts(136_365, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Multisig::Multisigs` (r:1 w:1)
+	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[2, 10]`.
+	fn approve_as_multi_approve(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `240`
+		//  Estimated: `3922`
+		// Minimum execution time: 11_278_000 picoseconds.
+		Weight::from_parts(12_026_318, 0)
+			.saturating_add(Weight::from_parts(0, 3922))
+			// Standard Error: 3_904
+			.saturating_add(Weight::from_parts(142_022, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Multisig::Multisigs` (r:1 w:1)
+	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[2, 10]`.
+	fn cancel_as_multi(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `328 + s * (5 ±0)`
+		//  Estimated: `3922`
+		// Minimum execution time: 21_863_000 picoseconds.
+		Weight::from_parts(22_741_957, 0)
+			.saturating_add(Weight::from_parts(0, 3922))
+			// Standard Error: 4_855
+			.saturating_add(Weight::from_parts(171_789, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_oneshot_account.rs b/runtime/g1/src/weights/pallet_oneshot_account.rs
similarity index 90%
rename from runtime/common/src/weights/pallet_oneshot_account.rs
rename to runtime/g1/src/weights/pallet_oneshot_account.rs
index 351111163..343f36f71 100644
--- a/runtime/common/src/weights/pallet_oneshot_account.rs
+++ b/runtime/g1/src/weights/pallet_oneshot_account.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_oneshot_account`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/g1/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -53,8 +53,8 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `42`
 		//  Estimated: `3507`
-		// Minimum execution time: 14_969_000 picoseconds.
-		Weight::from_parts(15_431_000, 0)
+		// Minimum execution time: 18_682_000 picoseconds.
+		Weight::from_parts(19_295_000, 0)
 			.saturating_add(Weight::from_parts(0, 3507))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -69,8 +69,8 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `241`
 		//  Estimated: `3706`
-		// Minimum execution time: 21_074_000 picoseconds.
-		Weight::from_parts(21_985_000, 0)
+		// Minimum execution time: 26_231_000 picoseconds.
+		Weight::from_parts(27_208_000, 0)
 			.saturating_add(Weight::from_parts(0, 3706))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -85,8 +85,8 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `301`
 		//  Estimated: `6126`
-		// Minimum execution time: 29_007_000 picoseconds.
-		Weight::from_parts(30_502_000, 0)
+		// Minimum execution time: 40_327_000 picoseconds.
+		Weight::from_parts(40_998_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/g1/src/weights/pallet_preimage.rs b/runtime/g1/src/weights/pallet_preimage.rs
new file mode 100644
index 000000000..6cf5545a3
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_preimage.rs
@@ -0,0 +1,259 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_preimage`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_preimage`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::PreimageFor` (r:0 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[0, 4194304]`.
+	fn note_preimage(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `42`
+		//  Estimated: `3548`
+		// Minimum execution time: 10_676_000 picoseconds.
+		Weight::from_parts(11_086_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			// Standard Error: 1
+			.saturating_add(Weight::from_parts(1_335, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::PreimageFor` (r:0 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[0, 4194304]`.
+	fn note_requested_preimage(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `106`
+		//  Estimated: `3548`
+		// Minimum execution time: 12_997_000 picoseconds.
+		Weight::from_parts(13_623_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(1_337, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::PreimageFor` (r:0 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[0, 4194304]`.
+	fn note_no_deposit_preimage(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `106`
+		//  Estimated: `3548`
+		// Minimum execution time: 11_516_000 picoseconds.
+		Weight::from_parts(11_624_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(1_431, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::PreimageFor` (r:0 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	fn unnote_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `172`
+		//  Estimated: `3548`
+		// Minimum execution time: 23_685_000 picoseconds.
+		Weight::from_parts(25_479_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::PreimageFor` (r:0 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	fn unnote_no_deposit_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `144`
+		//  Estimated: `3548`
+		// Minimum execution time: 24_726_000 picoseconds.
+		Weight::from_parts(26_497_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	fn request_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `172`
+		//  Estimated: `3548`
+		// Minimum execution time: 20_778_000 picoseconds.
+		Weight::from_parts(23_500_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	fn request_no_deposit_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `144`
+		//  Estimated: `3548`
+		// Minimum execution time: 13_459_000 picoseconds.
+		Weight::from_parts(15_554_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	fn request_unnoted_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `42`
+		//  Estimated: `3548`
+		// Minimum execution time: 11_596_000 picoseconds.
+		Weight::from_parts(13_533_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	fn request_requested_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `106`
+		//  Estimated: `3548`
+		// Minimum execution time: 7_302_000 picoseconds.
+		Weight::from_parts(8_405_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::PreimageFor` (r:0 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	fn unrequest_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `144`
+		//  Estimated: `3548`
+		// Minimum execution time: 22_062_000 picoseconds.
+		Weight::from_parts(23_827_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	fn unrequest_unnoted_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `106`
+		//  Estimated: `3548`
+		// Minimum execution time: 7_861_000 picoseconds.
+		Weight::from_parts(8_819_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	fn unrequest_multi_referenced_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `106`
+		//  Estimated: `3548`
+		// Minimum execution time: 7_332_000 picoseconds.
+		Weight::from_parts(8_082_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1023 w:1023)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1023 w:1023)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:0 w:1023)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// The range of component `n` is `[1, 1024]`.
+	fn ensure_updated(n: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0 + n * (179 ±0)`
+		//  Estimated: `990 + n * (2568 ±0)`
+		// Minimum execution time: 16_333_000 picoseconds.
+		Weight::from_parts(16_668_000, 0)
+			.saturating_add(Weight::from_parts(0, 990))
+			// Standard Error: 20_306
+			.saturating_add(Weight::from_parts(13_893_835, 0).saturating_mul(n.into()))
+			.saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(n.into())))
+			.saturating_add(T::DbWeight::get().writes((3_u64).saturating_mul(n.into())))
+			.saturating_add(Weight::from_parts(0, 2568).saturating_mul(n.into()))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_provide_randomness.rs b/runtime/g1/src/weights/pallet_provide_randomness.rs
similarity index 92%
rename from runtime/common/src/weights/pallet_provide_randomness.rs
rename to runtime/g1/src/weights/pallet_provide_randomness.rs
index 70522dc8c..ec75342ff 100644
--- a/runtime/common/src/weights/pallet_provide_randomness.rs
+++ b/runtime/g1/src/weights/pallet_provide_randomness.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_provide_randomness`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/g1/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -65,8 +65,8 @@ impl<T: frame_system::Config> pallet_provide_randomness::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `298`
 		//  Estimated: `3763`
-		// Minimum execution time: 31_329_000 picoseconds.
-		Weight::from_parts(32_906_000, 0)
+		// Minimum execution time: 37_771_000 picoseconds.
+		Weight::from_parts(39_556_000, 0)
 			.saturating_add(Weight::from_parts(0, 3763))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(5))
@@ -86,11 +86,11 @@ impl<T: frame_system::Config> pallet_provide_randomness::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `341 + i * (59 ±0)`
 		//  Estimated: `1827 + i * (2535 ±0)`
-		// Minimum execution time: 14_478_000 picoseconds.
-		Weight::from_parts(13_079_242, 0)
+		// Minimum execution time: 14_381_000 picoseconds.
+		Weight::from_parts(12_369_162, 0)
 			.saturating_add(Weight::from_parts(0, 1827))
-			// Standard Error: 3_642
-			.saturating_add(Weight::from_parts(4_859_336, 0).saturating_mul(i.into()))
+			// Standard Error: 5_293
+			.saturating_add(Weight::from_parts(5_086_106, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -118,11 +118,11 @@ impl<T: frame_system::Config> pallet_provide_randomness::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `351 + i * (59 ±0)`
 		//  Estimated: `3817 + i * (2535 ±0)`
-		// Minimum execution time: 16_054_000 picoseconds.
-		Weight::from_parts(14_770_472, 0)
+		// Minimum execution time: 15_953_000 picoseconds.
+		Weight::from_parts(13_707_552, 0)
 			.saturating_add(Weight::from_parts(0, 3817))
-			// Standard Error: 4_259
-			.saturating_add(Weight::from_parts(5_131_103, 0).saturating_mul(i.into()))
+			// Standard Error: 7_079
+			.saturating_add(Weight::from_parts(5_474_131, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/g1/src/weights/pallet_proxy.rs b/runtime/g1/src/weights/pallet_proxy.rs
new file mode 100644
index 000000000..f84109d11
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_proxy.rs
@@ -0,0 +1,221 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_proxy`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_proxy`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
+	/// Storage: `Proxy::Proxies` (r:1 w:0)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// The range of component `p` is `[1, 31]`.
+	fn proxy(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `157 + p * (37 ±0)`
+		//  Estimated: `4698`
+		// Minimum execution time: 11_002_000 picoseconds.
+		Weight::from_parts(12_031_853, 0)
+			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 1_651
+			.saturating_add(Weight::from_parts(18_285, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:0)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2225), added: 4700, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `a` is `[0, 31]`.
+	/// The range of component `p` is `[1, 31]`.
+	fn proxy_announced(a: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `399 + a * (68 ±0) + p * (37 ±0)`
+		//  Estimated: `5690`
+		// Minimum execution time: 27_439_000 picoseconds.
+		Weight::from_parts(27_773_308, 0)
+			.saturating_add(Weight::from_parts(0, 5690))
+			// Standard Error: 2_146
+			.saturating_add(Weight::from_parts(149_227, 0).saturating_mul(a.into()))
+			// Standard Error: 2_217
+			.saturating_add(Weight::from_parts(30_873, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2225), added: 4700, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `a` is `[0, 31]`.
+	/// The range of component `p` is `[1, 31]`.
+	fn remove_announcement(a: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `322 + a * (68 ±0)`
+		//  Estimated: `5690`
+		// Minimum execution time: 18_571_000 picoseconds.
+		Weight::from_parts(19_291_774, 0)
+			.saturating_add(Weight::from_parts(0, 5690))
+			// Standard Error: 1_755
+			.saturating_add(Weight::from_parts(143_748, 0).saturating_mul(a.into()))
+			// Standard Error: 1_814
+			.saturating_add(Weight::from_parts(11_858, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2225), added: 4700, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `a` is `[0, 31]`.
+	/// The range of component `p` is `[1, 31]`.
+	fn reject_announcement(a: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `322 + a * (68 ±0)`
+		//  Estimated: `5690`
+		// Minimum execution time: 18_688_000 picoseconds.
+		Weight::from_parts(19_533_797, 0)
+			.saturating_add(Weight::from_parts(0, 5690))
+			// Standard Error: 1_736
+			.saturating_add(Weight::from_parts(135_837, 0).saturating_mul(a.into()))
+			// Standard Error: 1_794
+			.saturating_add(Weight::from_parts(3_819, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:0)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2225), added: 4700, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `a` is `[0, 31]`.
+	/// The range of component `p` is `[1, 31]`.
+	fn announce(a: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `331 + a * (68 ±0) + p * (37 ±0)`
+		//  Estimated: `5690`
+		// Minimum execution time: 25_119_000 picoseconds.
+		Weight::from_parts(25_204_142, 0)
+			.saturating_add(Weight::from_parts(0, 5690))
+			// Standard Error: 2_238
+			.saturating_add(Weight::from_parts(126_110, 0).saturating_mul(a.into()))
+			// Standard Error: 2_312
+			.saturating_add(Weight::from_parts(38_057, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// The range of component `p` is `[1, 31]`.
+	fn add_proxy(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `157 + p * (37 ±0)`
+		//  Estimated: `4698`
+		// Minimum execution time: 17_761_000 picoseconds.
+		Weight::from_parts(18_800_004, 0)
+			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 2_081
+			.saturating_add(Weight::from_parts(32_130, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// The range of component `p` is `[1, 31]`.
+	fn remove_proxy(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `157 + p * (37 ±0)`
+		//  Estimated: `4698`
+		// Minimum execution time: 17_686_000 picoseconds.
+		Weight::from_parts(19_047_038, 0)
+			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 2_485
+			.saturating_add(Weight::from_parts(31_959, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// The range of component `p` is `[1, 31]`.
+	fn remove_proxies(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `157 + p * (37 ±0)`
+		//  Estimated: `4698`
+		// Minimum execution time: 15_878_000 picoseconds.
+		Weight::from_parts(17_619_494, 0)
+			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 2_540
+			.saturating_add(Weight::from_parts(13_481, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// The range of component `p` is `[1, 31]`.
+	fn create_pure(_p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `177`
+		//  Estimated: `4698`
+		// Minimum execution time: 18_654_000 picoseconds.
+		Weight::from_parts(20_266_315, 0)
+			.saturating_add(Weight::from_parts(0, 4698))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// The range of component `p` is `[0, 30]`.
+	fn kill_pure(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `194 + p * (37 ±0)`
+		//  Estimated: `4698`
+		// Minimum execution time: 16_716_000 picoseconds.
+		Weight::from_parts(17_907_928, 0)
+			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 2_271
+			.saturating_add(Weight::from_parts(27_854, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_quota.rs b/runtime/g1/src/weights/pallet_quota.rs
similarity index 100%
rename from runtime/common/src/weights/pallet_quota.rs
rename to runtime/g1/src/weights/pallet_quota.rs
diff --git a/runtime/common/src/weights/pallet_scheduler.rs b/runtime/g1/src/weights/pallet_scheduler.rs
similarity index 81%
rename from runtime/common/src/weights/pallet_scheduler.rs
rename to runtime/g1/src/weights/pallet_scheduler.rs
index 59e5bbdcb..5190d4a6e 100644
--- a/runtime/common/src/weights/pallet_scheduler.rs
+++ b/runtime/g1/src/weights/pallet_scheduler.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_scheduler`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/g1/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -53,8 +53,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `30`
 		//  Estimated: `1489`
-		// Minimum execution time: 2_247_000 picoseconds.
-		Weight::from_parts(2_368_000, 0)
+		// Minimum execution time: 2_190_000 picoseconds.
+		Weight::from_parts(2_384_000, 0)
 			.saturating_add(Weight::from_parts(0, 1489))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -66,11 +66,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 2_623_000 picoseconds.
-		Weight::from_parts(5_323_281, 0)
+		// Minimum execution time: 2_659_000 picoseconds.
+		Weight::from_parts(5_193_856, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_521
-			.saturating_add(Weight::from_parts(261_061, 0).saturating_mul(s.into()))
+			// Standard Error: 1_561
+			.saturating_add(Weight::from_parts(308_555, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -78,12 +78,12 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_057_000 picoseconds.
-		Weight::from_parts(2_231_000, 0)
+		// Minimum execution time: 2_131_000 picoseconds.
+		Weight::from_parts(2_348_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Preimage::PreimageFor` (r:1 w:1)
-	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `Measured`)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
 	/// Storage: `Preimage::StatusFor` (r:1 w:0)
 	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
 	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
@@ -92,15 +92,14 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	fn service_task_fetched(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `179 + s * (1 ±0)`
-		//  Estimated: `3644 + s * (1 ±0)`
-		// Minimum execution time: 13_676_000 picoseconds.
-		Weight::from_parts(13_904_000, 0)
-			.saturating_add(Weight::from_parts(0, 3644))
+		//  Estimated: `4197809`
+		// Minimum execution time: 13_678_000 picoseconds.
+		Weight::from_parts(14_180_000, 0)
+			.saturating_add(Weight::from_parts(0, 4197809))
 			// Standard Error: 2
-			.saturating_add(Weight::from_parts(864, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(878, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
-			.saturating_add(Weight::from_parts(0, 1).saturating_mul(s.into()))
 	}
 	/// Storage: `Scheduler::Lookup` (r:0 w:1)
 	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
@@ -108,8 +107,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_190_000 picoseconds.
-		Weight::from_parts(3_399_000, 0)
+		// Minimum execution time: 3_114_000 picoseconds.
+		Weight::from_parts(3_549_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -117,24 +116,24 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_037_000 picoseconds.
-		Weight::from_parts(2_185_000, 0)
+		// Minimum execution time: 2_042_000 picoseconds.
+		Weight::from_parts(2_286_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	fn execute_dispatch_signed() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_451_000 picoseconds.
-		Weight::from_parts(1_527_000, 0)
+		// Minimum execution time: 1_397_000 picoseconds.
+		Weight::from_parts(1_565_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	fn execute_dispatch_unsigned() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_380_000 picoseconds.
-		Weight::from_parts(1_528_000, 0)
+		// Minimum execution time: 1_434_000 picoseconds.
+		Weight::from_parts(1_530_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Scheduler::Agenda` (r:1 w:1)
@@ -144,11 +143,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 7_345_000 picoseconds.
-		Weight::from_parts(10_149_347, 0)
+		// Minimum execution time: 7_504_000 picoseconds.
+		Weight::from_parts(10_215_860, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_470
-			.saturating_add(Weight::from_parts(271_802, 0).saturating_mul(s.into()))
+			// Standard Error: 1_715
+			.saturating_add(Weight::from_parts(321_199, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -163,11 +162,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 11_065_000 picoseconds.
-		Weight::from_parts(12_201_393, 0)
+		// Minimum execution time: 12_098_000 picoseconds.
+		Weight::from_parts(12_490_588, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_220
-			.saturating_add(Weight::from_parts(421_428, 0).saturating_mul(s.into()))
+			// Standard Error: 2_108
+			.saturating_add(Weight::from_parts(511_825, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -180,11 +179,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `254 + s * (185 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 9_738_000 picoseconds.
-		Weight::from_parts(13_973_802, 0)
+		// Minimum execution time: 9_980_000 picoseconds.
+		Weight::from_parts(14_083_704, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 3_249
-			.saturating_add(Weight::from_parts(309_352, 0).saturating_mul(s.into()))
+			// Standard Error: 3_170
+			.saturating_add(Weight::from_parts(355_932, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -199,11 +198,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `280 + s * (185 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 13_718_000 picoseconds.
-		Weight::from_parts(15_856_702, 0)
+		// Minimum execution time: 13_608_000 picoseconds.
+		Weight::from_parts(15_630_971, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			// Standard Error: 2_313
-			.saturating_add(Weight::from_parts(428_752, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(528_831, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -216,11 +215,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `117`
 		//  Estimated: `13928`
-		// Minimum execution time: 6_953_000 picoseconds.
-		Weight::from_parts(7_530_478, 0)
+		// Minimum execution time: 7_224_000 picoseconds.
+		Weight::from_parts(7_826_321, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 563
-			.saturating_add(Weight::from_parts(20_586, 0).saturating_mul(s.into()))
+			// Standard Error: 923
+			.saturating_add(Weight::from_parts(22_297, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -232,8 +231,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `8927`
 		//  Estimated: `13928`
-		// Minimum execution time: 18_248_000 picoseconds.
-		Weight::from_parts(18_882_000, 0)
+		// Minimum execution time: 21_125_000 picoseconds.
+		Weight::from_parts(22_423_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -248,8 +247,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `9605`
 		//  Estimated: `13928`
-		// Minimum execution time: 23_731_000 picoseconds.
-		Weight::from_parts(24_949_000, 0)
+		// Minimum execution time: 25_651_000 picoseconds.
+		Weight::from_parts(26_459_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -262,8 +261,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `8939`
 		//  Estimated: `13928`
-		// Minimum execution time: 18_270_000 picoseconds.
-		Weight::from_parts(18_997_000, 0)
+		// Minimum execution time: 19_189_000 picoseconds.
+		Weight::from_parts(20_456_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -278,8 +277,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `9617`
 		//  Estimated: `13928`
-		// Minimum execution time: 23_185_000 picoseconds.
-		Weight::from_parts(23_971_000, 0)
+		// Minimum execution time: 25_067_000 picoseconds.
+		Weight::from_parts(26_156_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/common/src/weights/pallet_session.rs b/runtime/g1/src/weights/pallet_session.rs
similarity index 83%
rename from runtime/common/src/weights/pallet_session.rs
rename to runtime/g1/src/weights/pallet_session.rs
index 5bbff4c24..6cdd55692 100644
--- a/runtime/common/src/weights/pallet_session.rs
+++ b/runtime/g1/src/weights/pallet_session.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_session`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/g1/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -53,11 +53,11 @@ impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
 	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn set_keys() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `723`
-		//  Estimated: `11613`
-		// Minimum execution time: 22_533_000 picoseconds.
-		Weight::from_parts(23_536_000, 0)
-			.saturating_add(Weight::from_parts(0, 11613))
+		//  Measured:  `810`
+		//  Estimated: `11700`
+		// Minimum execution time: 22_659_000 picoseconds.
+		Weight::from_parts(24_222_000, 0)
+			.saturating_add(Weight::from_parts(0, 11700))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(5))
 	}
@@ -67,11 +67,11 @@ impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
 	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn purge_keys() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `412`
-		//  Estimated: `3877`
-		// Minimum execution time: 13_783_000 picoseconds.
-		Weight::from_parts(14_376_000, 0)
-			.saturating_add(Weight::from_parts(0, 3877))
+		//  Measured:  `477`
+		//  Estimated: `3942`
+		// Minimum execution time: 13_901_000 picoseconds.
+		Weight::from_parts(14_563_000, 0)
+			.saturating_add(Weight::from_parts(0, 3942))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(5))
 	}
diff --git a/runtime/g1/src/weights/pallet_smith_members.rs b/runtime/g1/src/weights/pallet_smith_members.rs
new file mode 100644
index 000000000..b8a2f1970
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_smith_members.rs
@@ -0,0 +1,139 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_smith_members`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_smith_members`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_smith_members::WeightInfo for WeightInfo<T> {
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:2 w:1)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:0)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::CurrentSession` (r:1 w:0)
+	/// Proof: `SmithMembers::CurrentSession` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::ExpiresOn` (r:1 w:1)
+	/// Proof: `SmithMembers::ExpiresOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn invite_smith() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `801`
+		//  Estimated: `6741`
+		// Minimum execution time: 24_291_000 picoseconds.
+		Weight::from_parts(25_017_000, 0)
+			.saturating_add(Weight::from_parts(0, 6741))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:1 w:1)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn accept_invitation() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `566`
+		//  Estimated: `4031`
+		// Minimum execution time: 13_809_000 picoseconds.
+		Weight::from_parts(14_503_000, 0)
+			.saturating_add(Weight::from_parts(0, 4031))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:2 w:2)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::CurrentSession` (r:1 w:0)
+	/// Proof: `SmithMembers::CurrentSession` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::ExpiresOn` (r:1 w:1)
+	/// Proof: `SmithMembers::ExpiresOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn certify_smith() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `611`
+		//  Estimated: `6551`
+		// Minimum execution time: 21_678_000 picoseconds.
+		Weight::from_parts(22_569_000, 0)
+			.saturating_add(Weight::from_parts(0, 6551))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn on_removed_wot_member() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1204`
+		//  Estimated: `14569`
+		// Minimum execution time: 57_772_000 picoseconds.
+		Weight::from_parts(59_906_000, 0)
+			.saturating_add(Weight::from_parts(0, 14569))
+			.saturating_add(T::DbWeight::get().reads(11))
+			.saturating_add(T::DbWeight::get().writes(15))
+	}
+	/// Storage: `SmithMembers::Smiths` (r:1 w:0)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn on_removed_wot_member_empty() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `253`
+		//  Estimated: `3718`
+		// Minimum execution time: 2_797_000 picoseconds.
+		Weight::from_parts(2_985_000, 0)
+			.saturating_add(Weight::from_parts(0, 3718))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_sudo.rs b/runtime/g1/src/weights/pallet_sudo.rs
similarity index 87%
rename from runtime/common/src/weights/pallet_sudo.rs
rename to runtime/g1/src/weights/pallet_sudo.rs
index c51df6c48..99280a8f4 100644
--- a/runtime/common/src/weights/pallet_sudo.rs
+++ b/runtime/g1/src/weights/pallet_sudo.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_sudo`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/g1/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -53,8 +53,8 @@ impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `165`
 		//  Estimated: `1517`
-		// Minimum execution time: 6_589_000 picoseconds.
-		Weight::from_parts(6_985_000, 0)
+		// Minimum execution time: 6_675_000 picoseconds.
+		Weight::from_parts(7_068_000, 0)
 			.saturating_add(Weight::from_parts(0, 1517))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -65,8 +65,8 @@ impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `165`
 		//  Estimated: `1517`
-		// Minimum execution time: 6_878_000 picoseconds.
-		Weight::from_parts(7_358_000, 0)
+		// Minimum execution time: 6_863_000 picoseconds.
+		Weight::from_parts(7_356_000, 0)
 			.saturating_add(Weight::from_parts(0, 1517))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -76,8 +76,8 @@ impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `165`
 		//  Estimated: `1517`
-		// Minimum execution time: 6_934_000 picoseconds.
-		Weight::from_parts(7_434_000, 0)
+		// Minimum execution time: 6_919_000 picoseconds.
+		Weight::from_parts(7_361_000, 0)
 			.saturating_add(Weight::from_parts(0, 1517))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -87,8 +87,8 @@ impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `165`
 		//  Estimated: `1517`
-		// Minimum execution time: 6_001_000 picoseconds.
-		Weight::from_parts(6_397_000, 0)
+		// Minimum execution time: 5_937_000 picoseconds.
+		Weight::from_parts(6_461_000, 0)
 			.saturating_add(Weight::from_parts(0, 1517))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/g1/src/weights/pallet_timestamp.rs b/runtime/g1/src/weights/pallet_timestamp.rs
new file mode 100644
index 000000000..361a82456
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_timestamp.rs
@@ -0,0 +1,74 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_timestamp`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_timestamp`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_timestamp::WeightInfo for WeightInfo<T> {
+	/// Storage: `Timestamp::Now` (r:1 w:1)
+	/// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `Babe::CurrentSlot` (r:1 w:0)
+	/// Proof: `Babe::CurrentSlot` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `UniversalDividend::NextUd` (r:1 w:1)
+	/// Proof: `UniversalDividend::NextUd` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	fn set() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `268`
+		//  Estimated: `1493`
+		// Minimum execution time: 7_925_000 picoseconds.
+		Weight::from_parts(8_424_000, 0)
+			.saturating_add(Weight::from_parts(0, 1493))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	fn on_finalize() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `57`
+		//  Estimated: `0`
+		// Minimum execution time: 2_425_000 picoseconds.
+		Weight::from_parts(2_610_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+}
diff --git a/runtime/g1/src/weights/pallet_treasury.rs b/runtime/g1/src/weights/pallet_treasury.rs
new file mode 100644
index 000000000..df400b722
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_treasury.rs
@@ -0,0 +1,121 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_treasury`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_treasury`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
+	fn spend_local() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 0_000 picoseconds.
+		Weight::from_parts(0, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn remove_approval() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 0_000 picoseconds.
+		Weight::from_parts(0, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `p` is `[0, 99]`.
+	fn on_initialize_proposals(_p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 0_000 picoseconds.
+		Weight::from_parts(0, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn spend() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 0_000 picoseconds.
+		Weight::from_parts(0, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `Treasury::Spends` (r:1 w:1)
+	/// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(61), added: 2536, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn payout() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `179`
+		//  Estimated: `6126`
+		// Minimum execution time: 39_657_000 picoseconds.
+		Weight::from_parts(40_848_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `Treasury::Spends` (r:1 w:1)
+	/// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(61), added: 2536, mode: `MaxEncodedLen`)
+	fn check_status() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `116`
+		//  Estimated: `3526`
+		// Minimum execution time: 8_482_000 picoseconds.
+		Weight::from_parts(9_134_000, 0)
+			.saturating_add(Weight::from_parts(0, 3526))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Treasury::Spends` (r:1 w:1)
+	/// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(61), added: 2536, mode: `MaxEncodedLen`)
+	fn void_spend() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `116`
+		//  Estimated: `3526`
+		// Minimum execution time: 7_681_000 picoseconds.
+		Weight::from_parts(8_272_000, 0)
+			.saturating_add(Weight::from_parts(0, 3526))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/g1/src/weights/pallet_universal_dividend.rs b/runtime/g1/src/weights/pallet_universal_dividend.rs
new file mode 100644
index 000000000..802f7acf3
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_universal_dividend.rs
@@ -0,0 +1,116 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_universal_dividend`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/g1/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_universal_dividend`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightInfo<T> {
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `UniversalDividend::PastReevals` (r:1 w:0)
+	/// Proof: `UniversalDividend::PastReevals` (`max_values`: Some(1), `max_size`: Some(1602), added: 2097, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `i` is `[1, 160]`.
+	fn claim_uds(_i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `676`
+		//  Estimated: `4141`
+		// Minimum execution time: 28_318_000 picoseconds.
+		Weight::from_parts(30_673_904, 0)
+			.saturating_add(Weight::from_parts(0, 4141))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `UniversalDividend::CurrentUd` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUd` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn transfer_ud() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `156`
+		//  Estimated: `6126`
+		// Minimum execution time: 49_229_000 picoseconds.
+		Weight::from_parts(50_374_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `UniversalDividend::CurrentUd` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUd` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn transfer_ud_keep_alive() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `93`
+		//  Estimated: `3558`
+		// Minimum execution time: 30_517_000 picoseconds.
+		Weight::from_parts(31_143_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `UniversalDividend::PastReevals` (r:1 w:0)
+	/// Proof: `UniversalDividend::PastReevals` (`max_values`: Some(1), `max_size`: Some(1602), added: 2097, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `i` is `[1, 160]`.
+	fn on_removed_member(_i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `181`
+		//  Estimated: `3558`
+		// Minimum execution time: 16_385_000 picoseconds.
+		Weight::from_parts(17_625_398, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_upgrade_origin.rs b/runtime/g1/src/weights/pallet_upgrade_origin.rs
similarity index 90%
rename from runtime/common/src/weights/pallet_upgrade_origin.rs
rename to runtime/g1/src/weights/pallet_upgrade_origin.rs
index 09e11404c..9e1b29968 100644
--- a/runtime/common/src/weights/pallet_upgrade_origin.rs
+++ b/runtime/g1/src/weights/pallet_upgrade_origin.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_upgrade_origin`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/g1/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -51,8 +51,8 @@ impl<T: frame_system::Config> pallet_upgrade_origin::WeightInfo for WeightInfo<T
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_208_000 picoseconds.
-		Weight::from_parts(4_574_000, 0)
+		// Minimum execution time: 4_416_000 picoseconds.
+		Weight::from_parts(4_697_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/common/src/weights/pallet_utility.rs b/runtime/g1/src/weights/pallet_utility.rs
similarity index 75%
rename from runtime/common/src/weights/pallet_utility.rs
rename to runtime/g1/src/weights/pallet_utility.rs
index 3e4b97c81..6800b015e 100644
--- a/runtime/common/src/weights/pallet_utility.rs
+++ b/runtime/g1/src/weights/pallet_utility.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_utility`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/g1/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -52,18 +52,18 @@ impl<T: frame_system::Config> pallet_utility::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_225_000 picoseconds.
-		Weight::from_parts(6_768_835, 0)
+		// Minimum execution time: 3_350_000 picoseconds.
+		Weight::from_parts(12_375_453, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 2_935
-			.saturating_add(Weight::from_parts(2_000_415, 0).saturating_mul(c.into()))
+			// Standard Error: 2_361
+			.saturating_add(Weight::from_parts(2_015_989, 0).saturating_mul(c.into()))
 	}
 	fn as_derivative() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_752_000 picoseconds.
-		Weight::from_parts(2_997_000, 0)
+		// Minimum execution time: 2_916_000 picoseconds.
+		Weight::from_parts(3_160_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `c` is `[0, 1000]`.
@@ -71,18 +71,18 @@ impl<T: frame_system::Config> pallet_utility::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_150_000 picoseconds.
-		Weight::from_parts(6_300_063, 0)
+		// Minimum execution time: 3_234_000 picoseconds.
+		Weight::from_parts(10_248_716, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_366
-			.saturating_add(Weight::from_parts(2_184_259, 0).saturating_mul(c.into()))
+			// Standard Error: 2_167
+			.saturating_add(Weight::from_parts(2_169_230, 0).saturating_mul(c.into()))
 	}
 	fn dispatch_as() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_387_000 picoseconds.
-		Weight::from_parts(4_735_000, 0)
+		// Minimum execution time: 4_653_000 picoseconds.
+		Weight::from_parts(5_059_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `c` is `[0, 1000]`.
@@ -90,10 +90,10 @@ impl<T: frame_system::Config> pallet_utility::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_227_000 picoseconds.
-		Weight::from_parts(8_110_481, 0)
+		// Minimum execution time: 3_324_000 picoseconds.
+		Weight::from_parts(9_932_471, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_389
-			.saturating_add(Weight::from_parts(2_001_592, 0).saturating_mul(c.into()))
+			// Standard Error: 1_756
+			.saturating_add(Weight::from_parts(2_018_099, 0).saturating_mul(c.into()))
 	}
 }
diff --git a/runtime/g1/src/weights/paritydb_weights.rs b/runtime/g1/src/weights/paritydb_weights.rs
new file mode 100644
index 000000000..306601a0f
--- /dev/null
+++ b/runtime/g1/src/weights/paritydb_weights.rs
@@ -0,0 +1,95 @@
+
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03 (Y/M/D)
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//!
+//! DATABASE: `ParityDb`, RUNTIME: `Äž1 Local Testnet`
+//! BLOCK-NUM: `BlockId::Number(0)`
+//! SKIP-WRITE: `false`, SKIP-READ: `false`, WARMUPS: `1`
+//! STATE-VERSION: `V1`, STATE-CACHE-SIZE: ``
+//! WEIGHT-PATH: `./runtime/g1/src/weights/`
+//! METRIC: `Average`, WEIGHT-MUL: `2.0`, WEIGHT-ADD: `0`
+
+// Executed Command:
+//   target/release/duniter
+//   benchmark
+//   storage
+//   --chain=dev
+//   --mul=2
+//   --weight-path=./runtime/g1/src/weights/
+//   --state-version=1
+//   --database=paritydb
+
+/// Storage DB weights for the `Äž1 Local Testnet` runtime and `ParityDb`.
+pub mod constants {
+	use frame_support::weights::constants;
+	use sp_core::parameter_types;
+	use sp_weights::RuntimeDbWeight;
+
+	parameter_types! {
+		/// `ParityDB` can be enabled with a feature flag, but is still experimental. These weights
+		/// are available for brave runtime engineers who may want to try this out as default.
+		pub const ParityDbWeight: RuntimeDbWeight = RuntimeDbWeight {
+			/// Time to read one storage item.
+			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
+			///
+			/// Stats nanoseconds:
+			///   Min, Max: 747, 1_117_031
+			///   Average:  8_389
+			///   Median:   1_201
+			///   Std-Dev:  88763.87
+			///
+			/// Percentiles nanoseconds:
+			///   99th: 5_272
+			///   95th: 1_844
+			///   75th: 1_385
+			read: 16_778 * constants::WEIGHT_REF_TIME_PER_NANOS,
+
+			/// Time to write one storage item.
+			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
+			///
+			/// Stats nanoseconds:
+			///   Min, Max: 4_012, 7_069_882
+			///   Average:  54_938
+			///   Median:   10_035
+			///   Std-Dev:  561653.53
+			///
+			/// Percentiles nanoseconds:
+			///   99th: 21_117
+			///   95th: 15_204
+			///   75th: 12_204
+			write: 109_876 * constants::WEIGHT_REF_TIME_PER_NANOS,
+		};
+	}
+
+	#[cfg(test)]
+	mod test_db_weights {
+		use super::constants::ParityDbWeight as W;
+		use sp_weights::constants;
+
+		/// Checks that all weights exist and have sane values.
+		// NOTE: If this test fails but you are sure that the generated values are fine,
+		// you can delete it.
+		#[test]
+		fn bound() {
+			// At least 1 µs.
+			assert!(
+				W::get().reads(1).ref_time() >= constants::WEIGHT_REF_TIME_PER_MICROS,
+				"Read weight should be at least 1 µs."
+			);
+			assert!(
+				W::get().writes(1).ref_time() >= constants::WEIGHT_REF_TIME_PER_MICROS,
+				"Write weight should be at least 1 µs."
+			);
+			// At most 1 ms.
+			assert!(
+				W::get().reads(1).ref_time() <= constants::WEIGHT_REF_TIME_PER_MILLIS,
+				"Read weight should be at most 1 ms."
+			);
+			assert!(
+				W::get().writes(1).ref_time() <= constants::WEIGHT_REF_TIME_PER_MILLIS,
+				"Write weight should be at most 1 ms."
+			);
+		}
+	}
+}
diff --git a/runtime/gdev/Cargo.toml b/runtime/gdev/Cargo.toml
index 76c167816..4ed92bd07 100644
--- a/runtime/gdev/Cargo.toml
+++ b/runtime/gdev/Cargo.toml
@@ -121,6 +121,7 @@ std = [
 	"sp-transaction-pool/std",
 	"sp-version/std",
 	"substrate-wasm-builder",
+	"sp-weights/std",
 ]
 try-runtime = [
 	"common-runtime/try-runtime",
@@ -243,3 +244,4 @@ sp-session = { workspace = true }
 sp-std = { workspace = true }
 sp-transaction-pool = { workspace = true }
 sp-version = { workspace = true }
+sp-weights = { workspace = true }
diff --git a/runtime/gdev/src/lib.rs b/runtime/gdev/src/lib.rs
index e7bd13e0b..bfd9a714a 100644
--- a/runtime/gdev/src/lib.rs
+++ b/runtime/gdev/src/lib.rs
@@ -27,6 +27,7 @@ include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
 extern crate frame_benchmarking;
 
 pub mod parameters;
+pub mod weights;
 
 pub use self::parameters::*;
 use common_runtime::IdtyNameValidatorImpl;
@@ -67,6 +68,7 @@ use sp_std::prelude::*;
 #[cfg(feature = "std")]
 use sp_version::NativeVersion;
 use sp_version::RuntimeVersion;
+pub use weights::paritydb_weights::constants::ParityDbWeight as DbWeight;
 
 // A few exports that help ease life for downstream crates.
 use frame_support::instances::Instance2;
diff --git a/runtime/gdev/src/parameters.rs b/runtime/gdev/src/parameters.rs
index 1d95aeb66..edb27ef45 100644
--- a/runtime/gdev/src/parameters.rs
+++ b/runtime/gdev/src/parameters.rs
@@ -57,7 +57,7 @@ parameter_types! {
 
 // ImOnline
 parameter_types! {
-    pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value();
+    pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::MAX;
     pub const MaxPeerInHeartbeats: u32 = 10_000;
     pub const MaxPeerDataEncodingSize: u32 = 1_000;
 }
diff --git a/runtime/gdev/src/weights.rs b/runtime/gdev/src/weights.rs
new file mode 100644
index 000000000..1bf51bdbb
--- /dev/null
+++ b/runtime/gdev/src/weights.rs
@@ -0,0 +1,52 @@
+// Copyright 2021 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(clippy::unnecessary_cast)]
+#![allow(unused_doc_comments)]
+
+pub mod block_weights;
+pub mod extrinsic_weights;
+pub mod frame_system;
+pub mod pallet_babe;
+pub mod pallet_balances;
+pub mod pallet_collective;
+pub mod pallet_distance;
+pub mod pallet_grandpa;
+pub mod pallet_im_online;
+pub mod pallet_multisig;
+pub mod pallet_proxy;
+pub mod pallet_session;
+pub mod pallet_scheduler;
+pub mod pallet_timestamp;
+pub mod pallet_treasury;
+pub mod pallet_universal_dividend;
+pub mod pallet_upgrade_origin;
+pub mod pallet_provide_randomness;
+pub mod pallet_identity;
+pub mod pallet_preimage;
+pub mod pallet_utility;
+pub mod pallet_duniter_account;
+pub mod pallet_quota;
+pub mod pallet_oneshot_account;
+pub mod pallet_certification;
+pub mod pallet_membership;
+pub mod pallet_smith_members;
+pub mod pallet_sudo;
+pub mod pallet_authority_members;
+pub mod paritydb_weights;
diff --git a/runtime/common/src/weights/block_weights.rs b/runtime/gdev/src/weights/block_weights.rs
similarity index 79%
rename from runtime/common/src/weights/block_weights.rs
rename to runtime/gdev/src/weights/block_weights.rs
index a1d29d9a5..2496b9ba5 100644
--- a/runtime/common/src/weights/block_weights.rs
+++ b/runtime/gdev/src/weights/block_weights.rs
@@ -1,11 +1,11 @@
 
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13 (Y/M/D)
+//! DATE: 2024-07-03 (Y/M/D)
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //!
 //! SHORT-NAME: `block`, LONG-NAME: `BlockExecution`, RUNTIME: `Äždev Local Testnet`
 //! WARMUPS: `10`, REPEAT: `100`
-//! WEIGHT-PATH: `./runtime/common/src/weights/`
+//! WEIGHT-PATH: `./runtime/gdev/src/weights/`
 //! WEIGHT-METRIC: `Average`, WEIGHT-MUL: `1.0`, WEIGHT-ADD: `0`
 
 // Executed Command:
@@ -14,7 +14,7 @@
 //   overhead
 //   --chain=dev
 //   --wasm-execution=compiled
-//   --weight-path=./runtime/common/src/weights/
+//   --weight-path=./runtime/gdev/src/weights/
 //   --warmup=10
 //   --repeat=100
 
@@ -26,17 +26,17 @@ parameter_types! {
 	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
 	///
 	/// Stats nanoseconds:
-	///   Min, Max: 124_012, 323_353
-	///   Average:  133_143
-	///   Median:   128_528
-	///   Std-Dev:  20423.87
+	///   Min, Max: 146_762, 242_958
+	///   Average:  152_870
+	///   Median:   149_891
+	///   Std-Dev:  11305.13
 	///
 	/// Percentiles nanoseconds:
-	///   99th: 174_283
-	///   95th: 146_055
-	///   75th: 132_728
+	///   99th: 181_467
+	///   95th: 168_758
+	///   75th: 151_089
 	pub const BlockExecutionWeight: Weight =
-		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(133_143), 0);
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(152_870), 0);
 }
 
 #[cfg(test)]
diff --git a/runtime/common/src/weights/extrinsic_weights.rs b/runtime/gdev/src/weights/extrinsic_weights.rs
similarity index 79%
rename from runtime/common/src/weights/extrinsic_weights.rs
rename to runtime/gdev/src/weights/extrinsic_weights.rs
index 252aa7bcc..75f928f08 100644
--- a/runtime/common/src/weights/extrinsic_weights.rs
+++ b/runtime/gdev/src/weights/extrinsic_weights.rs
@@ -1,11 +1,11 @@
 
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13 (Y/M/D)
+//! DATE: 2024-07-03 (Y/M/D)
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //!
 //! SHORT-NAME: `extrinsic`, LONG-NAME: `ExtrinsicBase`, RUNTIME: `Äždev Local Testnet`
 //! WARMUPS: `10`, REPEAT: `100`
-//! WEIGHT-PATH: `./runtime/common/src/weights/`
+//! WEIGHT-PATH: `./runtime/gdev/src/weights/`
 //! WEIGHT-METRIC: `Average`, WEIGHT-MUL: `1.0`, WEIGHT-ADD: `0`
 
 // Executed Command:
@@ -14,7 +14,7 @@
 //   overhead
 //   --chain=dev
 //   --wasm-execution=compiled
-//   --weight-path=./runtime/common/src/weights/
+//   --weight-path=./runtime/gdev/src/weights/
 //   --warmup=10
 //   --repeat=100
 
@@ -26,17 +26,17 @@ parameter_types! {
 	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
 	///
 	/// Stats nanoseconds:
-	///   Min, Max: 70_730, 71_335
-	///   Average:  70_896
-	///   Median:   70_881
-	///   Std-Dev:  92.55
+	///   Min, Max: 95_282, 98_239
+	///   Average:  96_491
+	///   Median:   96_686
+	///   Std-Dev:  679.68
 	///
 	/// Percentiles nanoseconds:
-	///   99th: 71_139
-	///   95th: 71_044
-	///   75th: 70_948
+	///   99th: 98_187
+	///   95th: 97_315
+	///   75th: 96_853
 	pub const ExtrinsicBaseWeight: Weight =
-		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(70_896), 0);
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(96_491), 0);
 }
 
 #[cfg(test)]
diff --git a/runtime/common/src/weights/frame_benchmarking_baseline.rs b/runtime/gdev/src/weights/frame_benchmarking_baseline.rs
similarity index 81%
rename from runtime/common/src/weights/frame_benchmarking_baseline.rs
rename to runtime/gdev/src/weights/frame_benchmarking_baseline.rs
index a64d72edc..0441eb972 100644
--- a/runtime/common/src/weights/frame_benchmarking_baseline.rs
+++ b/runtime/gdev/src/weights/frame_benchmarking_baseline.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `frame_benchmarking::baseline`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/gdev/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -52,8 +52,8 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 78_000 picoseconds.
-		Weight::from_parts(91_433, 0)
+		// Minimum execution time: 81_000 picoseconds.
+		Weight::from_parts(85_521, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 1000000]`.
@@ -61,8 +61,8 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 79_000 picoseconds.
-		Weight::from_parts(91_582, 0)
+		// Minimum execution time: 81_000 picoseconds.
+		Weight::from_parts(88_525, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 1000000]`.
@@ -70,8 +70,8 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 79_000 picoseconds.
-		Weight::from_parts(102_823, 0)
+		// Minimum execution time: 81_000 picoseconds.
+		Weight::from_parts(91_517, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 1000000]`.
@@ -79,16 +79,16 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 78_000 picoseconds.
-		Weight::from_parts(93_569, 0)
+		// Minimum execution time: 81_000 picoseconds.
+		Weight::from_parts(94_054, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	fn hashing() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 19_590_146_000 picoseconds.
-		Weight::from_parts(19_655_687_000, 0)
+		// Minimum execution time: 19_706_240_000 picoseconds.
+		Weight::from_parts(19_779_174_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 100]`.
@@ -97,9 +97,9 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		//  Measured:  `0`
 		//  Estimated: `0`
 		// Minimum execution time: 82_000 picoseconds.
-		Weight::from_parts(27_963_495, 0)
+		Weight::from_parts(26_625_754, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 12_306
-			.saturating_add(Weight::from_parts(31_412_930, 0).saturating_mul(i.into()))
+			// Standard Error: 15_501
+			.saturating_add(Weight::from_parts(33_882_022, 0).saturating_mul(i.into()))
 	}
 }
diff --git a/runtime/gdev/src/weights/frame_system.rs b/runtime/gdev/src/weights/frame_system.rs
new file mode 100644
index 000000000..e354805c2
--- /dev/null
+++ b/runtime/gdev/src/weights/frame_system.rs
@@ -0,0 +1,171 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `frame_system`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `frame_system`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
+	/// The range of component `b` is `[0, 3932160]`.
+	fn remark(b: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 1_589_000 picoseconds.
+		Weight::from_parts(1_666_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 0
+			.saturating_add(Weight::from_parts(249, 0).saturating_mul(b.into()))
+	}
+	/// The range of component `b` is `[0, 3932160]`.
+	fn remark_with_event(b: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_955_000 picoseconds.
+		Weight::from_parts(4_197_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 1
+			.saturating_add(Weight::from_parts(1_046, 0).saturating_mul(b.into()))
+	}
+	/// Storage: `System::Digest` (r:1 w:1)
+	/// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: UNKNOWN KEY `0x3a686561707061676573` (r:0 w:1)
+	/// Proof: UNKNOWN KEY `0x3a686561707061676573` (r:0 w:1)
+	fn set_heap_pages() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `1485`
+		// Minimum execution time: 2_377_000 picoseconds.
+		Weight::from_parts(2_614_000, 0)
+			.saturating_add(Weight::from_parts(0, 1485))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `System::Digest` (r:1 w:1)
+	/// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1)
+	/// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1)
+	fn set_code() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `1485`
+		// Minimum execution time: 78_138_077_000 picoseconds.
+		Weight::from_parts(79_531_876_000, 0)
+			.saturating_add(Weight::from_parts(0, 1485))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Skipped::Metadata` (r:0 w:0)
+	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[0, 1000]`.
+	fn set_storage(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 1_428_000 picoseconds.
+		Weight::from_parts(1_521_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 695
+			.saturating_add(Weight::from_parts(583_523, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
+	}
+	/// Storage: `Skipped::Metadata` (r:0 w:0)
+	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[0, 1000]`.
+	fn kill_storage(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 1_429_000 picoseconds.
+		Weight::from_parts(1_556_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 783
+			.saturating_add(Weight::from_parts(468_251, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
+	}
+	/// Storage: `Skipped::Metadata` (r:0 w:0)
+	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `p` is `[0, 1000]`.
+	fn kill_prefix(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `77 + p * (69 ±0)`
+		//  Estimated: `76 + p * (70 ±0)`
+		// Minimum execution time: 2_652_000 picoseconds.
+		Weight::from_parts(2_805_000, 0)
+			.saturating_add(Weight::from_parts(0, 76))
+			// Standard Error: 844
+			.saturating_add(Weight::from_parts(912_591, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(p.into())))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into())))
+			.saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into()))
+	}
+	/// Storage: `System::AuthorizedUpgrade` (r:0 w:1)
+	/// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`)
+	fn authorize_upgrade() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 8_209_000 picoseconds.
+		Weight::from_parts(9_626_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `System::AuthorizedUpgrade` (r:1 w:1)
+	/// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`)
+	/// Storage: `System::Digest` (r:1 w:1)
+	/// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1)
+	/// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1)
+	fn apply_authorized_upgrade() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `22`
+		//  Estimated: `1518`
+		// Minimum execution time: 81_991_091_000 picoseconds.
+		Weight::from_parts(83_378_405_000, 0)
+			.saturating_add(Weight::from_parts(0, 1518))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+}
diff --git a/runtime/gdev/src/weights/pallet_authority_members.rs b/runtime/gdev/src/weights/pallet_authority_members.rs
new file mode 100644
index 000000000..c66769618
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_authority_members.rs
@@ -0,0 +1,156 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_authority_members`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_authority_members`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInfo<T> {
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:1 w:0)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:0)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:0)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:0)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn go_offline() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `933`
+		//  Estimated: `4398`
+		// Minimum execution time: 18_083_000 picoseconds.
+		Weight::from_parts(19_609_000, 0)
+			.saturating_add(Weight::from_parts(0, 4398))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:1 w:0)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Blacklist` (r:1 w:0)
+	/// Proof: `AuthorityMembers::Blacklist` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:0)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:0)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:0)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:0)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn go_online() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1390`
+		//  Estimated: `4855`
+		// Minimum execution time: 25_183_000 picoseconds.
+		Weight::from_parts(25_829_000, 0)
+			.saturating_add(Weight::from_parts(0, 4855))
+			.saturating_add(T::DbWeight::get().reads(8))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:1 w:0)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:0)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::KeyOwner` (r:4 w:0)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:0 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn set_session_keys() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1839`
+		//  Estimated: `12729`
+		// Minimum execution time: 32_627_000 picoseconds.
+		Weight::from_parts(34_060_000, 0)
+			.saturating_add(Weight::from_parts(0, 12729))
+			.saturating_add(T::DbWeight::get().reads(8))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn remove_member() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `848`
+		//  Estimated: `4313`
+		// Minimum execution time: 32_854_000 picoseconds.
+		Weight::from_parts(34_478_000, 0)
+			.saturating_add(Weight::from_parts(0, 4313))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(10))
+	}
+	/// Storage: `AuthorityMembers::Blacklist` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Blacklist` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn remove_member_from_blacklist() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `199`
+		//  Estimated: `1684`
+		// Minimum execution time: 6_873_000 picoseconds.
+		Weight::from_parts(7_122_000, 0)
+			.saturating_add(Weight::from_parts(0, 1684))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/gdev/src/weights/pallet_babe.rs b/runtime/gdev/src/weights/pallet_babe.rs
new file mode 100644
index 000000000..caa37df09
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_babe.rs
@@ -0,0 +1,54 @@
+// Copyright 2021 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Manual weights for the GRANDPA Pallet in duniter runtimes
+//! This file was not auto-generated.
+
+use frame_support::{
+    traits::Get,
+    weights::{
+        constants::{WEIGHT_REF_TIME_PER_MICROS, WEIGHT_REF_TIME_PER_NANOS},
+        Weight,
+    },
+};
+use sp_std::marker::PhantomData;
+
+/// Weight functions for `pallet_babe`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_babe::WeightInfo for WeightInfo<T> {
+    fn plan_config_change() -> Weight {
+        T::DbWeight::get().writes(1)
+    }
+
+    fn report_equivocation(validator_count: u32, _p: u32) -> Weight {
+        // we take the validator set count from the membership proof to
+        // calculate the weight but we set a floor of 100 validators.
+        let validator_count = validator_count.max(100) as u64;
+
+        // checking membership proof
+        (Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 35)
+            .saturating_add(
+                (Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS, 0) * 175)
+                    .saturating_mul(validator_count),
+            )
+            .saturating_add(T::DbWeight::get().reads(5))
+            // check equivocation proof
+            .saturating_add(Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 110)
+            // report offence
+            .saturating_add(Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 110)
+            .saturating_add(T::DbWeight::get().writes(3))
+    }
+}
diff --git a/runtime/gdev/src/weights/pallet_balances.rs b/runtime/gdev/src/weights/pallet_balances.rs
new file mode 100644
index 000000000..503b7550a
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_balances.rs
@@ -0,0 +1,162 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_balances`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_balances`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn transfer_allow_death() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `63`
+		//  Estimated: `6126`
+		// Minimum execution time: 44_769_000 picoseconds.
+		Weight::from_parts(45_556_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn transfer_keep_alive() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `3558`
+		// Minimum execution time: 27_714_000 picoseconds.
+		Weight::from_parts(28_313_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn force_set_balance_creating() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `134`
+		//  Estimated: `3558`
+		// Minimum execution time: 9_148_000 picoseconds.
+		Weight::from_parts(9_575_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn force_set_balance_killing() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `134`
+		//  Estimated: `3558`
+		// Minimum execution time: 12_936_000 picoseconds.
+		Weight::from_parts(13_521_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `System::Account` (r:3 w:3)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn force_transfer() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `126`
+		//  Estimated: `8694`
+		// Minimum execution time: 45_941_000 picoseconds.
+		Weight::from_parts(47_038_000, 0)
+			.saturating_add(Weight::from_parts(0, 8694))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn transfer_all() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `3558`
+		// Minimum execution time: 34_307_000 picoseconds.
+		Weight::from_parts(34_943_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn force_unreserve() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `134`
+		//  Estimated: `3558`
+		// Minimum execution time: 11_849_000 picoseconds.
+		Weight::from_parts(12_361_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn force_adjust_total_issuance() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 4_131_000 picoseconds.
+		Weight::from_parts(4_432_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn burn_allow_death() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `63`
+		//  Estimated: `3558`
+		// Minimum execution time: 31_443_000 picoseconds.
+		Weight::from_parts(32_177_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn burn_keep_alive() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 14_289_000 picoseconds.
+		Weight::from_parts(14_586_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_certification.rs b/runtime/gdev/src/weights/pallet_certification.rs
similarity index 83%
rename from runtime/common/src/weights/pallet_certification.rs
rename to runtime/gdev/src/weights/pallet_certification.rs
index 580c622e9..4f6b9d9f4 100644
--- a/runtime/common/src/weights/pallet_certification.rs
+++ b/runtime/gdev/src/weights/pallet_certification.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_certification`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/gdev/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -61,11 +61,11 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn add_cert() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `956`
-		//  Estimated: `6896`
-		// Minimum execution time: 30_971_000 picoseconds.
-		Weight::from_parts(32_188_000, 0)
-			.saturating_add(Weight::from_parts(0, 6896))
+		//  Measured:  `1107`
+		//  Estimated: `7047`
+		// Minimum execution time: 30_349_000 picoseconds.
+		Weight::from_parts(31_540_000, 0)
+			.saturating_add(Weight::from_parts(0, 7047))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(4))
 	}
@@ -83,11 +83,11 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn renew_cert() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `980`
-		//  Estimated: `6920`
-		// Minimum execution time: 29_235_000 picoseconds.
-		Weight::from_parts(30_293_000, 0)
-			.saturating_add(Weight::from_parts(0, 6920))
+		//  Measured:  `1130`
+		//  Estimated: `7070`
+		// Minimum execution time: 29_166_000 picoseconds.
+		Weight::from_parts(31_138_000, 0)
+			.saturating_add(Weight::from_parts(0, 7070))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -99,11 +99,11 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 	/// Proof: `Parameters::ParametersStorage` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	fn del_cert() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `444`
-		//  Estimated: `6384`
-		// Minimum execution time: 15_655_000 picoseconds.
-		Weight::from_parts(16_665_000, 0)
-			.saturating_add(Weight::from_parts(0, 6384))
+		//  Measured:  `528`
+		//  Estimated: `6468`
+		// Minimum execution time: 16_256_000 picoseconds.
+		Weight::from_parts(16_710_000, 0)
+			.saturating_add(Weight::from_parts(0, 6468))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -118,13 +118,13 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 	/// The range of component `i` is `[2, 1000]`.
 	fn remove_all_certs_received_by(i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `546 + i * (35 ±0)`
-		//  Estimated: `4017 + i * (2511 ±0)`
-		// Minimum execution time: 24_107_000 picoseconds.
-		Weight::from_parts(24_630_000, 0)
-			.saturating_add(Weight::from_parts(0, 4017))
-			// Standard Error: 22_328
-			.saturating_add(Weight::from_parts(8_359_989, 0).saturating_mul(i.into()))
+		//  Measured:  `665 + i * (35 ±0)`
+		//  Estimated: `4129 + i * (2511 ±0)`
+		// Minimum execution time: 23_756_000 picoseconds.
+		Weight::from_parts(25_194_000, 0)
+			.saturating_add(Weight::from_parts(0, 4129))
+			// Standard Error: 25_382
+			.saturating_add(Weight::from_parts(8_659_814, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -137,8 +137,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `139`
 		//  Estimated: `3604`
-		// Minimum execution time: 2_464_000 picoseconds.
-		Weight::from_parts(2_697_000, 0)
+		// Minimum execution time: 2_599_000 picoseconds.
+		Weight::from_parts(2_765_000, 0)
 			.saturating_add(Weight::from_parts(0, 3604))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -146,11 +146,11 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn do_remove_cert_noop() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `237`
-		//  Estimated: `3702`
-		// Minimum execution time: 3_424_000 picoseconds.
-		Weight::from_parts(3_805_000, 0)
-			.saturating_add(Weight::from_parts(0, 3702))
+		//  Measured:  `276`
+		//  Estimated: `3741`
+		// Minimum execution time: 3_453_000 picoseconds.
+		Weight::from_parts(3_793_000, 0)
+			.saturating_add(Weight::from_parts(0, 3741))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -164,11 +164,11 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn do_remove_cert() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `660`
-		//  Estimated: `6600`
-		// Minimum execution time: 19_445_000 picoseconds.
-		Weight::from_parts(20_341_000, 0)
-			.saturating_add(Weight::from_parts(0, 6600))
+		//  Measured:  `822`
+		//  Estimated: `6762`
+		// Minimum execution time: 20_958_000 picoseconds.
+		Weight::from_parts(22_038_000, 0)
+			.saturating_add(Weight::from_parts(0, 6762))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
diff --git a/runtime/common/src/weights/pallet_collective.rs b/runtime/gdev/src/weights/pallet_collective.rs
similarity index 82%
rename from runtime/common/src/weights/pallet_collective.rs
rename to runtime/gdev/src/weights/pallet_collective.rs
index bdb723e56..2354c51e6 100644
--- a/runtime/common/src/weights/pallet_collective.rs
+++ b/runtime/gdev/src/weights/pallet_collective.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_collective`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/gdev/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -62,13 +62,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0 + m * (672 ±0) + p * (3191 ±0)`
 		//  Estimated: `10019 + m * (416 ±4) + p * (4183 ±23)`
-		// Minimum execution time: 10_752_000 picoseconds.
-		Weight::from_parts(10_889_000, 0)
+		// Minimum execution time: 10_675_000 picoseconds.
+		Weight::from_parts(10_945_000, 0)
 			.saturating_add(Weight::from_parts(0, 10019))
-			// Standard Error: 9_186
-			.saturating_add(Weight::from_parts(692_252, 0).saturating_mul(m.into()))
-			// Standard Error: 45_413
-			.saturating_add(Weight::from_parts(6_020_530, 0).saturating_mul(p.into()))
+			// Standard Error: 9_292
+			.saturating_add(Weight::from_parts(710_381, 0).saturating_mul(m.into()))
+			// Standard Error: 45_935
+			.saturating_add(Weight::from_parts(6_061_073, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(p.into())))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -84,13 +84,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `32 + m * (32 ±0)`
 		//  Estimated: `1518 + m * (32 ±0)`
-		// Minimum execution time: 9_225_000 picoseconds.
-		Weight::from_parts(9_016_861, 0)
+		// Minimum execution time: 9_202_000 picoseconds.
+		Weight::from_parts(8_569_017, 0)
 			.saturating_add(Weight::from_parts(0, 1518))
-			// Standard Error: 28
-			.saturating_add(Weight::from_parts(1_184, 0).saturating_mul(b.into()))
-			// Standard Error: 289
-			.saturating_add(Weight::from_parts(10_540, 0).saturating_mul(m.into()))
+			// Standard Error: 113
+			.saturating_add(Weight::from_parts(1_523, 0).saturating_mul(b.into()))
+			// Standard Error: 1_174
+			.saturating_add(Weight::from_parts(13_251, 0).saturating_mul(m.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
 	}
@@ -104,13 +104,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `32 + m * (32 ±0)`
 		//  Estimated: `3498 + m * (32 ±0)`
-		// Minimum execution time: 10_827_000 picoseconds.
-		Weight::from_parts(10_744_142, 0)
+		// Minimum execution time: 11_151_000 picoseconds.
+		Weight::from_parts(11_225_973, 0)
 			.saturating_add(Weight::from_parts(0, 3498))
-			// Standard Error: 36
-			.saturating_add(Weight::from_parts(1_257, 0).saturating_mul(b.into()))
-			// Standard Error: 378
-			.saturating_add(Weight::from_parts(17_916, 0).saturating_mul(m.into()))
+			// Standard Error: 131
+			.saturating_add(Weight::from_parts(1_176, 0).saturating_mul(b.into()))
+			// Standard Error: 1_353
+			.saturating_add(Weight::from_parts(16_475, 0).saturating_mul(m.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
 	}
@@ -131,15 +131,15 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `24 + m * (32 ±0) + p * (55 ±0)`
 		//  Estimated: `3461 + m * (32 ±0) + p * (54 ±0)`
-		// Minimum execution time: 16_098_000 picoseconds.
-		Weight::from_parts(15_641_556, 0)
+		// Minimum execution time: 16_198_000 picoseconds.
+		Weight::from_parts(15_672_031, 0)
 			.saturating_add(Weight::from_parts(0, 3461))
-			// Standard Error: 60
-			.saturating_add(Weight::from_parts(2_167, 0).saturating_mul(b.into()))
-			// Standard Error: 633
-			.saturating_add(Weight::from_parts(14_798, 0).saturating_mul(m.into()))
-			// Standard Error: 3_162
-			.saturating_add(Weight::from_parts(240_622, 0).saturating_mul(p.into()))
+			// Standard Error: 109
+			.saturating_add(Weight::from_parts(2_009, 0).saturating_mul(b.into()))
+			// Standard Error: 1_142
+			.saturating_add(Weight::from_parts(14_606, 0).saturating_mul(m.into()))
+			// Standard Error: 5_709
+			.saturating_add(Weight::from_parts(271_785, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(4))
 			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
@@ -154,11 +154,11 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `573 + m * (64 ±0)`
 		//  Estimated: `4037 + m * (64 ±0)`
-		// Minimum execution time: 14_164_000 picoseconds.
-		Weight::from_parts(15_244_842, 0)
+		// Minimum execution time: 14_117_000 picoseconds.
+		Weight::from_parts(15_324_510, 0)
 			.saturating_add(Weight::from_parts(0, 4037))
-			// Standard Error: 599
-			.saturating_add(Weight::from_parts(32_813, 0).saturating_mul(m.into()))
+			// Standard Error: 1_095
+			.saturating_add(Weight::from_parts(34_376, 0).saturating_mul(m.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
 			.saturating_add(Weight::from_parts(0, 64).saturating_mul(m.into()))
@@ -177,13 +177,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `117 + m * (64 ±0) + p * (55 ±0)`
 		//  Estimated: `3591 + m * (64 ±0) + p * (55 ±0)`
-		// Minimum execution time: 18_522_000 picoseconds.
-		Weight::from_parts(17_152_627, 0)
+		// Minimum execution time: 18_081_000 picoseconds.
+		Weight::from_parts(17_382_712, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
-			// Standard Error: 516
-			.saturating_add(Weight::from_parts(29_607, 0).saturating_mul(m.into()))
-			// Standard Error: 2_549
-			.saturating_add(Weight::from_parts(211_764, 0).saturating_mul(p.into()))
+			// Standard Error: 743
+			.saturating_add(Weight::from_parts(27_341, 0).saturating_mul(m.into()))
+			// Standard Error: 3_670
+			.saturating_add(Weight::from_parts(222_237, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 64).saturating_mul(m.into()))
@@ -204,15 +204,15 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `62 + b * (1 ±0) + m * (64 ±0) + p * (78 ±0)`
 		//  Estimated: `3619 + b * (1 ±0) + m * (63 ±0) + p * (74 ±0)`
-		// Minimum execution time: 26_712_000 picoseconds.
-		Weight::from_parts(25_076_930, 0)
+		// Minimum execution time: 26_164_000 picoseconds.
+		Weight::from_parts(25_204_978, 0)
 			.saturating_add(Weight::from_parts(0, 3619))
-			// Standard Error: 82
+			// Standard Error: 100
 			.saturating_add(Weight::from_parts(1_994, 0).saturating_mul(b.into()))
-			// Standard Error: 873
-			.saturating_add(Weight::from_parts(18_412, 0).saturating_mul(m.into()))
-			// Standard Error: 4_310
-			.saturating_add(Weight::from_parts(313_327, 0).saturating_mul(p.into()))
+			// Standard Error: 1_064
+			.saturating_add(Weight::from_parts(15_104, 0).saturating_mul(m.into()))
+			// Standard Error: 5_250
+			.saturating_add(Weight::from_parts(324_868, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(b.into()))
@@ -235,13 +235,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `137 + m * (64 ±0) + p * (55 ±0)`
 		//  Estimated: `3611 + m * (64 ±0) + p * (55 ±0)`
-		// Minimum execution time: 20_754_000 picoseconds.
-		Weight::from_parts(18_867_635, 0)
+		// Minimum execution time: 20_347_000 picoseconds.
+		Weight::from_parts(19_032_739, 0)
 			.saturating_add(Weight::from_parts(0, 3611))
-			// Standard Error: 545
-			.saturating_add(Weight::from_parts(34_251, 0).saturating_mul(m.into()))
-			// Standard Error: 2_693
-			.saturating_add(Weight::from_parts(232_282, 0).saturating_mul(p.into()))
+			// Standard Error: 721
+			.saturating_add(Weight::from_parts(32_355, 0).saturating_mul(m.into()))
+			// Standard Error: 3_561
+			.saturating_add(Weight::from_parts(239_508, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 64).saturating_mul(m.into()))
@@ -264,15 +264,15 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `82 + b * (1 ±0) + m * (64 ±0) + p * (78 ±0)`
 		//  Estimated: `3639 + b * (1 ±0) + m * (63 ±0) + p * (74 ±0)`
-		// Minimum execution time: 27_752_000 picoseconds.
-		Weight::from_parts(26_500_438, 0)
+		// Minimum execution time: 27_618_000 picoseconds.
+		Weight::from_parts(26_080_671, 0)
 			.saturating_add(Weight::from_parts(0, 3639))
-			// Standard Error: 85
-			.saturating_add(Weight::from_parts(2_063, 0).saturating_mul(b.into()))
-			// Standard Error: 903
-			.saturating_add(Weight::from_parts(17_377, 0).saturating_mul(m.into()))
-			// Standard Error: 4_454
-			.saturating_add(Weight::from_parts(327_819, 0).saturating_mul(p.into()))
+			// Standard Error: 87
+			.saturating_add(Weight::from_parts(2_195, 0).saturating_mul(b.into()))
+			// Standard Error: 927
+			.saturating_add(Weight::from_parts(20_678, 0).saturating_mul(m.into()))
+			// Standard Error: 4_577
+			.saturating_add(Weight::from_parts(330_006, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(b.into()))
@@ -290,11 +290,11 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `189 + p * (32 ±0)`
 		//  Estimated: `1674 + p * (32 ±0)`
-		// Minimum execution time: 9_042_000 picoseconds.
-		Weight::from_parts(10_091_880, 0)
+		// Minimum execution time: 9_187_000 picoseconds.
+		Weight::from_parts(10_115_981, 0)
 			.saturating_add(Weight::from_parts(0, 1674))
-			// Standard Error: 1_853
-			.saturating_add(Weight::from_parts(159_967, 0).saturating_mul(p.into()))
+			// Standard Error: 2_615
+			.saturating_add(Weight::from_parts(169_173, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 32).saturating_mul(p.into()))
diff --git a/runtime/common/src/weights/pallet_distance.rs b/runtime/gdev/src/weights/pallet_distance.rs
similarity index 81%
rename from runtime/common/src/weights/pallet_distance.rs
rename to runtime/gdev/src/weights/pallet_distance.rs
index 698e6ce40..8aad15fd3 100644
--- a/runtime/common/src/weights/pallet_distance.rs
+++ b/runtime/gdev/src/weights/pallet_distance.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_distance`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/gdev/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -65,15 +65,17 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	/// Storage: `System::Account` (r:1 w:1)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Balances::Holds` (r:1 w:1)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
 	fn request_distance_evaluation() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1119`
-		//  Estimated: `4584`
-		// Minimum execution time: 40_210_000 picoseconds.
-		Weight::from_parts(42_313_000, 0)
-			.saturating_add(Weight::from_parts(0, 4584))
-			.saturating_add(T::DbWeight::get().reads(9))
-			.saturating_add(T::DbWeight::get().writes(3))
+		//  Measured:  `1251`
+		//  Estimated: `4716`
+		// Minimum execution time: 54_452_000 picoseconds.
+		Weight::from_parts(56_907_000, 0)
+			.saturating_add(Weight::from_parts(0, 4716))
+			.saturating_add(T::DbWeight::get().reads(10))
+			.saturating_add(T::DbWeight::get().writes(4))
 	}
 	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
 	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -93,15 +95,17 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	/// Storage: `System::Account` (r:1 w:1)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Balances::Holds` (r:1 w:1)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
 	fn request_distance_evaluation_for() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1148`
-		//  Estimated: `7088`
-		// Minimum execution time: 43_404_000 picoseconds.
-		Weight::from_parts(44_672_000, 0)
-			.saturating_add(Weight::from_parts(0, 7088))
-			.saturating_add(T::DbWeight::get().reads(10))
-			.saturating_add(T::DbWeight::get().writes(3))
+		//  Measured:  `1280`
+		//  Estimated: `7220`
+		// Minimum execution time: 55_606_000 picoseconds.
+		Weight::from_parts(58_495_000, 0)
+			.saturating_add(Weight::from_parts(0, 7220))
+			.saturating_add(T::DbWeight::get().reads(11))
+			.saturating_add(T::DbWeight::get().writes(4))
 	}
 	/// Storage: `Distance::DidUpdate` (r:1 w:1)
 	/// Proof: `Distance::DidUpdate` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
@@ -120,11 +124,11 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `402 + i * (10 ±0)`
 		//  Estimated: `1887 + i * (10 ±0)`
-		// Minimum execution time: 12_374_000 picoseconds.
-		Weight::from_parts(15_184_116, 0)
+		// Minimum execution time: 11_900_000 picoseconds.
+		Weight::from_parts(15_105_405, 0)
 			.saturating_add(Weight::from_parts(0, 1887))
-			// Standard Error: 109
-			.saturating_add(Weight::from_parts(99_165, 0).saturating_mul(i.into()))
+			// Standard Error: 211
+			.saturating_add(Weight::from_parts(103_495, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 10).saturating_mul(i.into()))
@@ -138,11 +142,11 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `139 + i * (10 ±0)`
 		//  Estimated: `1624 + i * (10 ±0)`
-		// Minimum execution time: 5_098_000 picoseconds.
-		Weight::from_parts(6_634_188, 0)
+		// Minimum execution time: 4_952_000 picoseconds.
+		Weight::from_parts(8_766_609, 0)
 			.saturating_add(Weight::from_parts(0, 1624))
-			// Standard Error: 72
-			.saturating_add(Weight::from_parts(99_785, 0).saturating_mul(i.into()))
+			// Standard Error: 339
+			.saturating_add(Weight::from_parts(101_017, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
 			.saturating_add(Weight::from_parts(0, 10).saturating_mul(i.into()))
@@ -157,11 +161,11 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// Proof: `Parameters::ParametersStorage` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	fn force_valid_distance_status() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `609`
-		//  Estimated: `6549`
-		// Minimum execution time: 24_084_000 picoseconds.
-		Weight::from_parts(25_424_000, 0)
-			.saturating_add(Weight::from_parts(0, 6549))
+		//  Measured:  `683`
+		//  Estimated: `6623`
+		// Minimum execution time: 24_071_000 picoseconds.
+		Weight::from_parts(25_326_000, 0)
+			.saturating_add(Weight::from_parts(0, 6623))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -169,8 +173,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 82_000 picoseconds.
-		Weight::from_parts(104_000, 0)
+		// Minimum execution time: 86_000 picoseconds.
+		Weight::from_parts(90_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `System::ParentHash` (r:1 w:0)
@@ -181,6 +185,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// Proof: `Distance::PendingEvaluationRequest` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `System::Account` (r:1 w:1)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Balances::Holds` (r:1 w:1)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
 	/// Storage: `Identity::Identities` (r:1 w:0)
 	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `Membership::Membership` (r:1 w:1)
@@ -193,13 +199,13 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// Proof: `Distance::EvaluationBlock` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	fn do_evaluation_success() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `973`
-		//  Estimated: `6913`
-		// Minimum execution time: 41_435_000 picoseconds.
-		Weight::from_parts(43_480_000, 0)
-			.saturating_add(Weight::from_parts(0, 6913))
-			.saturating_add(T::DbWeight::get().reads(9))
-			.saturating_add(T::DbWeight::get().writes(7))
+		//  Measured:  `1095`
+		//  Estimated: `7035`
+		// Minimum execution time: 52_191_000 picoseconds.
+		Weight::from_parts(53_918_000, 0)
+			.saturating_add(Weight::from_parts(0, 7035))
+			.saturating_add(T::DbWeight::get().reads(10))
+			.saturating_add(T::DbWeight::get().writes(8))
 	}
 	/// Storage: `System::ParentHash` (r:1 w:0)
 	/// Proof: `System::ParentHash` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
@@ -207,19 +213,21 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	/// Storage: `Distance::PendingEvaluationRequest` (r:1 w:1)
 	/// Proof: `Distance::PendingEvaluationRequest` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Balances::Holds` (r:1 w:1)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
 	/// Storage: `System::Account` (r:1 w:1)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	/// Storage: `Distance::EvaluationBlock` (r:0 w:1)
 	/// Proof: `Distance::EvaluationBlock` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	fn do_evaluation_failure() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `364`
-		//  Estimated: `3829`
-		// Minimum execution time: 21_085_000 picoseconds.
-		Weight::from_parts(22_071_000, 0)
-			.saturating_add(Weight::from_parts(0, 3829))
-			.saturating_add(T::DbWeight::get().reads(4))
-			.saturating_add(T::DbWeight::get().writes(4))
+		//  Measured:  `412`
+		//  Estimated: `3877`
+		// Minimum execution time: 24_181_000 picoseconds.
+		Weight::from_parts(25_353_000, 0)
+			.saturating_add(Weight::from_parts(0, 3877))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(5))
 	}
 	/// Storage: `System::ParentHash` (r:1 w:0)
 	/// Proof: `System::ParentHash` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
@@ -231,8 +239,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `109`
 		//  Estimated: `1594`
-		// Minimum execution time: 2_403_000 picoseconds.
-		Weight::from_parts(2_646_000, 0)
+		// Minimum execution time: 2_386_000 picoseconds.
+		Weight::from_parts(2_613_000, 0)
 			.saturating_add(Weight::from_parts(0, 1594))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -243,8 +251,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `133`
 		//  Estimated: `1618`
-		// Minimum execution time: 2_423_000 picoseconds.
-		Weight::from_parts(2_611_000, 0)
+		// Minimum execution time: 2_392_000 picoseconds.
+		Weight::from_parts(2_494_000, 0)
 			.saturating_add(Weight::from_parts(0, 1618))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/gdev/src/weights/pallet_duniter_account.rs b/runtime/gdev/src/weights/pallet_duniter_account.rs
new file mode 100644
index 000000000..7d92d2fc7
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_duniter_account.rs
@@ -0,0 +1,62 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_duniter_account`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_duniter_account`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_duniter_account::WeightInfo for WeightInfo<T> {
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn unlink_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `3558`
+		// Minimum execution time: 3_142_000 picoseconds.
+		Weight::from_parts(3_429_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/gdev/src/weights/pallet_grandpa.rs b/runtime/gdev/src/weights/pallet_grandpa.rs
new file mode 100644
index 000000000..3c6528f7f
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_grandpa.rs
@@ -0,0 +1,55 @@
+// Copyright 2021 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Manual weights for the GRANDPA Pallet in duniter runtimes
+//! This file was not auto-generated.
+
+use frame_support::{
+    traits::Get,
+    weights::{
+        constants::{WEIGHT_REF_TIME_PER_MICROS, WEIGHT_REF_TIME_PER_NANOS},
+        Weight,
+    },
+};
+use sp_std::marker::PhantomData;
+
+/// Weight functions for `pallet_grandpa`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_grandpa::WeightInfo for WeightInfo<T> {
+    fn report_equivocation(validator_count: u32, _p: u32) -> Weight {
+        // we take the validator set count from the membership proof to
+        // calculate the weight but we set a floor of 100 validators.
+        let validator_count = validator_count.max(100) as u64;
+
+        // checking membership proof
+        (Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 35)
+            .saturating_add(Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS, 0) * 175)
+            .saturating_mul(validator_count)
+            .saturating_add(T::DbWeight::get().reads(5))
+            // check equivocation proof
+            .saturating_add(Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 95)
+            // report offence
+            .saturating_add(Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 110)
+            .saturating_add(T::DbWeight::get().writes(3))
+            // fetching set id -> session index mappings
+            .saturating_add(T::DbWeight::get().reads(2))
+    }
+
+    fn note_stalled() -> Weight {
+        (Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 3)
+            .saturating_add(T::DbWeight::get().writes(1))
+    }
+}
diff --git a/runtime/common/src/weights/pallet_identity.rs b/runtime/gdev/src/weights/pallet_identity.rs
similarity index 83%
rename from runtime/common/src/weights/pallet_identity.rs
rename to runtime/gdev/src/weights/pallet_identity.rs
index 5b0f3d032..4b9e631f2 100644
--- a/runtime/common/src/weights/pallet_identity.rs
+++ b/runtime/gdev/src/weights/pallet_identity.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_identity`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-16, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -29,12 +29,12 @@
 // --chain=dev
 // --steps=50
 // --repeat=20
-// --pallet=pallet-identity
+// --pallet=*
 // --extrinsic=*
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/gdev/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -71,11 +71,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
 	fn create_identity() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1070`
-		//  Estimated: `7010`
-		// Minimum execution time: 64_979_000 picoseconds.
-		Weight::from_parts(66_407_000, 0)
-			.saturating_add(Weight::from_parts(0, 7010))
+		//  Measured:  `1210`
+		//  Estimated: `7150`
+		// Minimum execution time: 63_755_000 picoseconds.
+		Weight::from_parts(65_972_000, 0)
+			.saturating_add(Weight::from_parts(0, 7150))
 			.saturating_add(T::DbWeight::get().reads(13))
 			.saturating_add(T::DbWeight::get().writes(12))
 	}
@@ -89,11 +89,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn confirm_identity() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `698`
-		//  Estimated: `6638`
-		// Minimum execution time: 28_030_000 picoseconds.
-		Weight::from_parts(29_442_000, 0)
-			.saturating_add(Weight::from_parts(0, 6638))
+		//  Measured:  `822`
+		//  Estimated: `6762`
+		// Minimum execution time: 27_709_000 picoseconds.
+		Weight::from_parts(28_874_000, 0)
+			.saturating_add(Weight::from_parts(0, 6762))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(4))
 	}
@@ -107,11 +107,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	fn change_owner_key() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `723`
-		//  Estimated: `6663`
-		// Minimum execution time: 73_717_000 picoseconds.
-		Weight::from_parts(75_195_000, 0)
-			.saturating_add(Weight::from_parts(0, 6663))
+		//  Measured:  `793`
+		//  Estimated: `6733`
+		// Minimum execution time: 72_726_000 picoseconds.
+		Weight::from_parts(74_734_000, 0)
+			.saturating_add(Weight::from_parts(0, 6733))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(5))
 	}
@@ -127,11 +127,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
 	fn revoke_identity() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `664`
-		//  Estimated: `6604`
-		// Minimum execution time: 64_566_000 picoseconds.
-		Weight::from_parts(65_978_000, 0)
-			.saturating_add(Weight::from_parts(0, 6604))
+		//  Measured:  `731`
+		//  Estimated: `6671`
+		// Minimum execution time: 63_179_000 picoseconds.
+		Weight::from_parts(65_652_000, 0)
+			.saturating_add(Weight::from_parts(0, 6671))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(5))
 	}
@@ -142,11 +142,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_611_000 picoseconds.
-		Weight::from_parts(3_788_000, 0)
+		// Minimum execution time: 3_551_000 picoseconds.
+		Weight::from_parts(3_777_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_076
-			.saturating_add(Weight::from_parts(1_174_325, 0).saturating_mul(i.into()))
+			// Standard Error: 1_667
+			.saturating_add(Weight::from_parts(1_228_704, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes(1))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
@@ -156,8 +156,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `104`
 		//  Estimated: `3558`
-		// Minimum execution time: 6_271_000 picoseconds.
-		Weight::from_parts(6_529_000, 0)
+		// Minimum execution time: 6_209_000 picoseconds.
+		Weight::from_parts(6_452_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -170,11 +170,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	fn link_account() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `403`
-		//  Estimated: `3868`
-		// Minimum execution time: 50_535_000 picoseconds.
-		Weight::from_parts(51_906_000, 0)
-			.saturating_add(Weight::from_parts(0, 3868))
+		//  Measured:  `436`
+		//  Estimated: `3901`
+		// Minimum execution time: 50_381_000 picoseconds.
+		Weight::from_parts(51_963_000, 0)
+			.saturating_add(Weight::from_parts(0, 3901))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -182,19 +182,19 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 83_000 picoseconds.
-		Weight::from_parts(107_000, 0)
+		// Minimum execution time: 92_000 picoseconds.
+		Weight::from_parts(95_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Identity::Identities` (r:1 w:0)
 	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn do_revoke_identity_noop() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `302`
-		//  Estimated: `3767`
-		// Minimum execution time: 3_424_000 picoseconds.
-		Weight::from_parts(3_629_000, 0)
-			.saturating_add(Weight::from_parts(0, 3767))
+		//  Measured:  `360`
+		//  Estimated: `3825`
+		// Minimum execution time: 3_437_000 picoseconds.
+		Weight::from_parts(3_751_000, 0)
+			.saturating_add(Weight::from_parts(0, 3825))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Identity::Identities` (r:1 w:1)
@@ -209,7 +209,7 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
 	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
-	/// Storage: `SmithMembers::Smiths` (r:3 w:3)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
 	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
 	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -229,23 +229,23 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn do_revoke_identity() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1555`
-		//  Estimated: `9970`
-		// Minimum execution time: 81_169_000 picoseconds.
-		Weight::from_parts(83_252_000, 0)
-			.saturating_add(Weight::from_parts(0, 9970))
-			.saturating_add(T::DbWeight::get().reads(16))
-			.saturating_add(T::DbWeight::get().writes(20))
+		//  Measured:  `1931`
+		//  Estimated: `15296`
+		// Minimum execution time: 93_661_000 picoseconds.
+		Weight::from_parts(97_130_000, 0)
+			.saturating_add(Weight::from_parts(0, 15296))
+			.saturating_add(T::DbWeight::get().reads(18))
+			.saturating_add(T::DbWeight::get().writes(22))
 	}
 	/// Storage: `Identity::Identities` (r:1 w:0)
 	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn do_remove_identity_noop() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `302`
-		//  Estimated: `3767`
-		// Minimum execution time: 3_406_000 picoseconds.
-		Weight::from_parts(3_698_000, 0)
-			.saturating_add(Weight::from_parts(0, 3767))
+		//  Measured:  `360`
+		//  Estimated: `3825`
+		// Minimum execution time: 3_702_000 picoseconds.
+		Weight::from_parts(3_942_000, 0)
+			.saturating_add(Weight::from_parts(0, 3825))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Identity::Identities` (r:1 w:1)
@@ -260,7 +260,7 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
 	/// Storage: `Membership::MembershipsExpireOn` (r:1 w:1)
 	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
-	/// Storage: `SmithMembers::Smiths` (r:3 w:3)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
 	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
 	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -274,7 +274,7 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
 	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
-	/// Storage: `Certification::StorageIdtyCertMeta` (r:4 w:4)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:6 w:6)
 	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `Parameters::ParametersStorage` (r:1 w:0)
 	/// Proof: `Parameters::ParametersStorage` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
@@ -286,13 +286,13 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn do_remove_identity() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1990`
-		//  Estimated: `12880`
-		// Minimum execution time: 110_128_000 picoseconds.
-		Weight::from_parts(113_248_000, 0)
-			.saturating_add(Weight::from_parts(0, 12880))
-			.saturating_add(T::DbWeight::get().reads(21))
-			.saturating_add(T::DbWeight::get().writes(26))
+		//  Measured:  `2466`
+		//  Estimated: `18306`
+		// Minimum execution time: 131_579_000 picoseconds.
+		Weight::from_parts(134_923_000, 0)
+			.saturating_add(Weight::from_parts(0, 18306))
+			.saturating_add(T::DbWeight::get().reads(25))
+			.saturating_add(T::DbWeight::get().writes(30))
 	}
 	/// Storage: `Membership::Membership` (r:1 w:1)
 	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -306,7 +306,7 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
 	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
-	/// Storage: `SmithMembers::Smiths` (r:3 w:3)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
 	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
 	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -322,7 +322,7 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
 	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
-	/// Storage: `Certification::StorageIdtyCertMeta` (r:4 w:4)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:6 w:6)
 	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `Parameters::ParametersStorage` (r:1 w:0)
 	/// Proof: `Parameters::ParametersStorage` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
@@ -332,13 +332,13 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn do_remove_identity_handler() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1999`
-		//  Estimated: `12889`
-		// Minimum execution time: 106_877_000 picoseconds.
-		Weight::from_parts(111_899_000, 0)
-			.saturating_add(Weight::from_parts(0, 12889))
-			.saturating_add(T::DbWeight::get().reads(22))
-			.saturating_add(T::DbWeight::get().writes(25))
+		//  Measured:  `2483`
+		//  Estimated: `18323`
+		// Minimum execution time: 129_820_000 picoseconds.
+		Weight::from_parts(134_186_000, 0)
+			.saturating_add(Weight::from_parts(0, 18323))
+			.saturating_add(T::DbWeight::get().reads(26))
+			.saturating_add(T::DbWeight::get().writes(29))
 	}
 	/// Storage: `Identity::Identities` (r:1 w:1)
 	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -346,11 +346,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn membership_removed() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `407`
-		//  Estimated: `6347`
-		// Minimum execution time: 14_063_000 picoseconds.
-		Weight::from_parts(14_485_000, 0)
-			.saturating_add(Weight::from_parts(0, 6347))
+		//  Measured:  `441`
+		//  Estimated: `6381`
+		// Minimum execution time: 13_782_000 picoseconds.
+		Weight::from_parts(14_233_000, 0)
+			.saturating_add(Weight::from_parts(0, 6381))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -358,11 +358,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn prune_identities_noop() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `157`
-		//  Estimated: `3622`
-		// Minimum execution time: 2_535_000 picoseconds.
-		Weight::from_parts(2_722_000, 0)
-			.saturating_add(Weight::from_parts(0, 3622))
+		//  Measured:  `165`
+		//  Estimated: `3630`
+		// Minimum execution time: 2_449_000 picoseconds.
+		Weight::from_parts(2_879_000, 0)
+			.saturating_add(Weight::from_parts(0, 3630))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Identity::IdentityChangeSchedule` (r:1 w:1)
@@ -371,11 +371,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn prune_identities_none() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `327`
-		//  Estimated: `3792`
-		// Minimum execution time: 5_830_000 picoseconds.
-		Weight::from_parts(6_226_000, 0)
-			.saturating_add(Weight::from_parts(0, 3792))
+		//  Measured:  `362`
+		//  Estimated: `3827`
+		// Minimum execution time: 5_518_000 picoseconds.
+		Weight::from_parts(5_812_000, 0)
+			.saturating_add(Weight::from_parts(0, 3827))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -397,11 +397,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
 	fn prune_identities_err() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `851`
-		//  Estimated: `4316`
-		// Minimum execution time: 29_919_000 picoseconds.
-		Weight::from_parts(30_964_000, 0)
-			.saturating_add(Weight::from_parts(0, 4316))
+		//  Measured:  `952`
+		//  Estimated: `4417`
+		// Minimum execution time: 29_085_000 picoseconds.
+		Weight::from_parts(30_789_000, 0)
+			.saturating_add(Weight::from_parts(0, 4417))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(7))
 	}
diff --git a/runtime/common/src/weights/pallet_im_online.rs b/runtime/gdev/src/weights/pallet_im_online.rs
similarity index 90%
rename from runtime/common/src/weights/pallet_im_online.rs
rename to runtime/gdev/src/weights/pallet_im_online.rs
index ce863fb2a..b046244f9 100644
--- a/runtime/common/src/weights/pallet_im_online.rs
+++ b/runtime/gdev/src/weights/pallet_im_online.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_im_online`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/gdev/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -62,13 +62,13 @@ impl<T: frame_system::Config> pallet_im_online::WeightInfo for WeightInfo<T> {
 	/// The range of component `k` is `[1, 1000]`.
 	fn validate_unsigned_and_then_heartbeat(k: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `603 + k * (32 ±0)`
+		//  Measured:  `636 + k * (32 ±0)`
 		//  Estimated: `33487 + k * (1761 ±0)`
-		// Minimum execution time: 51_245_000 picoseconds.
-		Weight::from_parts(65_147_264, 0)
+		// Minimum execution time: 50_974_000 picoseconds.
+		Weight::from_parts(75_605_803, 0)
 			.saturating_add(Weight::from_parts(0, 33487))
-			// Standard Error: 668
-			.saturating_add(Weight::from_parts(42_079, 0).saturating_mul(k.into()))
+			// Standard Error: 843
+			.saturating_add(Weight::from_parts(49_755, 0).saturating_mul(k.into()))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(1))
 			.saturating_add(Weight::from_parts(0, 1761).saturating_mul(k.into()))
diff --git a/runtime/gdev/src/weights/pallet_membership.rs b/runtime/gdev/src/weights/pallet_membership.rs
new file mode 100644
index 000000000..a76ffa7cf
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_membership.rs
@@ -0,0 +1,102 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_membership`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_membership`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
+	fn on_initialize() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 86_000 picoseconds.
+		Weight::from_parts(95_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `Membership::MembershipsExpireOn` (r:2 w:2)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:3 w:3)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::CounterForMembership` (r:1 w:1)
+	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Identity::Identities` (r:3 w:3)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:3 w:3)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:3 w:3)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:3 w:3)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:12)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[0, 3]`.
+	fn expire_memberships(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `139 + i * (993 ±0)`
+		//  Estimated: `15060 + i * (2695 ±1)`
+		// Minimum execution time: 3_854_000 picoseconds.
+		Weight::from_parts(10_595_040, 0)
+			.saturating_add(Weight::from_parts(0, 15060))
+			// Standard Error: 458_458
+			.saturating_add(Weight::from_parts(68_448_630, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().reads((11_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(T::DbWeight::get().writes((15_u64).saturating_mul(i.into())))
+			.saturating_add(Weight::from_parts(0, 2695).saturating_mul(i.into()))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_multisig.rs b/runtime/gdev/src/weights/pallet_multisig.rs
similarity index 77%
rename from runtime/common/src/weights/pallet_multisig.rs
rename to runtime/gdev/src/weights/pallet_multisig.rs
index 3a02f9907..cb35d58c8 100644
--- a/runtime/common/src/weights/pallet_multisig.rs
+++ b/runtime/gdev/src/weights/pallet_multisig.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_multisig`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/gdev/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -52,11 +52,11 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_700_000 picoseconds.
-		Weight::from_parts(5_031_868, 0)
+		// Minimum execution time: 4_885_000 picoseconds.
+		Weight::from_parts(5_163_834, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1
-			.saturating_add(Weight::from_parts(336, 0).saturating_mul(z.into()))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(324, 0).saturating_mul(z.into()))
 	}
 	/// Storage: `Multisig::Multisigs` (r:1 w:1)
 	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
@@ -66,13 +66,13 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `125 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 22_870_000 picoseconds.
-		Weight::from_parts(22_165_477, 0)
+		// Minimum execution time: 23_887_000 picoseconds.
+		Weight::from_parts(24_407_541, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_814
-			.saturating_add(Weight::from_parts(182_402, 0).saturating_mul(s.into()))
-			// Standard Error: 5
-			.saturating_add(Weight::from_parts(1_093, 0).saturating_mul(z.into()))
+			// Standard Error: 10_776
+			.saturating_add(Weight::from_parts(127_128, 0).saturating_mul(s.into()))
+			// Standard Error: 9
+			.saturating_add(Weight::from_parts(1_041, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -84,13 +84,13 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `240`
 		//  Estimated: `3922`
-		// Minimum execution time: 13_557_000 picoseconds.
-		Weight::from_parts(12_644_271, 0)
+		// Minimum execution time: 13_430_000 picoseconds.
+		Weight::from_parts(12_777_050, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 4_239
-			.saturating_add(Weight::from_parts(139_896, 0).saturating_mul(s.into()))
-			// Standard Error: 3
-			.saturating_add(Weight::from_parts(1_080, 0).saturating_mul(z.into()))
+			// Standard Error: 6_206
+			.saturating_add(Weight::from_parts(169_475, 0).saturating_mul(s.into()))
+			// Standard Error: 4
+			.saturating_add(Weight::from_parts(1_064, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -104,13 +104,13 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `259 + s * (37 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 25_742_000 picoseconds.
-		Weight::from_parts(25_260_018, 0)
+		// Minimum execution time: 26_345_000 picoseconds.
+		Weight::from_parts(26_642_089, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_601
-			.saturating_add(Weight::from_parts(190_696, 0).saturating_mul(s.into()))
-			// Standard Error: 4
-			.saturating_add(Weight::from_parts(1_084, 0).saturating_mul(z.into()))
+			// Standard Error: 11_220
+			.saturating_add(Weight::from_parts(133_834, 0).saturating_mul(s.into()))
+			// Standard Error: 9
+			.saturating_add(Weight::from_parts(1_075, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -121,11 +121,11 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `130 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 20_342_000 picoseconds.
-		Weight::from_parts(22_035_094, 0)
+		// Minimum execution time: 21_577_000 picoseconds.
+		Weight::from_parts(23_354_772, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_918
-			.saturating_add(Weight::from_parts(100_249, 0).saturating_mul(s.into()))
+			// Standard Error: 8_706
+			.saturating_add(Weight::from_parts(151_033, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -136,11 +136,11 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `240`
 		//  Estimated: `3922`
-		// Minimum execution time: 11_121_000 picoseconds.
-		Weight::from_parts(12_140_243, 0)
+		// Minimum execution time: 11_607_000 picoseconds.
+		Weight::from_parts(12_512_906, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 3_270
-			.saturating_add(Weight::from_parts(129_148, 0).saturating_mul(s.into()))
+			// Standard Error: 5_757
+			.saturating_add(Weight::from_parts(115_318, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -151,11 +151,11 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `328 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 21_577_000 picoseconds.
-		Weight::from_parts(22_824_830, 0)
+		// Minimum execution time: 21_975_000 picoseconds.
+		Weight::from_parts(23_346_279, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_043
-			.saturating_add(Weight::from_parts(157_777, 0).saturating_mul(s.into()))
+			// Standard Error: 8_763
+			.saturating_add(Weight::from_parts(158_838, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/gdev/src/weights/pallet_oneshot_account.rs b/runtime/gdev/src/weights/pallet_oneshot_account.rs
new file mode 100644
index 000000000..cab2d7325
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_oneshot_account.rs
@@ -0,0 +1,94 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_oneshot_account`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_oneshot_account`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<T> {
+	/// Storage: `OneshotAccount::OneshotAccounts` (r:1 w:1)
+	/// Proof: `OneshotAccount::OneshotAccounts` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn create_oneshot_account() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `42`
+		//  Estimated: `3507`
+		// Minimum execution time: 17_976_000 picoseconds.
+		Weight::from_parts(19_089_000, 0)
+			.saturating_add(Weight::from_parts(0, 3507))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `OneshotAccount::OneshotAccounts` (r:1 w:1)
+	/// Proof: `OneshotAccount::OneshotAccounts` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::BlockHash` (r:1 w:0)
+	/// Proof: `System::BlockHash` (`max_values`: None, `max_size`: Some(44), added: 2519, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn consume_oneshot_account() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `241`
+		//  Estimated: `3706`
+		// Minimum execution time: 25_474_000 picoseconds.
+		Weight::from_parts(26_356_000, 0)
+			.saturating_add(Weight::from_parts(0, 3706))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `OneshotAccount::OneshotAccounts` (r:1 w:1)
+	/// Proof: `OneshotAccount::OneshotAccounts` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::BlockHash` (r:1 w:0)
+	/// Proof: `System::BlockHash` (`max_values`: None, `max_size`: Some(44), added: 2519, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn consume_oneshot_account_with_remaining() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `301`
+		//  Estimated: `6126`
+		// Minimum execution time: 37_773_000 picoseconds.
+		Weight::from_parts(39_396_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_preimage.rs b/runtime/gdev/src/weights/pallet_preimage.rs
similarity index 88%
rename from runtime/common/src/weights/pallet_preimage.rs
rename to runtime/gdev/src/weights/pallet_preimage.rs
index 3b548577f..b39d8dad6 100644
--- a/runtime/common/src/weights/pallet_preimage.rs
+++ b/runtime/gdev/src/weights/pallet_preimage.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_preimage`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/gdev/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -58,11 +58,11 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `42`
 		//  Estimated: `3548`
-		// Minimum execution time: 10_457_000 picoseconds.
-		Weight::from_parts(11_037_000, 0)
+		// Minimum execution time: 10_965_000 picoseconds.
+		Weight::from_parts(11_178_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_322, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_332, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -77,11 +77,11 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 12_718_000 picoseconds.
-		Weight::from_parts(13_125_000, 0)
+		// Minimum execution time: 12_404_000 picoseconds.
+		Weight::from_parts(12_736_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
-			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_317, 0).saturating_mul(s.into()))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(1_334, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -96,11 +96,11 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 11_424_000 picoseconds.
-		Weight::from_parts(11_595_000, 0)
+		// Minimum execution time: 11_349_000 picoseconds.
+		Weight::from_parts(11_717_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_402, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_419, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -114,8 +114,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `172`
 		//  Estimated: `3548`
-		// Minimum execution time: 21_436_000 picoseconds.
-		Weight::from_parts(23_457_000, 0)
+		// Minimum execution time: 23_112_000 picoseconds.
+		Weight::from_parts(24_757_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -130,8 +130,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `144`
 		//  Estimated: `3548`
-		// Minimum execution time: 22_815_000 picoseconds.
-		Weight::from_parts(25_024_000, 0)
+		// Minimum execution time: 22_064_000 picoseconds.
+		Weight::from_parts(24_675_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -144,8 +144,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `172`
 		//  Estimated: `3548`
-		// Minimum execution time: 20_222_000 picoseconds.
-		Weight::from_parts(22_476_000, 0)
+		// Minimum execution time: 20_968_000 picoseconds.
+		Weight::from_parts(23_523_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -158,8 +158,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `144`
 		//  Estimated: `3548`
-		// Minimum execution time: 12_916_000 picoseconds.
-		Weight::from_parts(14_899_000, 0)
+		// Minimum execution time: 13_825_000 picoseconds.
+		Weight::from_parts(15_628_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -172,8 +172,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `42`
 		//  Estimated: `3548`
-		// Minimum execution time: 9_655_000 picoseconds.
-		Weight::from_parts(10_358_000, 0)
+		// Minimum execution time: 9_813_000 picoseconds.
+		Weight::from_parts(11_342_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -186,8 +186,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 6_793_000 picoseconds.
-		Weight::from_parts(7_733_000, 0)
+		// Minimum execution time: 6_661_000 picoseconds.
+		Weight::from_parts(7_907_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -202,8 +202,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `144`
 		//  Estimated: `3548`
-		// Minimum execution time: 20_945_000 picoseconds.
-		Weight::from_parts(22_280_000, 0)
+		// Minimum execution time: 20_627_000 picoseconds.
+		Weight::from_parts(22_459_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -216,8 +216,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 6_661_000 picoseconds.
-		Weight::from_parts(7_650_000, 0)
+		// Minimum execution time: 6_603_000 picoseconds.
+		Weight::from_parts(7_821_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -230,8 +230,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 6_583_000 picoseconds.
-		Weight::from_parts(7_274_000, 0)
+		// Minimum execution time: 6_598_000 picoseconds.
+		Weight::from_parts(7_509_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -247,11 +247,11 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0 + n * (179 ±0)`
 		//  Estimated: `990 + n * (2568 ±0)`
-		// Minimum execution time: 16_145_000 picoseconds.
-		Weight::from_parts(16_720_000, 0)
+		// Minimum execution time: 15_884_000 picoseconds.
+		Weight::from_parts(16_545_000, 0)
 			.saturating_add(Weight::from_parts(0, 990))
-			// Standard Error: 17_095
-			.saturating_add(Weight::from_parts(13_483_623, 0).saturating_mul(n.into()))
+			// Standard Error: 20_372
+			.saturating_add(Weight::from_parts(13_661_587, 0).saturating_mul(n.into()))
 			.saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(n.into())))
 			.saturating_add(T::DbWeight::get().writes((3_u64).saturating_mul(n.into())))
 			.saturating_add(Weight::from_parts(0, 2568).saturating_mul(n.into()))
diff --git a/runtime/gdev/src/weights/pallet_provide_randomness.rs b/runtime/gdev/src/weights/pallet_provide_randomness.rs
new file mode 100644
index 000000000..d10f60f62
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_provide_randomness.rs
@@ -0,0 +1,132 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_provide_randomness`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_provide_randomness`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_provide_randomness::WeightInfo for WeightInfo<T> {
+	/// Storage: `ProvideRandomness::CounterForRequestsIds` (r:1 w:1)
+	/// Proof: `ProvideRandomness::CounterForRequestsIds` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `ProvideRandomness::RequestIdProvider` (r:1 w:1)
+	/// Proof: `ProvideRandomness::RequestIdProvider` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `ProvideRandomness::RequestsIds` (r:1 w:1)
+	/// Proof: `ProvideRandomness::RequestsIds` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Babe::EpochIndex` (r:1 w:0)
+	/// Proof: `Babe::EpochIndex` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `ProvideRandomness::NexEpochHookIn` (r:1 w:0)
+	/// Proof: `ProvideRandomness::NexEpochHookIn` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `ProvideRandomness::RequestsReadyAtEpoch` (r:1 w:1)
+	/// Proof: `ProvideRandomness::RequestsReadyAtEpoch` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn request() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `298`
+		//  Estimated: `3763`
+		// Minimum execution time: 37_063_000 picoseconds.
+		Weight::from_parts(38_803_000, 0)
+			.saturating_add(Weight::from_parts(0, 3763))
+			.saturating_add(T::DbWeight::get().reads(7))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
+	/// Storage: `ProvideRandomness::RequestsReadyAtNextBlock` (r:1 w:1)
+	/// Proof: `ProvideRandomness::RequestsReadyAtNextBlock` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Babe::AuthorVrfRandomness` (r:1 w:0)
+	/// Proof: `Babe::AuthorVrfRandomness` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`)
+	/// Storage: `ProvideRandomness::RequestsIds` (r:100 w:100)
+	/// Proof: `ProvideRandomness::RequestsIds` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `ProvideRandomness::CounterForRequestsIds` (r:1 w:1)
+	/// Proof: `ProvideRandomness::CounterForRequestsIds` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `ProvideRandomness::NexEpochHookIn` (r:1 w:1)
+	/// Proof: `ProvideRandomness::NexEpochHookIn` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[1, 100]`.
+	fn on_initialize(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `341 + i * (59 ±0)`
+		//  Estimated: `1827 + i * (2535 ±0)`
+		// Minimum execution time: 14_195_000 picoseconds.
+		Weight::from_parts(11_683_191, 0)
+			.saturating_add(Weight::from_parts(0, 1827))
+			// Standard Error: 6_956
+			.saturating_add(Weight::from_parts(4_888_481, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
+			.saturating_add(Weight::from_parts(0, 2535).saturating_mul(i.into()))
+	}
+	/// Storage: `ProvideRandomness::RequestsReadyAtNextBlock` (r:1 w:0)
+	/// Proof: `ProvideRandomness::RequestsReadyAtNextBlock` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `ProvideRandomness::NexEpochHookIn` (r:1 w:1)
+	/// Proof: `ProvideRandomness::NexEpochHookIn` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Babe::EpochIndex` (r:1 w:0)
+	/// Proof: `Babe::EpochIndex` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `ProvideRandomness::RequestsReadyAtEpoch` (r:1 w:1)
+	/// Proof: `ProvideRandomness::RequestsReadyAtEpoch` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Babe::NextRandomness` (r:1 w:0)
+	/// Proof: `Babe::NextRandomness` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	/// Storage: `Babe::EpochStart` (r:1 w:0)
+	/// Proof: `Babe::EpochStart` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `ProvideRandomness::RequestsIds` (r:100 w:100)
+	/// Proof: `ProvideRandomness::RequestsIds` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `ProvideRandomness::CounterForRequestsIds` (r:1 w:1)
+	/// Proof: `ProvideRandomness::CounterForRequestsIds` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// The range of component `i` is `[1, 100]`.
+	fn on_initialize_epoch(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `351 + i * (59 ±0)`
+		//  Estimated: `3817 + i * (2535 ±0)`
+		// Minimum execution time: 15_917_000 picoseconds.
+		Weight::from_parts(15_434_151, 0)
+			.saturating_add(Weight::from_parts(0, 3817))
+			// Standard Error: 6_197
+			.saturating_add(Weight::from_parts(5_205_708, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(7))
+			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
+			.saturating_add(Weight::from_parts(0, 2535).saturating_mul(i.into()))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_proxy.rs b/runtime/gdev/src/weights/pallet_proxy.rs
similarity index 77%
rename from runtime/common/src/weights/pallet_proxy.rs
rename to runtime/gdev/src/weights/pallet_proxy.rs
index 315bf051c..0f7da5a1a 100644
--- a/runtime/common/src/weights/pallet_proxy.rs
+++ b/runtime/gdev/src/weights/pallet_proxy.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/gdev/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -54,11 +54,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `157 + p * (37 ±0)`
 		//  Estimated: `4698`
-		// Minimum execution time: 10_587_000 picoseconds.
-		Weight::from_parts(11_927_836, 0)
+		// Minimum execution time: 11_070_000 picoseconds.
+		Weight::from_parts(12_119_768, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_371
-			.saturating_add(Weight::from_parts(22_824, 0).saturating_mul(p.into()))
+			// Standard Error: 1_847
+			.saturating_add(Weight::from_parts(20_331, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -73,13 +73,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `399 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 26_005_000 picoseconds.
-		Weight::from_parts(26_650_052, 0)
+		// Minimum execution time: 27_651_000 picoseconds.
+		Weight::from_parts(28_291_472, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_871
-			.saturating_add(Weight::from_parts(128_419, 0).saturating_mul(a.into()))
-			// Standard Error: 1_933
-			.saturating_add(Weight::from_parts(32_266, 0).saturating_mul(p.into()))
+			// Standard Error: 2_169
+			.saturating_add(Weight::from_parts(133_280, 0).saturating_mul(a.into()))
+			// Standard Error: 2_241
+			.saturating_add(Weight::from_parts(30_021, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -93,13 +93,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `322 + a * (68 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 17_219_000 picoseconds.
-		Weight::from_parts(18_205_164, 0)
+		// Minimum execution time: 18_713_000 picoseconds.
+		Weight::from_parts(19_625_841, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_493
-			.saturating_add(Weight::from_parts(122_565, 0).saturating_mul(a.into()))
-			// Standard Error: 1_543
-			.saturating_add(Weight::from_parts(8_216, 0).saturating_mul(p.into()))
+			// Standard Error: 2_067
+			.saturating_add(Weight::from_parts(130_182, 0).saturating_mul(a.into()))
+			// Standard Error: 2_136
+			.saturating_add(Weight::from_parts(9_144, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -113,13 +113,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `322 + a * (68 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 17_268_000 picoseconds.
-		Weight::from_parts(18_015_864, 0)
+		// Minimum execution time: 18_291_000 picoseconds.
+		Weight::from_parts(19_587_252, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_421
-			.saturating_add(Weight::from_parts(120_331, 0).saturating_mul(a.into()))
-			// Standard Error: 1_468
-			.saturating_add(Weight::from_parts(8_881, 0).saturating_mul(p.into()))
+			// Standard Error: 1_825
+			.saturating_add(Weight::from_parts(128_243, 0).saturating_mul(a.into()))
+			// Standard Error: 1_886
+			.saturating_add(Weight::from_parts(3_883, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -135,13 +135,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `331 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 23_803_000 picoseconds.
-		Weight::from_parts(23_771_521, 0)
+		// Minimum execution time: 24_895_000 picoseconds.
+		Weight::from_parts(24_976_741, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_323
-			.saturating_add(Weight::from_parts(125_762, 0).saturating_mul(a.into()))
-			// Standard Error: 1_367
-			.saturating_add(Weight::from_parts(35_700, 0).saturating_mul(p.into()))
+			// Standard Error: 2_189
+			.saturating_add(Weight::from_parts(135_529, 0).saturating_mul(a.into()))
+			// Standard Error: 2_262
+			.saturating_add(Weight::from_parts(41_968, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -152,11 +152,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `157 + p * (37 ±0)`
 		//  Estimated: `4698`
-		// Minimum execution time: 16_406_000 picoseconds.
-		Weight::from_parts(17_515_617, 0)
+		// Minimum execution time: 17_723_000 picoseconds.
+		Weight::from_parts(18_868_043, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_411
-			.saturating_add(Weight::from_parts(38_705, 0).saturating_mul(p.into()))
+			// Standard Error: 2_172
+			.saturating_add(Weight::from_parts(28_104, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -167,11 +167,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `157 + p * (37 ±0)`
 		//  Estimated: `4698`
-		// Minimum execution time: 16_194_000 picoseconds.
-		Weight::from_parts(17_532_724, 0)
+		// Minimum execution time: 17_791_000 picoseconds.
+		Weight::from_parts(18_895_124, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 2_309
-			.saturating_add(Weight::from_parts(51_908, 0).saturating_mul(p.into()))
+			// Standard Error: 2_280
+			.saturating_add(Weight::from_parts(37_965, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -182,11 +182,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `157 + p * (37 ±0)`
 		//  Estimated: `4698`
-		// Minimum execution time: 16_020_000 picoseconds.
-		Weight::from_parts(17_245_545, 0)
+		// Minimum execution time: 16_013_000 picoseconds.
+		Weight::from_parts(17_497_836, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_555
-			.saturating_add(Weight::from_parts(16_291, 0).saturating_mul(p.into()))
+			// Standard Error: 2_055
+			.saturating_add(Weight::from_parts(16_393, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -197,11 +197,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `177`
 		//  Estimated: `4698`
-		// Minimum execution time: 17_534_000 picoseconds.
-		Weight::from_parts(18_700_319, 0)
+		// Minimum execution time: 18_465_000 picoseconds.
+		Weight::from_parts(19_967_358, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_342
-			.saturating_add(Weight::from_parts(10_675, 0).saturating_mul(p.into()))
+			// Standard Error: 1_799
+			.saturating_add(Weight::from_parts(3_485, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -212,11 +212,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `194 + p * (37 ±0)`
 		//  Estimated: `4698`
-		// Minimum execution time: 16_577_000 picoseconds.
-		Weight::from_parts(17_708_748, 0)
+		// Minimum execution time: 16_701_000 picoseconds.
+		Weight::from_parts(17_981_132, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_458
-			.saturating_add(Weight::from_parts(25_279, 0).saturating_mul(p.into()))
+			// Standard Error: 2_113
+			.saturating_add(Weight::from_parts(28_850, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/gdev/src/weights/pallet_quota.rs b/runtime/gdev/src/weights/pallet_quota.rs
new file mode 100644
index 000000000..16c5f9a99
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_quota.rs
@@ -0,0 +1,133 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_quota`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_quota`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
+	/// Storage: `Quota::RefundQueue` (r:1 w:1)
+	/// Proof: `Quota::RefundQueue` (`max_values`: Some(1), `max_size`: Some(11266), added: 11761, mode: `MaxEncodedLen`)
+	fn queue_refund() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `11288`
+		//  Estimated: `12751`
+		// Minimum execution time: 8_185_000 picoseconds.
+		Weight::from_parts(8_447_000, 0)
+			.saturating_add(Weight::from_parts(0, 12751))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Quota::IdtyQuota` (r:1 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	fn spend_quota() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `172`
+		//  Estimated: `3489`
+		// Minimum execution time: 4_625_000 picoseconds.
+		Weight::from_parts(4_937_000, 0)
+			.saturating_add(Weight::from_parts(0, 3489))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Quota::IdtyQuota` (r:1 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn try_refund() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `235`
+		//  Estimated: `6126`
+		// Minimum execution time: 21_791_000 picoseconds.
+		Weight::from_parts(22_677_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Quota::IdtyQuota` (r:1 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn do_refund() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `235`
+		//  Estimated: `6126`
+		// Minimum execution time: 21_712_000 picoseconds.
+		Weight::from_parts(22_343_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Quota::RefundQueue` (r:1 w:1)
+	/// Proof: `Quota::RefundQueue` (`max_values`: Some(1), `max_size`: Some(11266), added: 11761, mode: `MaxEncodedLen`)
+	fn on_process_refund_queue() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `43`
+		//  Estimated: `12751`
+		// Minimum execution time: 1_816_000 picoseconds.
+		Weight::from_parts(1_967_000, 0)
+			.saturating_add(Weight::from_parts(0, 12751))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Quota::RefundQueue` (r:1 w:1)
+	/// Proof: `Quota::RefundQueue` (`max_values`: Some(1), `max_size`: Some(11266), added: 11761, mode: `MaxEncodedLen`)
+	/// Storage: `Quota::IdtyQuota` (r:1 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `i` is `[1, 256]`.
+	fn on_process_refund_queue_elements(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `260 + i * (44 ±0)`
+		//  Estimated: `12751`
+		// Minimum execution time: 24_633_000 picoseconds.
+		Weight::from_parts(38_035_610, 0)
+			.saturating_add(Weight::from_parts(0, 12751))
+			// Standard Error: 1_487
+			.saturating_add(Weight::from_parts(1_184_180, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+}
diff --git a/runtime/gdev/src/weights/pallet_scheduler.rs b/runtime/gdev/src/weights/pallet_scheduler.rs
new file mode 100644
index 000000000..77cabf1bc
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_scheduler.rs
@@ -0,0 +1,286 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_scheduler`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_scheduler`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
+	/// Storage: `Scheduler::IncompleteSince` (r:1 w:1)
+	/// Proof: `Scheduler::IncompleteSince` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	fn service_agendas_base() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `30`
+		//  Estimated: `1489`
+		// Minimum execution time: 2_213_000 picoseconds.
+		Weight::from_parts(2_404_000, 0)
+			.saturating_add(Weight::from_parts(0, 1489))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Scheduler::Agenda` (r:1 w:1)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[0, 50]`.
+	fn service_agenda_base(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `77 + s * (177 ±0)`
+		//  Estimated: `13928`
+		// Minimum execution time: 2_652_000 picoseconds.
+		Weight::from_parts(5_311_394, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			// Standard Error: 1_521
+			.saturating_add(Weight::from_parts(286_132, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn service_task_base() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 2_080_000 picoseconds.
+		Weight::from_parts(2_280_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `Preimage::PreimageFor` (r:1 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[128, 4194304]`.
+	fn service_task_fetched(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `179 + s * (1 ±0)`
+		//  Estimated: `4197809`
+		// Minimum execution time: 13_455_000 picoseconds.
+		Weight::from_parts(13_923_000, 0)
+			.saturating_add(Weight::from_parts(0, 4197809))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(866, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Scheduler::Lookup` (r:0 w:1)
+	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
+	fn service_task_named() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_222_000 picoseconds.
+		Weight::from_parts(3_538_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn service_task_periodic() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 2_050_000 picoseconds.
+		Weight::from_parts(2_272_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn execute_dispatch_signed() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 1_407_000 picoseconds.
+		Weight::from_parts(1_537_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn execute_dispatch_unsigned() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 1_401_000 picoseconds.
+		Weight::from_parts(1_593_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `Scheduler::Agenda` (r:1 w:1)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[0, 49]`.
+	fn schedule(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `77 + s * (177 ±0)`
+		//  Estimated: `13928`
+		// Minimum execution time: 7_435_000 picoseconds.
+		Weight::from_parts(10_027_585, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			// Standard Error: 1_658
+			.saturating_add(Weight::from_parts(306_680, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Scheduler::Agenda` (r:1 w:1)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Lookup` (r:0 w:1)
+	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[1, 50]`.
+	fn cancel(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `77 + s * (177 ±0)`
+		//  Estimated: `13928`
+		// Minimum execution time: 11_863_000 picoseconds.
+		Weight::from_parts(12_444_880, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			// Standard Error: 2_273
+			.saturating_add(Weight::from_parts(484_271, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `Scheduler::Lookup` (r:1 w:1)
+	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Agenda` (r:1 w:1)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[0, 49]`.
+	fn schedule_named(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `254 + s * (185 ±0)`
+		//  Estimated: `13928`
+		// Minimum execution time: 9_859_000 picoseconds.
+		Weight::from_parts(13_968_194, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			// Standard Error: 3_414
+			.saturating_add(Weight::from_parts(340_947, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Scheduler::Lookup` (r:1 w:1)
+	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Agenda` (r:1 w:1)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[1, 50]`.
+	fn cancel_named(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `280 + s * (185 ±0)`
+		//  Estimated: `13928`
+		// Minimum execution time: 13_677_000 picoseconds.
+		Weight::from_parts(15_783_096, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			// Standard Error: 2_339
+			.saturating_add(Weight::from_parts(494_123, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `Scheduler::Agenda` (r:1 w:1)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[1, 50]`.
+	fn schedule_retry(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `117`
+		//  Estimated: `13928`
+		// Minimum execution time: 6_934_000 picoseconds.
+		Weight::from_parts(7_667_030, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			// Standard Error: 1_620
+			.saturating_add(Weight::from_parts(26_150, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Scheduler::Agenda` (r:1 w:0)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	fn set_retry() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `8927`
+		//  Estimated: `13928`
+		// Minimum execution time: 19_426_000 picoseconds.
+		Weight::from_parts(20_336_000, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Scheduler::Lookup` (r:1 w:0)
+	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Agenda` (r:1 w:0)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	fn set_retry_named() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `9605`
+		//  Estimated: `13928`
+		// Minimum execution time: 26_643_000 picoseconds.
+		Weight::from_parts(27_430_000, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Scheduler::Agenda` (r:1 w:0)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	fn cancel_retry() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `8939`
+		//  Estimated: `13928`
+		// Minimum execution time: 19_967_000 picoseconds.
+		Weight::from_parts(20_794_000, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Scheduler::Lookup` (r:1 w:0)
+	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Agenda` (r:1 w:0)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	fn cancel_retry_named() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `9617`
+		//  Estimated: `13928`
+		// Minimum execution time: 24_590_000 picoseconds.
+		Weight::from_parts(26_445_000, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/gdev/src/weights/pallet_session.rs b/runtime/gdev/src/weights/pallet_session.rs
new file mode 100644
index 000000000..f5db0f2d7
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_session.rs
@@ -0,0 +1,78 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_session`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_session`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::KeyOwner` (r:4 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn set_keys() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `811`
+		//  Estimated: `11701`
+		// Minimum execution time: 22_418_000 picoseconds.
+		Weight::from_parts(23_437_000, 0)
+			.saturating_add(Weight::from_parts(0, 11701))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn purge_keys() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `478`
+		//  Estimated: `3943`
+		// Minimum execution time: 13_972_000 picoseconds.
+		Weight::from_parts(14_743_000, 0)
+			.saturating_add(Weight::from_parts(0, 3943))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_smith_members.rs b/runtime/gdev/src/weights/pallet_smith_members.rs
similarity index 82%
rename from runtime/common/src/weights/pallet_smith_members.rs
rename to runtime/gdev/src/weights/pallet_smith_members.rs
index 8f2a1a7dc..28a7d3927 100644
--- a/runtime/common/src/weights/pallet_smith_members.rs
+++ b/runtime/gdev/src/weights/pallet_smith_members.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_smith_members`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/gdev/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -61,11 +61,11 @@ impl<T: frame_system::Config> pallet_smith_members::WeightInfo for WeightInfo<T>
 	/// Proof: `SmithMembers::ExpiresOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn invite_smith() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `765`
-		//  Estimated: `6705`
-		// Minimum execution time: 24_537_000 picoseconds.
-		Weight::from_parts(25_692_000, 0)
-			.saturating_add(Weight::from_parts(0, 6705))
+		//  Measured:  `945`
+		//  Estimated: `6885`
+		// Minimum execution time: 26_203_000 picoseconds.
+		Weight::from_parts(27_233_000, 0)
+			.saturating_add(Weight::from_parts(0, 6885))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -75,11 +75,11 @@ impl<T: frame_system::Config> pallet_smith_members::WeightInfo for WeightInfo<T>
 	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn accept_invitation() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `496`
-		//  Estimated: `3961`
-		// Minimum execution time: 13_084_000 picoseconds.
-		Weight::from_parts(13_653_000, 0)
-			.saturating_add(Weight::from_parts(0, 3961))
+		//  Measured:  `599`
+		//  Estimated: `4064`
+		// Minimum execution time: 14_183_000 picoseconds.
+		Weight::from_parts(14_540_000, 0)
+			.saturating_add(Weight::from_parts(0, 4064))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -95,15 +95,15 @@ impl<T: frame_system::Config> pallet_smith_members::WeightInfo for WeightInfo<T>
 	/// Proof: `SmithMembers::ExpiresOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn certify_smith() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `626`
-		//  Estimated: `6566`
-		// Minimum execution time: 23_286_000 picoseconds.
-		Weight::from_parts(24_203_000, 0)
-			.saturating_add(Weight::from_parts(0, 6566))
+		//  Measured:  `755`
+		//  Estimated: `6695`
+		// Minimum execution time: 25_061_000 picoseconds.
+		Weight::from_parts(26_027_000, 0)
+			.saturating_add(Weight::from_parts(0, 6695))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
-	/// Storage: `SmithMembers::Smiths` (r:3 w:3)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
 	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
 	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -121,23 +121,23 @@ impl<T: frame_system::Config> pallet_smith_members::WeightInfo for WeightInfo<T>
 	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn on_removed_wot_member() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `911`
-		//  Estimated: `9326`
-		// Minimum execution time: 46_868_000 picoseconds.
-		Weight::from_parts(48_648_000, 0)
-			.saturating_add(Weight::from_parts(0, 9326))
-			.saturating_add(T::DbWeight::get().reads(9))
-			.saturating_add(T::DbWeight::get().writes(13))
+		//  Measured:  `1205`
+		//  Estimated: `14570`
+		// Minimum execution time: 56_591_000 picoseconds.
+		Weight::from_parts(59_038_000, 0)
+			.saturating_add(Weight::from_parts(0, 14570))
+			.saturating_add(T::DbWeight::get().reads(11))
+			.saturating_add(T::DbWeight::get().writes(15))
 	}
 	/// Storage: `SmithMembers::Smiths` (r:1 w:0)
 	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn on_removed_wot_member_empty() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `187`
-		//  Estimated: `3652`
-		// Minimum execution time: 2_780_000 picoseconds.
-		Weight::from_parts(2_992_000, 0)
-			.saturating_add(Weight::from_parts(0, 3652))
+		//  Measured:  `253`
+		//  Estimated: `3718`
+		// Minimum execution time: 2_765_000 picoseconds.
+		Weight::from_parts(3_064_000, 0)
+			.saturating_add(Weight::from_parts(0, 3718))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 }
diff --git a/runtime/gdev/src/weights/pallet_sudo.rs b/runtime/gdev/src/weights/pallet_sudo.rs
new file mode 100644
index 000000000..978c87bd1
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_sudo.rs
@@ -0,0 +1,96 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_sudo`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_sudo`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
+	/// Storage: `Sudo::Key` (r:1 w:1)
+	/// Proof: `Sudo::Key` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	fn set_key() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `165`
+		//  Estimated: `1517`
+		// Minimum execution time: 6_819_000 picoseconds.
+		Weight::from_parts(7_219_000, 0)
+			.saturating_add(Weight::from_parts(0, 1517))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Sudo::Key` (r:1 w:0)
+	/// Proof: `Sudo::Key` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	fn sudo() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `165`
+		//  Estimated: `1517`
+		// Minimum execution time: 7_118_000 picoseconds.
+		Weight::from_parts(7_697_000, 0)
+			.saturating_add(Weight::from_parts(0, 1517))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Sudo::Key` (r:1 w:0)
+	/// Proof: `Sudo::Key` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	fn sudo_as() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `165`
+		//  Estimated: `1517`
+		// Minimum execution time: 7_158_000 picoseconds.
+		Weight::from_parts(7_597_000, 0)
+			.saturating_add(Weight::from_parts(0, 1517))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Sudo::Key` (r:1 w:1)
+	/// Proof: `Sudo::Key` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	fn remove_key() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `165`
+		//  Estimated: `1517`
+		// Minimum execution time: 6_157_000 picoseconds.
+		Weight::from_parts(6_429_000, 0)
+			.saturating_add(Weight::from_parts(0, 1517))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_timestamp.rs b/runtime/gdev/src/weights/pallet_timestamp.rs
similarity index 90%
rename from runtime/common/src/weights/pallet_timestamp.rs
rename to runtime/gdev/src/weights/pallet_timestamp.rs
index df562e804..bfd6655df 100644
--- a/runtime/common/src/weights/pallet_timestamp.rs
+++ b/runtime/gdev/src/weights/pallet_timestamp.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_timestamp`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/gdev/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -59,8 +59,8 @@ impl<T: frame_system::Config> pallet_timestamp::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `379`
 		//  Estimated: `1864`
-		// Minimum execution time: 10_293_000 picoseconds.
-		Weight::from_parts(11_107_000, 0)
+		// Minimum execution time: 10_394_000 picoseconds.
+		Weight::from_parts(11_382_000, 0)
 			.saturating_add(Weight::from_parts(0, 1864))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -69,8 +69,8 @@ impl<T: frame_system::Config> pallet_timestamp::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `57`
 		//  Estimated: `0`
-		// Minimum execution time: 2_400_000 picoseconds.
-		Weight::from_parts(2_539_000, 0)
+		// Minimum execution time: 2_409_000 picoseconds.
+		Weight::from_parts(2_573_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/gdev/src/weights/pallet_treasury.rs b/runtime/gdev/src/weights/pallet_treasury.rs
new file mode 100644
index 000000000..e55c209fb
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_treasury.rs
@@ -0,0 +1,121 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_treasury`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_treasury`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
+	fn spend_local() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 0_000 picoseconds.
+		Weight::from_parts(0, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn remove_approval() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 0_000 picoseconds.
+		Weight::from_parts(0, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `p` is `[0, 99]`.
+	fn on_initialize_proposals(_p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 0_000 picoseconds.
+		Weight::from_parts(0, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn spend() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 0_000 picoseconds.
+		Weight::from_parts(0, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `Treasury::Spends` (r:1 w:1)
+	/// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(61), added: 2536, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn payout() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `179`
+		//  Estimated: `6126`
+		// Minimum execution time: 39_273_000 picoseconds.
+		Weight::from_parts(40_249_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `Treasury::Spends` (r:1 w:1)
+	/// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(61), added: 2536, mode: `MaxEncodedLen`)
+	fn check_status() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `116`
+		//  Estimated: `3526`
+		// Minimum execution time: 8_444_000 picoseconds.
+		Weight::from_parts(8_948_000, 0)
+			.saturating_add(Weight::from_parts(0, 3526))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Treasury::Spends` (r:1 w:1)
+	/// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(61), added: 2536, mode: `MaxEncodedLen`)
+	fn void_spend() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `116`
+		//  Estimated: `3526`
+		// Minimum execution time: 7_649_000 picoseconds.
+		Weight::from_parts(7_960_000, 0)
+			.saturating_add(Weight::from_parts(0, 3526))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/common/src/weights/pallet_universal_dividend.rs b/runtime/gdev/src/weights/pallet_universal_dividend.rs
similarity index 85%
rename from runtime/common/src/weights/pallet_universal_dividend.rs
rename to runtime/gdev/src/weights/pallet_universal_dividend.rs
index 778f298d2..7730d9941 100644
--- a/runtime/common/src/weights/pallet_universal_dividend.rs
+++ b/runtime/gdev/src/weights/pallet_universal_dividend.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_universal_dividend`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -34,7 +34,7 @@
 // --wasm-execution=compiled
 // --heap-pages=4096
 // --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --output=./runtime/gdev/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -58,15 +58,13 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 	/// Storage: `System::Account` (r:1 w:1)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	/// The range of component `i` is `[1, 160]`.
-	fn claim_uds(i: u32, ) -> Weight {
+	fn claim_uds(_i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `643`
-		//  Estimated: `4108`
-		// Minimum execution time: 24_610_000 picoseconds.
-		Weight::from_parts(26_539_017, 0)
-			.saturating_add(Weight::from_parts(0, 4108))
-			// Standard Error: 382
-			.saturating_add(Weight::from_parts(234, 0).saturating_mul(i.into()))
+		//  Measured:  `709`
+		//  Estimated: `4174`
+		// Minimum execution time: 28_037_000 picoseconds.
+		Weight::from_parts(29_902_475, 0)
+			.saturating_add(Weight::from_parts(0, 4174))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -78,8 +76,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `156`
 		//  Estimated: `6126`
-		// Minimum execution time: 45_470_000 picoseconds.
-		Weight::from_parts(46_660_000, 0)
+		// Minimum execution time: 47_683_000 picoseconds.
+		Weight::from_parts(49_190_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -92,8 +90,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `93`
 		//  Estimated: `3558`
-		// Minimum execution time: 30_105_000 picoseconds.
-		Weight::from_parts(31_315_000, 0)
+		// Minimum execution time: 29_954_000 picoseconds.
+		Weight::from_parts(30_583_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -109,11 +107,11 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `181`
 		//  Estimated: `3558`
-		// Minimum execution time: 12_722_000 picoseconds.
-		Weight::from_parts(14_020_745, 0)
+		// Minimum execution time: 16_194_000 picoseconds.
+		Weight::from_parts(17_518_669, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
-			// Standard Error: 216
-			.saturating_add(Weight::from_parts(1_349, 0).saturating_mul(i.into()))
+			// Standard Error: 299
+			.saturating_add(Weight::from_parts(862, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/gdev/src/weights/pallet_upgrade_origin.rs b/runtime/gdev/src/weights/pallet_upgrade_origin.rs
new file mode 100644
index 000000000..66bb1451c
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_upgrade_origin.rs
@@ -0,0 +1,58 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_upgrade_origin`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_upgrade_origin`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_upgrade_origin::WeightInfo for WeightInfo<T> {
+	fn dispatch_as_root() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 4_120_000 picoseconds.
+		Weight::from_parts(4_546_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+}
diff --git a/runtime/gdev/src/weights/pallet_utility.rs b/runtime/gdev/src/weights/pallet_utility.rs
new file mode 100644
index 000000000..2a8699be3
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_utility.rs
@@ -0,0 +1,99 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_utility`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gdev/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_utility`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_utility::WeightInfo for WeightInfo<T> {
+	/// The range of component `c` is `[0, 1000]`.
+	fn batch(c: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_490_000 picoseconds.
+		Weight::from_parts(2_819_620, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 3_295
+			.saturating_add(Weight::from_parts(2_043_694, 0).saturating_mul(c.into()))
+	}
+	fn as_derivative() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 2_808_000 picoseconds.
+		Weight::from_parts(3_149_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `c` is `[0, 1000]`.
+	fn batch_all(c: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_371_000 picoseconds.
+		Weight::from_parts(6_485_631, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 3_334
+			.saturating_add(Weight::from_parts(2_214_940, 0).saturating_mul(c.into()))
+	}
+	fn dispatch_as() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 4_644_000 picoseconds.
+		Weight::from_parts(5_113_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `c` is `[0, 1000]`.
+	fn force_batch(c: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_536_000 picoseconds.
+		Weight::from_parts(6_066_226, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 3_004
+			.saturating_add(Weight::from_parts(2_042_213, 0).saturating_mul(c.into()))
+	}
+}
diff --git a/runtime/common/src/weights/paritydb_weights.rs b/runtime/gdev/src/weights/paritydb_weights.rs
similarity index 79%
rename from runtime/common/src/weights/paritydb_weights.rs
rename to runtime/gdev/src/weights/paritydb_weights.rs
index 972f0dca3..d92b8f046 100644
--- a/runtime/common/src/weights/paritydb_weights.rs
+++ b/runtime/gdev/src/weights/paritydb_weights.rs
@@ -1,13 +1,13 @@
 
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-05-13 (Y/M/D)
+//! DATE: 2024-07-03 (Y/M/D)
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //!
 //! DATABASE: `ParityDb`, RUNTIME: `Äždev Local Testnet`
 //! BLOCK-NUM: `BlockId::Number(0)`
 //! SKIP-WRITE: `false`, SKIP-READ: `false`, WARMUPS: `1`
 //! STATE-VERSION: `V1`, STATE-CACHE-SIZE: ``
-//! WEIGHT-PATH: `./runtime/common/src/weights/`
+//! WEIGHT-PATH: `./runtime/gdev/src/weights/`
 //! METRIC: `Average`, WEIGHT-MUL: `2.0`, WEIGHT-ADD: `0`
 
 // Executed Command:
@@ -16,8 +16,9 @@
 //   storage
 //   --chain=dev
 //   --mul=2
-//   --weight-path=./runtime/common/src/weights/
+//   --weight-path=./runtime/gdev/src/weights/
 //   --state-version=1
+//   --database=paritydb
 
 /// Storage DB weights for the `Äždev Local Testnet` runtime and `ParityDb`.
 pub mod constants {
@@ -33,31 +34,31 @@ pub mod constants {
 			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
 			///
 			/// Stats nanoseconds:
-			///   Min, Max: 794, 1_098_997
-			///   Average:  9_893
-			///   Median:   1_232
-			///   Std-Dev:  95894.03
+			///   Min, Max: 768, 1_122_758
+			///   Average:  8_715
+			///   Median:   1_521
+			///   Std-Dev:  88353.03
 			///
 			/// Percentiles nanoseconds:
-			///   99th: 9_401
-			///   95th: 2_655
-			///   75th: 1_565
-			read: 19_786 * constants::WEIGHT_REF_TIME_PER_NANOS,
+			///   99th: 9_045
+			///   95th: 2_965
+			///   75th: 2_038
+			read: 17_430 * constants::WEIGHT_REF_TIME_PER_NANOS,
 
 			/// Time to write one storage item.
 			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
 			///
 			/// Stats nanoseconds:
-			///   Min, Max: 3_685, 6_605_999
-			///   Average:  59_740
-			///   Median:   8_551
-			///   Std-Dev:  576372.47
+			///   Min, Max: 3_776, 6_789_246
+			///   Average:  52_344
+			///   Median:   9_935
+			///   Std-Dev:  534281.94
 			///
 			/// Percentiles nanoseconds:
-			///   99th: 18_887
-			///   95th: 13_172
-			///   75th: 11_273
-			write: 119_480 * constants::WEIGHT_REF_TIME_PER_NANOS,
+			///   99th: 32_656
+			///   95th: 14_772
+			///   75th: 12_150
+			write: 104_688 * constants::WEIGHT_REF_TIME_PER_NANOS,
 		};
 	}
 
diff --git a/runtime/gdev/tests/offence_tests.rs b/runtime/gdev/tests/offence_tests.rs
index 67321d19d..d305aa2f5 100644
--- a/runtime/gdev/tests/offence_tests.rs
+++ b/runtime/gdev/tests/offence_tests.rs
@@ -37,8 +37,7 @@ fn test_imonline_offence() {
         // Construct an offence where all validators (member: 1) are offenders
         let offenders = current_validators
             .into_iter()
-            .enumerate()
-            .filter_map(|(_, id)| {
+            .filter_map(|id| {
                 <<Runtime as im_online::Config>::ValidatorSet as ValidatorSetWithIdentification<
                     sp_runtime::AccountId32,
                 >>::IdentificationOf::convert(id.clone())
@@ -79,8 +78,7 @@ fn test_grandpa_offence() {
         // Construct an offence where all validators (member: 1) are offenders
         let mut offenders = current_validators
             .into_iter()
-            .enumerate()
-            .filter_map(|(_, id)| {
+            .filter_map(|id| {
                 <Runtime as pallet_session::historical::Config>::FullIdentificationOf::convert(
                     id.clone(),
                 )
@@ -124,8 +122,7 @@ fn test_babe_offence() {
         // Construct an offence where all validators (member: 1) are offenders
         let mut offenders = current_validators
             .into_iter()
-            .enumerate()
-            .filter_map(|(_, id)| {
+            .filter_map(|id| {
                 <Runtime as pallet_session::historical::Config>::FullIdentificationOf::convert(
                     id.clone(),
                 )
diff --git a/runtime/gtest/Cargo.toml b/runtime/gtest/Cargo.toml
index 3e14eae27..945a1dee8 100644
--- a/runtime/gtest/Cargo.toml
+++ b/runtime/gtest/Cargo.toml
@@ -118,6 +118,7 @@ std = [
 	"sp-transaction-pool/std",
 	"sp-version/std",
 	"substrate-wasm-builder",
+	"sp-weights/std",
 ]
 try-runtime = [
 	"common-runtime/try-runtime",
@@ -236,3 +237,4 @@ sp-version = { workspace = true }
 sp-genesis-builder = { workspace = true }
 node-primitives = { workspace = true }
 codec = { workspace = true, features = ["derive"] }
+sp-weights = { workspace = true }
diff --git a/runtime/gtest/src/lib.rs b/runtime/gtest/src/lib.rs
index 0a19c2e4b..356b288ac 100644
--- a/runtime/gtest/src/lib.rs
+++ b/runtime/gtest/src/lib.rs
@@ -27,6 +27,7 @@ include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
 extern crate frame_benchmarking;
 
 pub mod parameters;
+pub mod weights;
 
 pub use self::parameters::*;
 use common_runtime::IdtyNameValidatorImpl;
@@ -66,6 +67,7 @@ use sp_std::prelude::*;
 #[cfg(feature = "std")]
 use sp_version::NativeVersion;
 use sp_version::RuntimeVersion;
+pub use weights::paritydb_weights::constants::ParityDbWeight as DbWeight;
 
 // A few exports that help ease life for downstream crates.
 use frame_support::instances::Instance2;
diff --git a/runtime/gtest/src/parameters.rs b/runtime/gtest/src/parameters.rs
index 6539fa51d..63ea32498 100644
--- a/runtime/gtest/src/parameters.rs
+++ b/runtime/gtest/src/parameters.rs
@@ -57,7 +57,7 @@ parameter_types! {
 
 // ImOnline
 parameter_types! {
-    pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value();
+    pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::MAX;
     pub const MaxPeerInHeartbeats: u32 = 10_000;
     pub const MaxPeerDataEncodingSize: u32 = 1_000;
 }
diff --git a/runtime/gtest/src/weights.rs b/runtime/gtest/src/weights.rs
new file mode 100644
index 000000000..1bf51bdbb
--- /dev/null
+++ b/runtime/gtest/src/weights.rs
@@ -0,0 +1,52 @@
+// Copyright 2021 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(clippy::unnecessary_cast)]
+#![allow(unused_doc_comments)]
+
+pub mod block_weights;
+pub mod extrinsic_weights;
+pub mod frame_system;
+pub mod pallet_babe;
+pub mod pallet_balances;
+pub mod pallet_collective;
+pub mod pallet_distance;
+pub mod pallet_grandpa;
+pub mod pallet_im_online;
+pub mod pallet_multisig;
+pub mod pallet_proxy;
+pub mod pallet_session;
+pub mod pallet_scheduler;
+pub mod pallet_timestamp;
+pub mod pallet_treasury;
+pub mod pallet_universal_dividend;
+pub mod pallet_upgrade_origin;
+pub mod pallet_provide_randomness;
+pub mod pallet_identity;
+pub mod pallet_preimage;
+pub mod pallet_utility;
+pub mod pallet_duniter_account;
+pub mod pallet_quota;
+pub mod pallet_oneshot_account;
+pub mod pallet_certification;
+pub mod pallet_membership;
+pub mod pallet_smith_members;
+pub mod pallet_sudo;
+pub mod pallet_authority_members;
+pub mod paritydb_weights;
diff --git a/runtime/gtest/src/weights/block_weights.rs b/runtime/gtest/src/weights/block_weights.rs
new file mode 100644
index 000000000..de068da54
--- /dev/null
+++ b/runtime/gtest/src/weights/block_weights.rs
@@ -0,0 +1,64 @@
+
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03 (Y/M/D)
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//!
+//! SHORT-NAME: `block`, LONG-NAME: `BlockExecution`, RUNTIME: `ÄžTest Local Testnet`
+//! WARMUPS: `10`, REPEAT: `100`
+//! WEIGHT-PATH: `./runtime/gtest/src/weights/`
+//! WEIGHT-METRIC: `Average`, WEIGHT-MUL: `1.0`, WEIGHT-ADD: `0`
+
+// Executed Command:
+//   target/release/duniter
+//   benchmark
+//   overhead
+//   --chain=dev
+//   --wasm-execution=compiled
+//   --weight-path=./runtime/gtest/src/weights/
+//   --warmup=10
+//   --repeat=100
+
+use sp_core::parameter_types;
+use sp_weights::{constants::WEIGHT_REF_TIME_PER_NANOS, Weight};
+
+parameter_types! {
+	/// Time to execute an empty block.
+	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
+	///
+	/// Stats nanoseconds:
+	///   Min, Max: 153_735, 168_168
+	///   Average:  158_206
+	///   Median:   157_600
+	///   Std-Dev:  2641.81
+	///
+	/// Percentiles nanoseconds:
+	///   99th: 164_934
+	///   95th: 163_413
+	///   75th: 159_581
+	pub const BlockExecutionWeight: Weight =
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(158_206), 0);
+}
+
+#[cfg(test)]
+mod test_weights {
+	use sp_weights::constants;
+
+	/// Checks that the weight exists and is sane.
+	// NOTE: If this test fails but you are sure that the generated values are fine,
+	// you can delete it.
+	#[test]
+	fn sane() {
+		let w = super::BlockExecutionWeight::get();
+
+		// At least 100 µs.
+		assert!(
+			w.ref_time() >= 100u64 * constants::WEIGHT_REF_TIME_PER_MICROS,
+			"Weight should be at least 100 µs."
+		);
+		// At most 50 ms.
+		assert!(
+			w.ref_time() <= 50u64 * constants::WEIGHT_REF_TIME_PER_MILLIS,
+			"Weight should be at most 50 ms."
+		);
+	}
+}
diff --git a/runtime/gtest/src/weights/extrinsic_weights.rs b/runtime/gtest/src/weights/extrinsic_weights.rs
new file mode 100644
index 000000000..25f46adc2
--- /dev/null
+++ b/runtime/gtest/src/weights/extrinsic_weights.rs
@@ -0,0 +1,64 @@
+
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03 (Y/M/D)
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//!
+//! SHORT-NAME: `extrinsic`, LONG-NAME: `ExtrinsicBase`, RUNTIME: `ÄžTest Local Testnet`
+//! WARMUPS: `10`, REPEAT: `100`
+//! WEIGHT-PATH: `./runtime/gtest/src/weights/`
+//! WEIGHT-METRIC: `Average`, WEIGHT-MUL: `1.0`, WEIGHT-ADD: `0`
+
+// Executed Command:
+//   target/release/duniter
+//   benchmark
+//   overhead
+//   --chain=dev
+//   --wasm-execution=compiled
+//   --weight-path=./runtime/gtest/src/weights/
+//   --warmup=10
+//   --repeat=100
+
+use sp_core::parameter_types;
+use sp_weights::{constants::WEIGHT_REF_TIME_PER_NANOS, Weight};
+
+parameter_types! {
+	/// Time to execute a NO-OP extrinsic, for example `System::remark`.
+	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
+	///
+	/// Stats nanoseconds:
+	///   Min, Max: 95_828, 98_002
+	///   Average:  96_481
+	///   Median:   96_295
+	///   Std-Dev:  483.82
+	///
+	/// Percentiles nanoseconds:
+	///   99th: 97_866
+	///   95th: 97_636
+	///   75th: 96_512
+	pub const ExtrinsicBaseWeight: Weight =
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(96_481), 0);
+}
+
+#[cfg(test)]
+mod test_weights {
+	use sp_weights::constants;
+
+	/// Checks that the weight exists and is sane.
+	// NOTE: If this test fails but you are sure that the generated values are fine,
+	// you can delete it.
+	#[test]
+	fn sane() {
+		let w = super::ExtrinsicBaseWeight::get();
+
+		// At least 10 µs.
+		assert!(
+			w.ref_time() >= 10u64 * constants::WEIGHT_REF_TIME_PER_MICROS,
+			"Weight should be at least 10 µs."
+		);
+		// At most 1 ms.
+		assert!(
+			w.ref_time() <= constants::WEIGHT_REF_TIME_PER_MILLIS,
+			"Weight should be at most 1 ms."
+		);
+	}
+}
diff --git a/runtime/gtest/src/weights/frame_benchmarking_baseline.rs b/runtime/gtest/src/weights/frame_benchmarking_baseline.rs
new file mode 100644
index 000000000..b8e073501
--- /dev/null
+++ b/runtime/gtest/src/weights/frame_benchmarking_baseline.rs
@@ -0,0 +1,105 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `frame_benchmarking::baseline`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `frame_benchmarking::baseline`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for WeightInfo<T> {
+	/// The range of component `i` is `[0, 1000000]`.
+	fn addition(_i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 80_000 picoseconds.
+		Weight::from_parts(105_414, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `i` is `[0, 1000000]`.
+	fn subtraction(_i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 81_000 picoseconds.
+		Weight::from_parts(103_100, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `i` is `[0, 1000000]`.
+	fn multiplication(_i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 81_000 picoseconds.
+		Weight::from_parts(106_830, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `i` is `[0, 1000000]`.
+	fn division(_i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 80_000 picoseconds.
+		Weight::from_parts(100_991, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn hashing() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 19_781_344_000 picoseconds.
+		Weight::from_parts(19_846_722_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `i` is `[0, 100]`.
+	fn sr25519_verification(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 88_000 picoseconds.
+		Weight::from_parts(28_436_132, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 12_046
+			.saturating_add(Weight::from_parts(31_031_752, 0).saturating_mul(i.into()))
+	}
+}
diff --git a/runtime/gtest/src/weights/frame_system.rs b/runtime/gtest/src/weights/frame_system.rs
new file mode 100644
index 000000000..3c3e07764
--- /dev/null
+++ b/runtime/gtest/src/weights/frame_system.rs
@@ -0,0 +1,171 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `frame_system`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `frame_system`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
+	/// The range of component `b` is `[0, 3932160]`.
+	fn remark(b: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 1_363_000 picoseconds.
+		Weight::from_parts(1_418_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 0
+			.saturating_add(Weight::from_parts(259, 0).saturating_mul(b.into()))
+	}
+	/// The range of component `b` is `[0, 3932160]`.
+	fn remark_with_event(b: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_925_000 picoseconds.
+		Weight::from_parts(4_128_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 1
+			.saturating_add(Weight::from_parts(1_051, 0).saturating_mul(b.into()))
+	}
+	/// Storage: `System::Digest` (r:1 w:1)
+	/// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: UNKNOWN KEY `0x3a686561707061676573` (r:0 w:1)
+	/// Proof: UNKNOWN KEY `0x3a686561707061676573` (r:0 w:1)
+	fn set_heap_pages() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `1485`
+		// Minimum execution time: 2_402_000 picoseconds.
+		Weight::from_parts(2_740_000, 0)
+			.saturating_add(Weight::from_parts(0, 1485))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `System::Digest` (r:1 w:1)
+	/// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1)
+	/// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1)
+	fn set_code() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `1485`
+		// Minimum execution time: 78_043_007_000 picoseconds.
+		Weight::from_parts(79_017_833_000, 0)
+			.saturating_add(Weight::from_parts(0, 1485))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Skipped::Metadata` (r:0 w:0)
+	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[0, 1000]`.
+	fn set_storage(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 1_394_000 picoseconds.
+		Weight::from_parts(1_521_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 600
+			.saturating_add(Weight::from_parts(575_035, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
+	}
+	/// Storage: `Skipped::Metadata` (r:0 w:0)
+	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[0, 1000]`.
+	fn kill_storage(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 1_444_000 picoseconds.
+		Weight::from_parts(1_574_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 635
+			.saturating_add(Weight::from_parts(456_270, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
+	}
+	/// Storage: `Skipped::Metadata` (r:0 w:0)
+	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `p` is `[0, 1000]`.
+	fn kill_prefix(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `77 + p * (69 ±0)`
+		//  Estimated: `76 + p * (70 ±0)`
+		// Minimum execution time: 2_655_000 picoseconds.
+		Weight::from_parts(2_885_000, 0)
+			.saturating_add(Weight::from_parts(0, 76))
+			// Standard Error: 791
+			.saturating_add(Weight::from_parts(903_492, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(p.into())))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into())))
+			.saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into()))
+	}
+	/// Storage: `System::AuthorizedUpgrade` (r:0 w:1)
+	/// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`)
+	fn authorize_upgrade() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 7_781_000 picoseconds.
+		Weight::from_parts(9_485_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `System::AuthorizedUpgrade` (r:1 w:1)
+	/// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`)
+	/// Storage: `System::Digest` (r:1 w:1)
+	/// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1)
+	/// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1)
+	fn apply_authorized_upgrade() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `22`
+		//  Estimated: `1518`
+		// Minimum execution time: 82_000_834_000 picoseconds.
+		Weight::from_parts(83_593_785_000, 0)
+			.saturating_add(Weight::from_parts(0, 1518))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_authority_members.rs b/runtime/gtest/src/weights/pallet_authority_members.rs
new file mode 100644
index 000000000..db775776f
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_authority_members.rs
@@ -0,0 +1,156 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_authority_members`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_authority_members`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInfo<T> {
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:1 w:0)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:0)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:0)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:0)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn go_offline() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `933`
+		//  Estimated: `4398`
+		// Minimum execution time: 18_337_000 picoseconds.
+		Weight::from_parts(18_797_000, 0)
+			.saturating_add(Weight::from_parts(0, 4398))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:1 w:0)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Blacklist` (r:1 w:0)
+	/// Proof: `AuthorityMembers::Blacklist` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:0)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:0)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:0)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:0)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn go_online() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1389`
+		//  Estimated: `4854`
+		// Minimum execution time: 24_051_000 picoseconds.
+		Weight::from_parts(25_773_000, 0)
+			.saturating_add(Weight::from_parts(0, 4854))
+			.saturating_add(T::DbWeight::get().reads(8))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:1 w:0)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:0)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::KeyOwner` (r:4 w:0)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:0 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn set_session_keys() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1838`
+		//  Estimated: `12728`
+		// Minimum execution time: 34_117_000 picoseconds.
+		Weight::from_parts(35_690_000, 0)
+			.saturating_add(Weight::from_parts(0, 12728))
+			.saturating_add(T::DbWeight::get().reads(8))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn remove_member() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `847`
+		//  Estimated: `4312`
+		// Minimum execution time: 33_544_000 picoseconds.
+		Weight::from_parts(35_107_000, 0)
+			.saturating_add(Weight::from_parts(0, 4312))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(10))
+	}
+	/// Storage: `AuthorityMembers::Blacklist` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Blacklist` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn remove_member_from_blacklist() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `199`
+		//  Estimated: `1684`
+		// Minimum execution time: 6_890_000 picoseconds.
+		Weight::from_parts(7_184_000, 0)
+			.saturating_add(Weight::from_parts(0, 1684))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_babe.rs b/runtime/gtest/src/weights/pallet_babe.rs
new file mode 100644
index 000000000..caa37df09
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_babe.rs
@@ -0,0 +1,54 @@
+// Copyright 2021 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Manual weights for the GRANDPA Pallet in duniter runtimes
+//! This file was not auto-generated.
+
+use frame_support::{
+    traits::Get,
+    weights::{
+        constants::{WEIGHT_REF_TIME_PER_MICROS, WEIGHT_REF_TIME_PER_NANOS},
+        Weight,
+    },
+};
+use sp_std::marker::PhantomData;
+
+/// Weight functions for `pallet_babe`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_babe::WeightInfo for WeightInfo<T> {
+    fn plan_config_change() -> Weight {
+        T::DbWeight::get().writes(1)
+    }
+
+    fn report_equivocation(validator_count: u32, _p: u32) -> Weight {
+        // we take the validator set count from the membership proof to
+        // calculate the weight but we set a floor of 100 validators.
+        let validator_count = validator_count.max(100) as u64;
+
+        // checking membership proof
+        (Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 35)
+            .saturating_add(
+                (Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS, 0) * 175)
+                    .saturating_mul(validator_count),
+            )
+            .saturating_add(T::DbWeight::get().reads(5))
+            // check equivocation proof
+            .saturating_add(Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 110)
+            // report offence
+            .saturating_add(Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 110)
+            .saturating_add(T::DbWeight::get().writes(3))
+    }
+}
diff --git a/runtime/gtest/src/weights/pallet_balances.rs b/runtime/gtest/src/weights/pallet_balances.rs
new file mode 100644
index 000000000..a6b049092
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_balances.rs
@@ -0,0 +1,162 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_balances`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_balances`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn transfer_allow_death() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `63`
+		//  Estimated: `6126`
+		// Minimum execution time: 44_650_000 picoseconds.
+		Weight::from_parts(45_932_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn transfer_keep_alive() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `3558`
+		// Minimum execution time: 27_648_000 picoseconds.
+		Weight::from_parts(28_259_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn force_set_balance_creating() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `134`
+		//  Estimated: `3558`
+		// Minimum execution time: 9_129_000 picoseconds.
+		Weight::from_parts(9_744_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn force_set_balance_killing() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `134`
+		//  Estimated: `3558`
+		// Minimum execution time: 13_022_000 picoseconds.
+		Weight::from_parts(13_645_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `System::Account` (r:3 w:3)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn force_transfer() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `126`
+		//  Estimated: `8694`
+		// Minimum execution time: 48_048_000 picoseconds.
+		Weight::from_parts(49_222_000, 0)
+			.saturating_add(Weight::from_parts(0, 8694))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn transfer_all() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `3558`
+		// Minimum execution time: 36_128_000 picoseconds.
+		Weight::from_parts(37_018_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn force_unreserve() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `134`
+		//  Estimated: `3558`
+		// Minimum execution time: 12_377_000 picoseconds.
+		Weight::from_parts(12_957_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn force_adjust_total_issuance() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_959_000 picoseconds.
+		Weight::from_parts(4_294_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn burn_allow_death() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `63`
+		//  Estimated: `3558`
+		// Minimum execution time: 31_887_000 picoseconds.
+		Weight::from_parts(32_903_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn burn_keep_alive() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 14_267_000 picoseconds.
+		Weight::from_parts(14_742_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_certification.rs b/runtime/gtest/src/weights/pallet_certification.rs
new file mode 100644
index 000000000..71ad8a2b2
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_certification.rs
@@ -0,0 +1,191 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_certification`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_certification`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T> {
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:2 w:2)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:2 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsRemovableOn` (r:1 w:1)
+	/// Proof: `Certification::CertsRemovableOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn add_cert() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `996`
+		//  Estimated: `6936`
+		// Minimum execution time: 33_141_000 picoseconds.
+		Weight::from_parts(35_512_000, 0)
+			.saturating_add(Weight::from_parts(0, 6936))
+			.saturating_add(T::DbWeight::get().reads(7))
+			.saturating_add(T::DbWeight::get().writes(4))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:1 w:1)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:2 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsRemovableOn` (r:1 w:1)
+	/// Proof: `Certification::CertsRemovableOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn renew_cert() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1019`
+		//  Estimated: `6959`
+		// Minimum execution time: 30_445_000 picoseconds.
+		Weight::from_parts(32_363_000, 0)
+			.saturating_add(Weight::from_parts(0, 6959))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:2 w:2)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::CounterForMembership` (r:1 w:1)
+	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:1 w:1)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn del_cert() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `2259`
+		//  Estimated: `15624`
+		// Minimum execution time: 105_435_000 picoseconds.
+		Weight::from_parts(110_496_000, 0)
+			.saturating_add(Weight::from_parts(0, 15624))
+			.saturating_add(T::DbWeight::get().reads(20))
+			.saturating_add(T::DbWeight::get().writes(23))
+	}
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:1000 w:1000)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:0)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[2, 1000]`.
+	fn remove_all_certs_received_by(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `554 + i * (35 ±0)`
+		//  Estimated: `4018 + i * (2511 ±0)`
+		// Minimum execution time: 23_914_000 picoseconds.
+		Weight::from_parts(24_488_000, 0)
+			.saturating_add(Weight::from_parts(0, 4018))
+			// Standard Error: 26_795
+			.saturating_add(Weight::from_parts(8_668_087, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().writes(1))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
+			.saturating_add(Weight::from_parts(0, 2511).saturating_mul(i.into()))
+	}
+	/// Storage: `Certification::CertsRemovableOn` (r:1 w:0)
+	/// Proof: `Certification::CertsRemovableOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn on_initialize() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `138`
+		//  Estimated: `3603`
+		// Minimum execution time: 2_398_000 picoseconds.
+		Weight::from_parts(2_594_000, 0)
+			.saturating_add(Weight::from_parts(0, 3603))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_remove_cert_noop() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `275`
+		//  Estimated: `3740`
+		// Minimum execution time: 3_412_000 picoseconds.
+		Weight::from_parts(3_720_000, 0)
+			.saturating_add(Weight::from_parts(0, 3740))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:2 w:2)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:0)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_remove_cert() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `711`
+		//  Estimated: `6651`
+		// Minimum execution time: 19_286_000 picoseconds.
+		Weight::from_parts(19_844_000, 0)
+			.saturating_add(Weight::from_parts(0, 6651))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_collective.rs b/runtime/gtest/src/weights/pallet_collective.rs
new file mode 100644
index 000000000..873b4e736
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_collective.rs
@@ -0,0 +1,302 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_collective`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_collective`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Voting` (r:20 w:20)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Prime` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::Prime` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `m` is `[0, 100]`.
+	/// The range of component `n` is `[0, 100]`.
+	/// The range of component `p` is `[0, 20]`.
+	fn set_members(m: u32, _n: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0 + m * (672 ±0) + p * (3191 ±0)`
+		//  Estimated: `10019 + m * (416 ±5) + p * (4183 ±27)`
+		// Minimum execution time: 11_404_000 picoseconds.
+		Weight::from_parts(13_670_000, 0)
+			.saturating_add(Weight::from_parts(0, 10019))
+			// Standard Error: 8_831
+			.saturating_add(Weight::from_parts(649_577, 0).saturating_mul(m.into()))
+			// Standard Error: 43_657
+			.saturating_add(Weight::from_parts(5_749_916, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(p.into())))
+			.saturating_add(T::DbWeight::get().writes(2))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into())))
+			.saturating_add(Weight::from_parts(0, 416).saturating_mul(m.into()))
+			.saturating_add(Weight::from_parts(0, 4183).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `b` is `[2, 1024]`.
+	/// The range of component `m` is `[1, 100]`.
+	fn execute(b: u32, m: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `32 + m * (32 ±0)`
+		//  Estimated: `1518 + m * (32 ±0)`
+		// Minimum execution time: 9_343_000 picoseconds.
+		Weight::from_parts(9_243_687, 0)
+			.saturating_add(Weight::from_parts(0, 1518))
+			// Standard Error: 33
+			.saturating_add(Weight::from_parts(1_055, 0).saturating_mul(b.into()))
+			// Standard Error: 343
+			.saturating_add(Weight::from_parts(8_867, 0).saturating_mul(m.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
+	}
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `b` is `[2, 1024]`.
+	/// The range of component `m` is `[1, 100]`.
+	fn propose_execute(b: u32, m: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `32 + m * (32 ±0)`
+		//  Estimated: `3498 + m * (32 ±0)`
+		// Minimum execution time: 11_156_000 picoseconds.
+		Weight::from_parts(10_714_573, 0)
+			.saturating_add(Weight::from_parts(0, 3498))
+			// Standard Error: 42
+			.saturating_add(Weight::from_parts(1_287, 0).saturating_mul(b.into()))
+			// Standard Error: 439
+			.saturating_add(Weight::from_parts(18_814, 0).saturating_mul(m.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
+	}
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalCount` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::ProposalCount` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Voting` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `b` is `[2, 1024]`.
+	/// The range of component `m` is `[2, 100]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn propose_proposed(b: u32, m: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `24 + m * (32 ±0) + p * (55 ±0)`
+		//  Estimated: `3461 + m * (32 ±0) + p * (54 ±0)`
+		// Minimum execution time: 15_931_000 picoseconds.
+		Weight::from_parts(15_397_454, 0)
+			.saturating_add(Weight::from_parts(0, 3461))
+			// Standard Error: 63
+			.saturating_add(Weight::from_parts(2_167, 0).saturating_mul(b.into()))
+			// Standard Error: 666
+			.saturating_add(Weight::from_parts(16_248, 0).saturating_mul(m.into()))
+			// Standard Error: 3_329
+			.saturating_add(Weight::from_parts(267_477, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(4))
+			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
+			.saturating_add(Weight::from_parts(0, 54).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Voting` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `m` is `[5, 100]`.
+	fn vote(m: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `573 + m * (64 ±0)`
+		//  Estimated: `4037 + m * (64 ±0)`
+		// Minimum execution time: 14_240_000 picoseconds.
+		Weight::from_parts(15_188_748, 0)
+			.saturating_add(Weight::from_parts(0, 4037))
+			// Standard Error: 531
+			.saturating_add(Weight::from_parts(32_152, 0).saturating_mul(m.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+			.saturating_add(Weight::from_parts(0, 64).saturating_mul(m.into()))
+	}
+	/// Storage: `TechnicalCommittee::Voting` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `m` is `[4, 100]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn close_early_disapproved(m: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `117 + m * (64 ±0) + p * (55 ±0)`
+		//  Estimated: `3591 + m * (64 ±0) + p * (55 ±0)`
+		// Minimum execution time: 18_307_000 picoseconds.
+		Weight::from_parts(17_445_321, 0)
+			.saturating_add(Weight::from_parts(0, 3591))
+			// Standard Error: 556
+			.saturating_add(Weight::from_parts(25_776, 0).saturating_mul(m.into()))
+			// Standard Error: 2_746
+			.saturating_add(Weight::from_parts(219_851, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(Weight::from_parts(0, 64).saturating_mul(m.into()))
+			.saturating_add(Weight::from_parts(0, 55).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::Voting` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `b` is `[2, 1024]`.
+	/// The range of component `m` is `[4, 100]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn close_early_approved(b: u32, m: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `62 + b * (1 ±0) + m * (64 ±0) + p * (78 ±0)`
+		//  Estimated: `3619 + b * (1 ±0) + m * (63 ±0) + p * (74 ±0)`
+		// Minimum execution time: 26_090_000 picoseconds.
+		Weight::from_parts(25_563_017, 0)
+			.saturating_add(Weight::from_parts(0, 3619))
+			// Standard Error: 93
+			.saturating_add(Weight::from_parts(1_791, 0).saturating_mul(b.into()))
+			// Standard Error: 992
+			.saturating_add(Weight::from_parts(16_478, 0).saturating_mul(m.into()))
+			// Standard Error: 4_893
+			.saturating_add(Weight::from_parts(316_241, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(Weight::from_parts(0, 1).saturating_mul(b.into()))
+			.saturating_add(Weight::from_parts(0, 63).saturating_mul(m.into()))
+			.saturating_add(Weight::from_parts(0, 74).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::Voting` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Prime` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Prime` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `m` is `[4, 100]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn close_disapproved(m: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `137 + m * (64 ±0) + p * (55 ±0)`
+		//  Estimated: `3611 + m * (64 ±0) + p * (55 ±0)`
+		// Minimum execution time: 20_576_000 picoseconds.
+		Weight::from_parts(19_188_057, 0)
+			.saturating_add(Weight::from_parts(0, 3611))
+			// Standard Error: 645
+			.saturating_add(Weight::from_parts(30_152, 0).saturating_mul(m.into()))
+			// Standard Error: 3_189
+			.saturating_add(Weight::from_parts(239_540, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(Weight::from_parts(0, 64).saturating_mul(m.into()))
+			.saturating_add(Weight::from_parts(0, 55).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::Voting` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Members` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Prime` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::Prime` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `b` is `[2, 1024]`.
+	/// The range of component `m` is `[4, 100]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn close_approved(b: u32, m: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `82 + b * (1 ±0) + m * (64 ±0) + p * (78 ±0)`
+		//  Estimated: `3639 + b * (1 ±0) + m * (63 ±0) + p * (74 ±0)`
+		// Minimum execution time: 27_227_000 picoseconds.
+		Weight::from_parts(26_466_178, 0)
+			.saturating_add(Weight::from_parts(0, 3639))
+			// Standard Error: 89
+			.saturating_add(Weight::from_parts(1_937, 0).saturating_mul(b.into()))
+			// Standard Error: 947
+			.saturating_add(Weight::from_parts(16_540, 0).saturating_mul(m.into()))
+			// Standard Error: 4_673
+			.saturating_add(Weight::from_parts(348_500, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(Weight::from_parts(0, 1).saturating_mul(b.into()))
+			.saturating_add(Weight::from_parts(0, 63).saturating_mul(m.into()))
+			.saturating_add(Weight::from_parts(0, 74).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::Proposals` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::Voting` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `p` is `[1, 20]`.
+	fn disapprove_proposal(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `189 + p * (32 ±0)`
+		//  Estimated: `1674 + p * (32 ±0)`
+		// Minimum execution time: 8_967_000 picoseconds.
+		Weight::from_parts(9_955_169, 0)
+			.saturating_add(Weight::from_parts(0, 1674))
+			// Standard Error: 1_869
+			.saturating_add(Weight::from_parts(183_205, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(Weight::from_parts(0, 32).saturating_mul(p.into()))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_distance.rs b/runtime/gtest/src/weights/pallet_distance.rs
new file mode 100644
index 000000000..56b0f2f4c
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_distance.rs
@@ -0,0 +1,252 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_distance`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_distance`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::PendingEvaluationRequest` (r:1 w:1)
+	/// Proof: `Distance::PendingEvaluationRequest` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:0)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:1 w:0)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::CurrentPoolIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPoolIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::EvaluationPool2` (r:1 w:1)
+	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Balances::Holds` (r:1 w:1)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
+	fn request_distance_evaluation() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1140`
+		//  Estimated: `4605`
+		// Minimum execution time: 52_056_000 picoseconds.
+		Weight::from_parts(53_665_000, 0)
+			.saturating_add(Weight::from_parts(0, 4605))
+			.saturating_add(T::DbWeight::get().reads(9))
+			.saturating_add(T::DbWeight::get().writes(4))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:2 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::PendingEvaluationRequest` (r:1 w:1)
+	/// Proof: `Distance::PendingEvaluationRequest` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:0)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:1 w:0)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::CurrentPoolIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPoolIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::EvaluationPool2` (r:1 w:1)
+	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Balances::Holds` (r:1 w:1)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
+	fn request_distance_evaluation_for() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1169`
+		//  Estimated: `7109`
+		// Minimum execution time: 54_811_000 picoseconds.
+		Weight::from_parts(55_787_000, 0)
+			.saturating_add(Weight::from_parts(0, 7109))
+			.saturating_add(T::DbWeight::get().reads(10))
+			.saturating_add(T::DbWeight::get().writes(4))
+	}
+	/// Storage: `Distance::DidUpdate` (r:1 w:1)
+	/// Proof: `Distance::DidUpdate` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Authorship::Author` (r:1 w:1)
+	/// Proof: `Authorship::Author` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	/// Storage: `System::Digest` (r:1 w:0)
+	/// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::Validators` (r:1 w:0)
+	/// Proof: `Session::Validators` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::CurrentPoolIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPoolIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::EvaluationPool0` (r:1 w:1)
+	/// Proof: `Distance::EvaluationPool0` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[1, 1300]`.
+	fn update_evaluation(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `401 + i * (10 ±0)`
+		//  Estimated: `1886 + i * (10 ±0)`
+		// Minimum execution time: 12_620_000 picoseconds.
+		Weight::from_parts(15_960_050, 0)
+			.saturating_add(Weight::from_parts(0, 1886))
+			// Standard Error: 235
+			.saturating_add(Weight::from_parts(110_850, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(Weight::from_parts(0, 10).saturating_mul(i.into()))
+	}
+	/// Storage: `Distance::CurrentPoolIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPoolIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::EvaluationPool0` (r:1 w:1)
+	/// Proof: `Distance::EvaluationPool0` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[1, 1300]`.
+	fn force_update_evaluation(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `139 + i * (10 ±0)`
+		//  Estimated: `1624 + i * (10 ±0)`
+		// Minimum execution time: 5_280_000 picoseconds.
+		Weight::from_parts(6_531_025, 0)
+			.saturating_add(Weight::from_parts(0, 1624))
+			// Standard Error: 369
+			.saturating_add(Weight::from_parts(113_248, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+			.saturating_add(Weight::from_parts(0, 10).saturating_mul(i.into()))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:2 w:2)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn force_valid_distance_status() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `572`
+		//  Estimated: `6512`
+		// Minimum execution time: 22_636_000 picoseconds.
+		Weight::from_parts(23_520_000, 0)
+			.saturating_add(Weight::from_parts(0, 6512))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	fn on_initialize_overhead() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 108_000 picoseconds.
+		Weight::from_parts(114_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `System::ParentHash` (r:1 w:0)
+	/// Proof: `System::ParentHash` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	/// Storage: `Distance::EvaluationPool2` (r:1 w:1)
+	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::PendingEvaluationRequest` (r:1 w:1)
+	/// Proof: `Distance::PendingEvaluationRequest` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Balances::Holds` (r:1 w:1)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
+	/// Storage: `Identity::Identities` (r:1 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:2 w:2)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::EvaluationBlock` (r:0 w:1)
+	/// Proof: `Distance::EvaluationBlock` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn do_evaluation_success() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `984`
+		//  Estimated: `6924`
+		// Minimum execution time: 52_747_000 picoseconds.
+		Weight::from_parts(54_047_000, 0)
+			.saturating_add(Weight::from_parts(0, 6924))
+			.saturating_add(T::DbWeight::get().reads(9))
+			.saturating_add(T::DbWeight::get().writes(8))
+	}
+	/// Storage: `System::ParentHash` (r:1 w:0)
+	/// Proof: `System::ParentHash` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	/// Storage: `Distance::EvaluationPool2` (r:1 w:1)
+	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::PendingEvaluationRequest` (r:1 w:1)
+	/// Proof: `Distance::PendingEvaluationRequest` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Balances::Holds` (r:1 w:1)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Distance::EvaluationBlock` (r:0 w:1)
+	/// Proof: `Distance::EvaluationBlock` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn do_evaluation_failure() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `412`
+		//  Estimated: `3877`
+		// Minimum execution time: 25_615_000 picoseconds.
+		Weight::from_parts(26_365_000, 0)
+			.saturating_add(Weight::from_parts(0, 3877))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
+	/// Storage: `System::ParentHash` (r:1 w:0)
+	/// Proof: `System::ParentHash` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	/// Storage: `Distance::EvaluationPool2` (r:1 w:0)
+	/// Proof: `Distance::EvaluationPool2` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Distance::EvaluationBlock` (r:0 w:1)
+	/// Proof: `Distance::EvaluationBlock` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn do_evaluation_overhead() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `109`
+		//  Estimated: `1594`
+		// Minimum execution time: 2_466_000 picoseconds.
+		Weight::from_parts(2_614_000, 0)
+			.saturating_add(Weight::from_parts(0, 1594))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Distance::DidUpdate` (r:1 w:1)
+	/// Proof: `Distance::DidUpdate` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	fn on_finalize() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `133`
+		//  Estimated: `1618`
+		// Minimum execution time: 2_476_000 picoseconds.
+		Weight::from_parts(2_607_000, 0)
+			.saturating_add(Weight::from_parts(0, 1618))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_duniter_account.rs b/runtime/gtest/src/weights/pallet_duniter_account.rs
new file mode 100644
index 000000000..0df4c912a
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_duniter_account.rs
@@ -0,0 +1,62 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_duniter_account`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_duniter_account`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_duniter_account::WeightInfo for WeightInfo<T> {
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn unlink_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `3558`
+		// Minimum execution time: 3_113_000 picoseconds.
+		Weight::from_parts(3_491_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_grandpa.rs b/runtime/gtest/src/weights/pallet_grandpa.rs
new file mode 100644
index 000000000..3c6528f7f
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_grandpa.rs
@@ -0,0 +1,55 @@
+// Copyright 2021 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Manual weights for the GRANDPA Pallet in duniter runtimes
+//! This file was not auto-generated.
+
+use frame_support::{
+    traits::Get,
+    weights::{
+        constants::{WEIGHT_REF_TIME_PER_MICROS, WEIGHT_REF_TIME_PER_NANOS},
+        Weight,
+    },
+};
+use sp_std::marker::PhantomData;
+
+/// Weight functions for `pallet_grandpa`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_grandpa::WeightInfo for WeightInfo<T> {
+    fn report_equivocation(validator_count: u32, _p: u32) -> Weight {
+        // we take the validator set count from the membership proof to
+        // calculate the weight but we set a floor of 100 validators.
+        let validator_count = validator_count.max(100) as u64;
+
+        // checking membership proof
+        (Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 35)
+            .saturating_add(Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS, 0) * 175)
+            .saturating_mul(validator_count)
+            .saturating_add(T::DbWeight::get().reads(5))
+            // check equivocation proof
+            .saturating_add(Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 95)
+            // report offence
+            .saturating_add(Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 110)
+            .saturating_add(T::DbWeight::get().writes(3))
+            // fetching set id -> session index mappings
+            .saturating_add(T::DbWeight::get().reads(2))
+    }
+
+    fn note_stalled() -> Weight {
+        (Weight::from_parts(WEIGHT_REF_TIME_PER_MICROS, 0) * 3)
+            .saturating_add(T::DbWeight::get().writes(1))
+    }
+}
diff --git a/runtime/gtest/src/weights/pallet_identity.rs b/runtime/gtest/src/weights/pallet_identity.rs
new file mode 100644
index 000000000..8848eff21
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_identity.rs
@@ -0,0 +1,402 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_identity`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_identity`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
+	/// Storage: `Identity::IdentityIndexOf` (r:2 w:1)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:2 w:2)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:2 w:2)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Identity::NextIdtyIndex` (r:1 w:1)
+	/// Proof: `Identity::NextIdtyIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:1 w:1)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::CounterForIdentities` (r:1 w:1)
+	/// Proof: `Identity::CounterForIdentities` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Certification::CertsRemovableOn` (r:1 w:1)
+	/// Proof: `Certification::CertsRemovableOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	fn create_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1099`
+		//  Estimated: `7039`
+		// Minimum execution time: 60_568_000 picoseconds.
+		Weight::from_parts(62_548_000, 0)
+			.saturating_add(Weight::from_parts(0, 7039))
+			.saturating_add(T::DbWeight::get().reads(12))
+			.saturating_add(T::DbWeight::get().writes(12))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentitiesNames` (r:1 w:1)
+	/// Proof: `Identity::IdentitiesNames` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn confirm_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `822`
+		//  Estimated: `6762`
+		// Minimum execution time: 27_526_000 picoseconds.
+		Weight::from_parts(30_009_000, 0)
+			.saturating_add(Weight::from_parts(0, 6762))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(4))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:2 w:2)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::BlockHash` (r:1 w:0)
+	/// Proof: `System::BlockHash` (`max_values`: None, `max_size`: Some(44), added: 2519, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn change_owner_key() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `793`
+		//  Estimated: `6733`
+		// Minimum execution time: 74_078_000 picoseconds.
+		Weight::from_parts(76_682_000, 0)
+			.saturating_add(Weight::from_parts(0, 6733))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::BlockHash` (r:1 w:0)
+	/// Proof: `System::BlockHash` (`max_values`: None, `max_size`: Some(44), added: 2519, mode: `MaxEncodedLen`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	fn revoke_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `731`
+		//  Estimated: `6671`
+		// Minimum execution time: 65_375_000 picoseconds.
+		Weight::from_parts(67_602_000, 0)
+			.saturating_add(Weight::from_parts(0, 6671))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
+	/// Storage: `Identity::IdentitiesNames` (r:0 w:999)
+	/// Proof: `Identity::IdentitiesNames` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[2, 1000]`.
+	fn prune_item_identities_names(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_791_000 picoseconds.
+		Weight::from_parts(3_299_913, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 1_878
+			.saturating_add(Weight::from_parts(1_254_985, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().writes(1))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
+	}
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn fix_sufficients() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `104`
+		//  Estimated: `3558`
+		// Minimum execution time: 6_201_000 picoseconds.
+		Weight::from_parts(6_672_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::BlockHash` (r:1 w:0)
+	/// Proof: `System::BlockHash` (`max_values`: None, `max_size`: Some(44), added: 2519, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn link_account() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `436`
+		//  Estimated: `3901`
+		// Minimum execution time: 50_194_000 picoseconds.
+		Weight::from_parts(51_797_000, 0)
+			.saturating_add(Weight::from_parts(0, 3901))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn on_initialize() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 85_000 picoseconds.
+		Weight::from_parts(111_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_revoke_identity_noop() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `360`
+		//  Estimated: `3825`
+		// Minimum execution time: 3_459_000 picoseconds.
+		Weight::from_parts(3_738_000, 0)
+			.saturating_add(Weight::from_parts(0, 3825))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::CounterForMembership` (r:1 w:1)
+	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:1 w:1)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_revoke_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1930`
+		//  Estimated: `15295`
+		// Minimum execution time: 93_899_000 picoseconds.
+		Weight::from_parts(96_872_000, 0)
+			.saturating_add(Weight::from_parts(0, 15295))
+			.saturating_add(T::DbWeight::get().reads(18))
+			.saturating_add(T::DbWeight::get().writes(22))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_remove_identity_noop() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `360`
+		//  Estimated: `3825`
+		// Minimum execution time: 3_743_000 picoseconds.
+		Weight::from_parts(3_918_000, 0)
+			.saturating_add(Weight::from_parts(0, 3825))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::CounterForIdentities` (r:1 w:1)
+	/// Proof: `Identity::CounterForIdentities` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::CounterForMembership` (r:1 w:1)
+	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:1 w:1)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:6 w:6)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityIndexOf` (r:0 w:1)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_remove_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `2355`
+		//  Estimated: `18195`
+		// Minimum execution time: 128_451_000 picoseconds.
+		Weight::from_parts(134_032_000, 0)
+			.saturating_add(Weight::from_parts(0, 18195))
+			.saturating_add(T::DbWeight::get().reads(24))
+			.saturating_add(T::DbWeight::get().writes(30))
+	}
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::CounterForMembership` (r:1 w:1)
+	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:1 w:1)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:6 w:6)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_remove_identity_handler() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `2372`
+		//  Estimated: `18212`
+		// Minimum execution time: 126_251_000 picoseconds.
+		Weight::from_parts(137_156_000, 0)
+			.saturating_add(Weight::from_parts(0, 18212))
+			.saturating_add(T::DbWeight::get().reads(25))
+			.saturating_add(T::DbWeight::get().writes(29))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn membership_removed() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `441`
+		//  Estimated: `6381`
+		// Minimum execution time: 13_836_000 picoseconds.
+		Weight::from_parts(15_109_000, 0)
+			.saturating_add(Weight::from_parts(0, 6381))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `Identity::IdentityChangeSchedule` (r:1 w:0)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn prune_identities_noop() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `165`
+		//  Estimated: `3630`
+		// Minimum execution time: 2_667_000 picoseconds.
+		Weight::from_parts(2_858_000, 0)
+			.saturating_add(Weight::from_parts(0, 3630))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Identity::IdentityChangeSchedule` (r:1 w:1)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:0)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn prune_identities_none() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `363`
+		//  Estimated: `3828`
+		// Minimum execution time: 5_682_000 picoseconds.
+		Weight::from_parts(6_114_000, 0)
+			.saturating_add(Weight::from_parts(0, 3828))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Identity::IdentityChangeSchedule` (r:1 w:1)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::CounterForIdentities` (r:1 w:1)
+	/// Proof: `Identity::CounterForIdentities` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:0)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityIndexOf` (r:0 w:1)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	fn prune_identities_err() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `952`
+		//  Estimated: `4417`
+		// Minimum execution time: 28_981_000 picoseconds.
+		Weight::from_parts(30_165_000, 0)
+			.saturating_add(Weight::from_parts(0, 4417))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(7))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_im_online.rs b/runtime/gtest/src/weights/pallet_im_online.rs
new file mode 100644
index 000000000..c1ca6c9d6
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_im_online.rs
@@ -0,0 +1,74 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_im_online`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_im_online`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_im_online::WeightInfo for WeightInfo<T> {
+	/// Storage: `Session::Validators` (r:1 w:0)
+	/// Proof: `Session::Validators` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::CurrentIndex` (r:1 w:0)
+	/// Proof: `Session::CurrentIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `ImOnline::Keys` (r:1 w:0)
+	/// Proof: `ImOnline::Keys` (`max_values`: Some(1), `max_size`: Some(32002), added: 32497, mode: `MaxEncodedLen`)
+	/// Storage: `ImOnline::ReceivedHeartbeats` (r:1 w:1)
+	/// Proof: `ImOnline::ReceivedHeartbeats` (`max_values`: None, `max_size`: Some(25), added: 2500, mode: `MaxEncodedLen`)
+	/// Storage: `ImOnline::AuthoredBlocks` (r:1 w:0)
+	/// Proof: `ImOnline::AuthoredBlocks` (`max_values`: None, `max_size`: Some(56), added: 2531, mode: `MaxEncodedLen`)
+	/// The range of component `k` is `[1, 1000]`.
+	fn validate_unsigned_and_then_heartbeat(k: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `525 + k * (32 ±0)`
+		//  Estimated: `33487 + k * (1761 ±0)`
+		// Minimum execution time: 47_942_000 picoseconds.
+		Weight::from_parts(73_778_685, 0)
+			.saturating_add(Weight::from_parts(0, 33487))
+			// Standard Error: 1_329
+			.saturating_add(Weight::from_parts(42_408, 0).saturating_mul(k.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(1))
+			.saturating_add(Weight::from_parts(0, 1761).saturating_mul(k.into()))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_membership.rs b/runtime/gtest/src/weights/pallet_membership.rs
new file mode 100644
index 000000000..70a5f609e
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_membership.rs
@@ -0,0 +1,102 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_membership`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_membership`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
+	fn on_initialize() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 84_000 picoseconds.
+		Weight::from_parts(112_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `Membership::MembershipsExpireOn` (r:2 w:2)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:3 w:3)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::CounterForMembership` (r:1 w:1)
+	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Identity::Identities` (r:3 w:3)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:3 w:3)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:3 w:3)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:3 w:3)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:12)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[0, 3]`.
+	fn expire_memberships(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `139 + i * (992 ±0)`
+		//  Estimated: `15059 + i * (2695 ±1)`
+		// Minimum execution time: 3_892_000 picoseconds.
+		Weight::from_parts(10_569_068, 0)
+			.saturating_add(Weight::from_parts(0, 15059))
+			// Standard Error: 452_425
+			.saturating_add(Weight::from_parts(69_087_448, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().reads((11_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(T::DbWeight::get().writes((15_u64).saturating_mul(i.into())))
+			.saturating_add(Weight::from_parts(0, 2695).saturating_mul(i.into()))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_multisig.rs b/runtime/gtest/src/weights/pallet_multisig.rs
new file mode 100644
index 000000000..4e475e3ec
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_multisig.rs
@@ -0,0 +1,162 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_multisig`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_multisig`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
+	/// The range of component `z` is `[0, 10000]`.
+	fn as_multi_threshold_1(z: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 4_699_000 picoseconds.
+		Weight::from_parts(5_263_244, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 7
+			.saturating_add(Weight::from_parts(313, 0).saturating_mul(z.into()))
+	}
+	/// Storage: `Multisig::Multisigs` (r:1 w:1)
+	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[2, 10]`.
+	/// The range of component `z` is `[0, 10000]`.
+	fn as_multi_create(s: u32, z: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `125 + s * (5 ±0)`
+		//  Estimated: `3922`
+		// Minimum execution time: 24_125_000 picoseconds.
+		Weight::from_parts(24_413_637, 0)
+			.saturating_add(Weight::from_parts(0, 3922))
+			// Standard Error: 22_527
+			.saturating_add(Weight::from_parts(167_639, 0).saturating_mul(s.into()))
+			// Standard Error: 19
+			.saturating_add(Weight::from_parts(1_048, 0).saturating_mul(z.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Multisig::Multisigs` (r:1 w:1)
+	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[3, 10]`.
+	/// The range of component `z` is `[0, 10000]`.
+	fn as_multi_approve(s: u32, z: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `240`
+		//  Estimated: `3922`
+		// Minimum execution time: 13_744_000 picoseconds.
+		Weight::from_parts(14_050_186, 0)
+			.saturating_add(Weight::from_parts(0, 3922))
+			// Standard Error: 7_060
+			.saturating_add(Weight::from_parts(44_591, 0).saturating_mul(s.into()))
+			// Standard Error: 5
+			.saturating_add(Weight::from_parts(1_058, 0).saturating_mul(z.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Multisig::Multisigs` (r:1 w:1)
+	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[2, 10]`.
+	/// The range of component `z` is `[0, 10000]`.
+	fn as_multi_complete(s: u32, z: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `259 + s * (37 ±0)`
+		//  Estimated: `3922`
+		// Minimum execution time: 26_183_000 picoseconds.
+		Weight::from_parts(27_484_481, 0)
+			.saturating_add(Weight::from_parts(0, 3922))
+			// Standard Error: 20_825
+			.saturating_add(Weight::from_parts(103_463, 0).saturating_mul(s.into()))
+			// Standard Error: 17
+			.saturating_add(Weight::from_parts(979, 0).saturating_mul(z.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Multisig::Multisigs` (r:1 w:1)
+	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[2, 10]`.
+	fn approve_as_multi_create(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `130 + s * (5 ±0)`
+		//  Estimated: `3922`
+		// Minimum execution time: 21_995_000 picoseconds.
+		Weight::from_parts(23_522_711, 0)
+			.saturating_add(Weight::from_parts(0, 3922))
+			// Standard Error: 9_156
+			.saturating_add(Weight::from_parts(109_995, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Multisig::Multisigs` (r:1 w:1)
+	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[2, 10]`.
+	fn approve_as_multi_approve(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `240`
+		//  Estimated: `3922`
+		// Minimum execution time: 11_550_000 picoseconds.
+		Weight::from_parts(12_288_852, 0)
+			.saturating_add(Weight::from_parts(0, 3922))
+			// Standard Error: 4_183
+			.saturating_add(Weight::from_parts(134_766, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Multisig::Multisigs` (r:1 w:1)
+	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[2, 10]`.
+	fn cancel_as_multi(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `328 + s * (5 ±0)`
+		//  Estimated: `3922`
+		// Minimum execution time: 22_301_000 picoseconds.
+		Weight::from_parts(23_414_138, 0)
+			.saturating_add(Weight::from_parts(0, 3922))
+			// Standard Error: 9_039
+			.saturating_add(Weight::from_parts(167_479, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_oneshot_account.rs b/runtime/gtest/src/weights/pallet_oneshot_account.rs
new file mode 100644
index 000000000..6be9d5f83
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_oneshot_account.rs
@@ -0,0 +1,94 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_oneshot_account`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_oneshot_account`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<T> {
+	/// Storage: `OneshotAccount::OneshotAccounts` (r:1 w:1)
+	/// Proof: `OneshotAccount::OneshotAccounts` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn create_oneshot_account() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `42`
+		//  Estimated: `3507`
+		// Minimum execution time: 18_832_000 picoseconds.
+		Weight::from_parts(19_599_000, 0)
+			.saturating_add(Weight::from_parts(0, 3507))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `OneshotAccount::OneshotAccounts` (r:1 w:1)
+	/// Proof: `OneshotAccount::OneshotAccounts` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::BlockHash` (r:1 w:0)
+	/// Proof: `System::BlockHash` (`max_values`: None, `max_size`: Some(44), added: 2519, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn consume_oneshot_account() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `241`
+		//  Estimated: `3706`
+		// Minimum execution time: 26_164_000 picoseconds.
+		Weight::from_parts(26_931_000, 0)
+			.saturating_add(Weight::from_parts(0, 3706))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `OneshotAccount::OneshotAccounts` (r:1 w:1)
+	/// Proof: `OneshotAccount::OneshotAccounts` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::BlockHash` (r:1 w:0)
+	/// Proof: `System::BlockHash` (`max_values`: None, `max_size`: Some(44), added: 2519, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn consume_oneshot_account_with_remaining() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `301`
+		//  Estimated: `6126`
+		// Minimum execution time: 38_966_000 picoseconds.
+		Weight::from_parts(40_216_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_preimage.rs b/runtime/gtest/src/weights/pallet_preimage.rs
new file mode 100644
index 000000000..900a5293b
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_preimage.rs
@@ -0,0 +1,259 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_preimage`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_preimage`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::PreimageFor` (r:0 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[0, 4194304]`.
+	fn note_preimage(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `42`
+		//  Estimated: `3548`
+		// Minimum execution time: 11_096_000 picoseconds.
+		Weight::from_parts(11_490_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			// Standard Error: 1
+			.saturating_add(Weight::from_parts(1_327, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::PreimageFor` (r:0 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[0, 4194304]`.
+	fn note_requested_preimage(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `106`
+		//  Estimated: `3548`
+		// Minimum execution time: 12_986_000 picoseconds.
+		Weight::from_parts(13_523_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			// Standard Error: 1
+			.saturating_add(Weight::from_parts(1_326, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::PreimageFor` (r:0 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[0, 4194304]`.
+	fn note_no_deposit_preimage(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `106`
+		//  Estimated: `3548`
+		// Minimum execution time: 11_244_000 picoseconds.
+		Weight::from_parts(11_696_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(1_411, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::PreimageFor` (r:0 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	fn unnote_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `172`
+		//  Estimated: `3548`
+		// Minimum execution time: 21_094_000 picoseconds.
+		Weight::from_parts(22_313_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::PreimageFor` (r:0 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	fn unnote_no_deposit_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `144`
+		//  Estimated: `3548`
+		// Minimum execution time: 21_403_000 picoseconds.
+		Weight::from_parts(23_715_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	fn request_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `172`
+		//  Estimated: `3548`
+		// Minimum execution time: 18_897_000 picoseconds.
+		Weight::from_parts(20_049_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	fn request_no_deposit_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `144`
+		//  Estimated: `3548`
+		// Minimum execution time: 12_881_000 picoseconds.
+		Weight::from_parts(14_393_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	fn request_unnoted_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `42`
+		//  Estimated: `3548`
+		// Minimum execution time: 9_311_000 picoseconds.
+		Weight::from_parts(11_414_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	fn request_requested_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `106`
+		//  Estimated: `3548`
+		// Minimum execution time: 6_791_000 picoseconds.
+		Weight::from_parts(8_073_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::PreimageFor` (r:0 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	fn unrequest_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `144`
+		//  Estimated: `3548`
+		// Minimum execution time: 19_828_000 picoseconds.
+		Weight::from_parts(21_980_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	fn unrequest_unnoted_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `106`
+		//  Estimated: `3548`
+		// Minimum execution time: 6_757_000 picoseconds.
+		Weight::from_parts(7_625_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	fn unrequest_multi_referenced_preimage() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `106`
+		//  Estimated: `3548`
+		// Minimum execution time: 7_126_000 picoseconds.
+		Weight::from_parts(8_056_000, 0)
+			.saturating_add(Weight::from_parts(0, 3548))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Preimage::StatusFor` (r:1023 w:1023)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1023 w:1023)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:0 w:1023)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// The range of component `n` is `[1, 1024]`.
+	fn ensure_updated(n: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0 + n * (179 ±0)`
+		//  Estimated: `990 + n * (2568 ±0)`
+		// Minimum execution time: 16_922_000 picoseconds.
+		Weight::from_parts(17_103_000, 0)
+			.saturating_add(Weight::from_parts(0, 990))
+			// Standard Error: 17_243
+			.saturating_add(Weight::from_parts(13_455_259, 0).saturating_mul(n.into()))
+			.saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(n.into())))
+			.saturating_add(T::DbWeight::get().writes((3_u64).saturating_mul(n.into())))
+			.saturating_add(Weight::from_parts(0, 2568).saturating_mul(n.into()))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_provide_randomness.rs b/runtime/gtest/src/weights/pallet_provide_randomness.rs
new file mode 100644
index 000000000..1123eafca
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_provide_randomness.rs
@@ -0,0 +1,132 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_provide_randomness`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_provide_randomness`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_provide_randomness::WeightInfo for WeightInfo<T> {
+	/// Storage: `ProvideRandomness::CounterForRequestsIds` (r:1 w:1)
+	/// Proof: `ProvideRandomness::CounterForRequestsIds` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `ProvideRandomness::RequestIdProvider` (r:1 w:1)
+	/// Proof: `ProvideRandomness::RequestIdProvider` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `ProvideRandomness::RequestsIds` (r:1 w:1)
+	/// Proof: `ProvideRandomness::RequestsIds` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Babe::EpochIndex` (r:1 w:0)
+	/// Proof: `Babe::EpochIndex` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `ProvideRandomness::NexEpochHookIn` (r:1 w:0)
+	/// Proof: `ProvideRandomness::NexEpochHookIn` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `ProvideRandomness::RequestsReadyAtEpoch` (r:1 w:1)
+	/// Proof: `ProvideRandomness::RequestsReadyAtEpoch` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn request() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `298`
+		//  Estimated: `3763`
+		// Minimum execution time: 38_335_000 picoseconds.
+		Weight::from_parts(40_247_000, 0)
+			.saturating_add(Weight::from_parts(0, 3763))
+			.saturating_add(T::DbWeight::get().reads(7))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
+	/// Storage: `ProvideRandomness::RequestsReadyAtNextBlock` (r:1 w:1)
+	/// Proof: `ProvideRandomness::RequestsReadyAtNextBlock` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Babe::AuthorVrfRandomness` (r:1 w:0)
+	/// Proof: `Babe::AuthorVrfRandomness` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`)
+	/// Storage: `ProvideRandomness::RequestsIds` (r:100 w:100)
+	/// Proof: `ProvideRandomness::RequestsIds` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `ProvideRandomness::CounterForRequestsIds` (r:1 w:1)
+	/// Proof: `ProvideRandomness::CounterForRequestsIds` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `ProvideRandomness::NexEpochHookIn` (r:1 w:1)
+	/// Proof: `ProvideRandomness::NexEpochHookIn` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// The range of component `i` is `[1, 100]`.
+	fn on_initialize(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `341 + i * (59 ±0)`
+		//  Estimated: `1827 + i * (2535 ±0)`
+		// Minimum execution time: 14_850_000 picoseconds.
+		Weight::from_parts(14_186_869, 0)
+			.saturating_add(Weight::from_parts(0, 1827))
+			// Standard Error: 9_225
+			.saturating_add(Weight::from_parts(4_960_837, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
+			.saturating_add(Weight::from_parts(0, 2535).saturating_mul(i.into()))
+	}
+	/// Storage: `ProvideRandomness::RequestsReadyAtNextBlock` (r:1 w:0)
+	/// Proof: `ProvideRandomness::RequestsReadyAtNextBlock` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `ProvideRandomness::NexEpochHookIn` (r:1 w:1)
+	/// Proof: `ProvideRandomness::NexEpochHookIn` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Babe::EpochIndex` (r:1 w:0)
+	/// Proof: `Babe::EpochIndex` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `ProvideRandomness::RequestsReadyAtEpoch` (r:1 w:1)
+	/// Proof: `ProvideRandomness::RequestsReadyAtEpoch` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Babe::NextRandomness` (r:1 w:0)
+	/// Proof: `Babe::NextRandomness` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	/// Storage: `Babe::EpochStart` (r:1 w:0)
+	/// Proof: `Babe::EpochStart` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `ProvideRandomness::RequestsIds` (r:100 w:100)
+	/// Proof: `ProvideRandomness::RequestsIds` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `ProvideRandomness::CounterForRequestsIds` (r:1 w:1)
+	/// Proof: `ProvideRandomness::CounterForRequestsIds` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// The range of component `i` is `[1, 100]`.
+	fn on_initialize_epoch(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `351 + i * (59 ±0)`
+		//  Estimated: `3817 + i * (2535 ±0)`
+		// Minimum execution time: 16_711_000 picoseconds.
+		Weight::from_parts(15_215_399, 0)
+			.saturating_add(Weight::from_parts(0, 3817))
+			// Standard Error: 11_027
+			.saturating_add(Weight::from_parts(5_405_374, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(7))
+			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
+			.saturating_add(Weight::from_parts(0, 2535).saturating_mul(i.into()))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_proxy.rs b/runtime/gtest/src/weights/pallet_proxy.rs
new file mode 100644
index 000000000..75e3008ac
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_proxy.rs
@@ -0,0 +1,221 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_proxy`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_proxy`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
+	/// Storage: `Proxy::Proxies` (r:1 w:0)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// The range of component `p` is `[1, 31]`.
+	fn proxy(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `157 + p * (37 ±0)`
+		//  Estimated: `4698`
+		// Minimum execution time: 10_890_000 picoseconds.
+		Weight::from_parts(11_877_365, 0)
+			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 1_477
+			.saturating_add(Weight::from_parts(27_659, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:0)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2225), added: 4700, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `a` is `[0, 31]`.
+	/// The range of component `p` is `[1, 31]`.
+	fn proxy_announced(a: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `399 + a * (68 ±0) + p * (37 ±0)`
+		//  Estimated: `5690`
+		// Minimum execution time: 26_698_000 picoseconds.
+		Weight::from_parts(27_355_045, 0)
+			.saturating_add(Weight::from_parts(0, 5690))
+			// Standard Error: 2_499
+			.saturating_add(Weight::from_parts(154_161, 0).saturating_mul(a.into()))
+			// Standard Error: 2_582
+			.saturating_add(Weight::from_parts(34_084, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2225), added: 4700, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `a` is `[0, 31]`.
+	/// The range of component `p` is `[1, 31]`.
+	fn remove_announcement(a: u32, _p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `322 + a * (68 ±0)`
+		//  Estimated: `5690`
+		// Minimum execution time: 18_690_000 picoseconds.
+		Weight::from_parts(19_736_844, 0)
+			.saturating_add(Weight::from_parts(0, 5690))
+			// Standard Error: 1_719
+			.saturating_add(Weight::from_parts(130_663, 0).saturating_mul(a.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2225), added: 4700, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `a` is `[0, 31]`.
+	/// The range of component `p` is `[1, 31]`.
+	fn reject_announcement(a: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `322 + a * (68 ±0)`
+		//  Estimated: `5690`
+		// Minimum execution time: 18_701_000 picoseconds.
+		Weight::from_parts(19_617_996, 0)
+			.saturating_add(Weight::from_parts(0, 5690))
+			// Standard Error: 1_835
+			.saturating_add(Weight::from_parts(126_887, 0).saturating_mul(a.into()))
+			// Standard Error: 1_896
+			.saturating_add(Weight::from_parts(4_138, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:0)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2225), added: 4700, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `a` is `[0, 31]`.
+	/// The range of component `p` is `[1, 31]`.
+	fn announce(a: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `331 + a * (68 ±0) + p * (37 ±0)`
+		//  Estimated: `5690`
+		// Minimum execution time: 24_723_000 picoseconds.
+		Weight::from_parts(25_224_488, 0)
+			.saturating_add(Weight::from_parts(0, 5690))
+			// Standard Error: 1_953
+			.saturating_add(Weight::from_parts(129_027, 0).saturating_mul(a.into()))
+			// Standard Error: 2_017
+			.saturating_add(Weight::from_parts(35_465, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// The range of component `p` is `[1, 31]`.
+	fn add_proxy(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `157 + p * (37 ±0)`
+		//  Estimated: `4698`
+		// Minimum execution time: 17_631_000 picoseconds.
+		Weight::from_parts(18_685_183, 0)
+			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 1_593
+			.saturating_add(Weight::from_parts(41_087, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// The range of component `p` is `[1, 31]`.
+	fn remove_proxy(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `157 + p * (37 ±0)`
+		//  Estimated: `4698`
+		// Minimum execution time: 17_697_000 picoseconds.
+		Weight::from_parts(18_812_108, 0)
+			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 1_873
+			.saturating_add(Weight::from_parts(49_649, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// The range of component `p` is `[1, 31]`.
+	fn remove_proxies(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `157 + p * (37 ±0)`
+		//  Estimated: `4698`
+		// Minimum execution time: 16_173_000 picoseconds.
+		Weight::from_parts(17_374_790, 0)
+			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 1_350
+			.saturating_add(Weight::from_parts(21_683, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// The range of component `p` is `[1, 31]`.
+	fn create_pure(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `177`
+		//  Estimated: `4698`
+		// Minimum execution time: 18_838_000 picoseconds.
+		Weight::from_parts(19_852_000, 0)
+			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 2_006
+			.saturating_add(Weight::from_parts(21_449, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1233), added: 3708, mode: `MaxEncodedLen`)
+	/// The range of component `p` is `[0, 30]`.
+	fn kill_pure(p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `194 + p * (37 ±0)`
+		//  Estimated: `4698`
+		// Minimum execution time: 16_684_000 picoseconds.
+		Weight::from_parts(17_753_276, 0)
+			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 1_612
+			.saturating_add(Weight::from_parts(34_271, 0).saturating_mul(p.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_quota.rs b/runtime/gtest/src/weights/pallet_quota.rs
new file mode 100644
index 000000000..a19434338
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_quota.rs
@@ -0,0 +1,133 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_quota`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-05-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/common/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_quota`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
+	/// Storage: `Quota::RefundQueue` (r:1 w:1)
+	/// Proof: `Quota::RefundQueue` (`max_values`: Some(1), `max_size`: Some(11266), added: 11761, mode: `MaxEncodedLen`)
+	fn queue_refund() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `11288`
+		//  Estimated: `12751`
+		// Minimum execution time: 7_146_000 picoseconds.
+		Weight::from_parts(7_473_000, 0)
+			.saturating_add(Weight::from_parts(0, 12751))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Quota::IdtyQuota` (r:1 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	fn spend_quota() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `139`
+		//  Estimated: `3489`
+		// Minimum execution time: 4_469_000 picoseconds.
+		Weight::from_parts(4_731_000, 0)
+			.saturating_add(Weight::from_parts(0, 3489))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Quota::IdtyQuota` (r:1 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn try_refund() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `202`
+		//  Estimated: `6126`
+		// Minimum execution time: 21_893_000 picoseconds.
+		Weight::from_parts(22_789_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Quota::IdtyQuota` (r:1 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn do_refund() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `202`
+		//  Estimated: `6126`
+		// Minimum execution time: 21_581_000 picoseconds.
+		Weight::from_parts(22_465_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Quota::RefundQueue` (r:1 w:1)
+	/// Proof: `Quota::RefundQueue` (`max_values`: Some(1), `max_size`: Some(11266), added: 11761, mode: `MaxEncodedLen`)
+	fn on_process_refund_queue() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `43`
+		//  Estimated: `12751`
+		// Minimum execution time: 1_759_000 picoseconds.
+		Weight::from_parts(1_953_000, 0)
+			.saturating_add(Weight::from_parts(0, 12751))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Quota::RefundQueue` (r:1 w:1)
+	/// Proof: `Quota::RefundQueue` (`max_values`: Some(1), `max_size`: Some(11266), added: 11761, mode: `MaxEncodedLen`)
+	/// Storage: `Quota::IdtyQuota` (r:1 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `i` is `[1, 256]`.
+	fn on_process_refund_queue_elements(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `227 + i * (44 ±0)`
+		//  Estimated: `12751`
+		// Minimum execution time: 25_323_000 picoseconds.
+		Weight::from_parts(39_142_016, 0)
+			.saturating_add(Weight::from_parts(0, 12751))
+			// Standard Error: 2_270
+			.saturating_add(Weight::from_parts(1_181_628, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_scheduler.rs b/runtime/gtest/src/weights/pallet_scheduler.rs
new file mode 100644
index 000000000..df0dbbbf9
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_scheduler.rs
@@ -0,0 +1,286 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_scheduler`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_scheduler`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
+	/// Storage: `Scheduler::IncompleteSince` (r:1 w:1)
+	/// Proof: `Scheduler::IncompleteSince` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	fn service_agendas_base() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `30`
+		//  Estimated: `1489`
+		// Minimum execution time: 2_097_000 picoseconds.
+		Weight::from_parts(2_284_000, 0)
+			.saturating_add(Weight::from_parts(0, 1489))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Scheduler::Agenda` (r:1 w:1)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[0, 50]`.
+	fn service_agenda_base(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `77 + s * (177 ±0)`
+		//  Estimated: `13928`
+		// Minimum execution time: 2_640_000 picoseconds.
+		Weight::from_parts(5_367_968, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			// Standard Error: 1_842
+			.saturating_add(Weight::from_parts(292_674, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn service_task_base() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 2_070_000 picoseconds.
+		Weight::from_parts(2_310_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `Preimage::PreimageFor` (r:1 w:1)
+	/// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::StatusFor` (r:1 w:0)
+	/// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(83), added: 2558, mode: `MaxEncodedLen`)
+	/// Storage: `Preimage::RequestStatusFor` (r:1 w:1)
+	/// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[128, 4194304]`.
+	fn service_task_fetched(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `179 + s * (1 ±0)`
+		//  Estimated: `4197809`
+		// Minimum execution time: 13_906_000 picoseconds.
+		Weight::from_parts(14_116_000, 0)
+			.saturating_add(Weight::from_parts(0, 4197809))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(878, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Scheduler::Lookup` (r:0 w:1)
+	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
+	fn service_task_named() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_422_000 picoseconds.
+		Weight::from_parts(3_645_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn service_task_periodic() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 2_151_000 picoseconds.
+		Weight::from_parts(2_342_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn execute_dispatch_signed() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 1_457_000 picoseconds.
+		Weight::from_parts(1_637_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn execute_dispatch_unsigned() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 1_468_000 picoseconds.
+		Weight::from_parts(1_622_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `Scheduler::Agenda` (r:1 w:1)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[0, 49]`.
+	fn schedule(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `77 + s * (177 ±0)`
+		//  Estimated: `13928`
+		// Minimum execution time: 7_671_000 picoseconds.
+		Weight::from_parts(10_246_233, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			// Standard Error: 1_487
+			.saturating_add(Weight::from_parts(309_876, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Scheduler::Agenda` (r:1 w:1)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Lookup` (r:0 w:1)
+	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[1, 50]`.
+	fn cancel(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `77 + s * (177 ±0)`
+		//  Estimated: `13928`
+		// Minimum execution time: 11_887_000 picoseconds.
+		Weight::from_parts(12_537_285, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			// Standard Error: 1_774
+			.saturating_add(Weight::from_parts(495_233, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `Scheduler::Lookup` (r:1 w:1)
+	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Agenda` (r:1 w:1)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[0, 49]`.
+	fn schedule_named(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `254 + s * (185 ±0)`
+		//  Estimated: `13928`
+		// Minimum execution time: 9_874_000 picoseconds.
+		Weight::from_parts(14_264_929, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			// Standard Error: 3_562
+			.saturating_add(Weight::from_parts(352_228, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Scheduler::Lookup` (r:1 w:1)
+	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Agenda` (r:1 w:1)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[1, 50]`.
+	fn cancel_named(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `280 + s * (185 ±0)`
+		//  Estimated: `13928`
+		// Minimum execution time: 13_888_000 picoseconds.
+		Weight::from_parts(15_429_585, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			// Standard Error: 2_373
+			.saturating_add(Weight::from_parts(526_895, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `Scheduler::Agenda` (r:1 w:1)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	/// The range of component `s` is `[1, 50]`.
+	fn schedule_retry(s: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `117`
+		//  Estimated: `13928`
+		// Minimum execution time: 6_882_000 picoseconds.
+		Weight::from_parts(7_593_613, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			// Standard Error: 601
+			.saturating_add(Weight::from_parts(23_144, 0).saturating_mul(s.into()))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Scheduler::Agenda` (r:1 w:0)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	fn set_retry() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `8927`
+		//  Estimated: `13928`
+		// Minimum execution time: 20_333_000 picoseconds.
+		Weight::from_parts(21_489_000, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Scheduler::Lookup` (r:1 w:0)
+	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Agenda` (r:1 w:0)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	fn set_retry_named() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `9605`
+		//  Estimated: `13928`
+		// Minimum execution time: 25_749_000 picoseconds.
+		Weight::from_parts(26_556_000, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Scheduler::Agenda` (r:1 w:0)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	fn cancel_retry() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `8939`
+		//  Estimated: `13928`
+		// Minimum execution time: 19_505_000 picoseconds.
+		Weight::from_parts(20_481_000, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Scheduler::Lookup` (r:1 w:0)
+	/// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Agenda` (r:1 w:0)
+	/// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(10463), added: 12938, mode: `MaxEncodedLen`)
+	/// Storage: `Scheduler::Retries` (r:0 w:1)
+	/// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(30), added: 2505, mode: `MaxEncodedLen`)
+	fn cancel_retry_named() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `9617`
+		//  Estimated: `13928`
+		// Minimum execution time: 25_152_000 picoseconds.
+		Weight::from_parts(26_297_000, 0)
+			.saturating_add(Weight::from_parts(0, 13928))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_session.rs b/runtime/gtest/src/weights/pallet_session.rs
new file mode 100644
index 000000000..7d6c25f86
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_session.rs
@@ -0,0 +1,78 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_session`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_session`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::KeyOwner` (r:4 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn set_keys() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `810`
+		//  Estimated: `11700`
+		// Minimum execution time: 22_799_000 picoseconds.
+		Weight::from_parts(24_023_000, 0)
+			.saturating_add(Weight::from_parts(0, 11700))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn purge_keys() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `477`
+		//  Estimated: `3942`
+		// Minimum execution time: 13_645_000 picoseconds.
+		Weight::from_parts(14_493_000, 0)
+			.saturating_add(Weight::from_parts(0, 3942))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_smith_members.rs b/runtime/gtest/src/weights/pallet_smith_members.rs
new file mode 100644
index 000000000..9b7ade9bf
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_smith_members.rs
@@ -0,0 +1,139 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_smith_members`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_smith_members`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_smith_members::WeightInfo for WeightInfo<T> {
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:2 w:1)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::Membership` (r:1 w:0)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::CurrentSession` (r:1 w:0)
+	/// Proof: `SmithMembers::CurrentSession` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::ExpiresOn` (r:1 w:1)
+	/// Proof: `SmithMembers::ExpiresOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn invite_smith() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `834`
+		//  Estimated: `6774`
+		// Minimum execution time: 25_283_000 picoseconds.
+		Weight::from_parts(25_920_000, 0)
+			.saturating_add(Weight::from_parts(0, 6774))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:1 w:1)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn accept_invitation() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `599`
+		//  Estimated: `4064`
+		// Minimum execution time: 14_242_000 picoseconds.
+		Weight::from_parts(14_908_000, 0)
+			.saturating_add(Weight::from_parts(0, 4064))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::Smiths` (r:2 w:2)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::CurrentSession` (r:1 w:0)
+	/// Proof: `SmithMembers::CurrentSession` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `SmithMembers::ExpiresOn` (r:1 w:1)
+	/// Proof: `SmithMembers::ExpiresOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn certify_smith() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `644`
+		//  Estimated: `6584`
+		// Minimum execution time: 22_076_000 picoseconds.
+		Weight::from_parts(22_803_000, 0)
+			.saturating_add(Weight::from_parts(0, 6584))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `SmithMembers::Smiths` (r:5 w:5)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn on_removed_wot_member() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1204`
+		//  Estimated: `14569`
+		// Minimum execution time: 56_845_000 picoseconds.
+		Weight::from_parts(58_966_000, 0)
+			.saturating_add(Weight::from_parts(0, 14569))
+			.saturating_add(T::DbWeight::get().reads(11))
+			.saturating_add(T::DbWeight::get().writes(15))
+	}
+	/// Storage: `SmithMembers::Smiths` (r:1 w:0)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn on_removed_wot_member_empty() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `253`
+		//  Estimated: `3718`
+		// Minimum execution time: 2_779_000 picoseconds.
+		Weight::from_parts(2_932_000, 0)
+			.saturating_add(Weight::from_parts(0, 3718))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_sudo.rs b/runtime/gtest/src/weights/pallet_sudo.rs
new file mode 100644
index 000000000..fe37bce97
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_sudo.rs
@@ -0,0 +1,96 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_sudo`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_sudo`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
+	/// Storage: `Sudo::Key` (r:1 w:1)
+	/// Proof: `Sudo::Key` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	fn set_key() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `165`
+		//  Estimated: `1517`
+		// Minimum execution time: 6_288_000 picoseconds.
+		Weight::from_parts(6_845_000, 0)
+			.saturating_add(Weight::from_parts(0, 1517))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Sudo::Key` (r:1 w:0)
+	/// Proof: `Sudo::Key` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	fn sudo() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `165`
+		//  Estimated: `1517`
+		// Minimum execution time: 6_957_000 picoseconds.
+		Weight::from_parts(7_457_000, 0)
+			.saturating_add(Weight::from_parts(0, 1517))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Sudo::Key` (r:1 w:0)
+	/// Proof: `Sudo::Key` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	fn sudo_as() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `165`
+		//  Estimated: `1517`
+		// Minimum execution time: 6_745_000 picoseconds.
+		Weight::from_parts(7_327_000, 0)
+			.saturating_add(Weight::from_parts(0, 1517))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: `Sudo::Key` (r:1 w:1)
+	/// Proof: `Sudo::Key` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`)
+	fn remove_key() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `165`
+		//  Estimated: `1517`
+		// Minimum execution time: 5_833_000 picoseconds.
+		Weight::from_parts(6_184_000, 0)
+			.saturating_add(Weight::from_parts(0, 1517))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_timestamp.rs b/runtime/gtest/src/weights/pallet_timestamp.rs
new file mode 100644
index 000000000..94e9de1a2
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_timestamp.rs
@@ -0,0 +1,74 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_timestamp`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_timestamp`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_timestamp::WeightInfo for WeightInfo<T> {
+	/// Storage: `Timestamp::Now` (r:1 w:1)
+	/// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `Babe::CurrentSlot` (r:1 w:0)
+	/// Proof: `Babe::CurrentSlot` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `UniversalDividend::NextUd` (r:1 w:1)
+	/// Proof: `UniversalDividend::NextUd` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	fn set() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `268`
+		//  Estimated: `1493`
+		// Minimum execution time: 7_977_000 picoseconds.
+		Weight::from_parts(8_353_000, 0)
+			.saturating_add(Weight::from_parts(0, 1493))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	fn on_finalize() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `57`
+		//  Estimated: `0`
+		// Minimum execution time: 2_418_000 picoseconds.
+		Weight::from_parts(2_654_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_treasury.rs b/runtime/gtest/src/weights/pallet_treasury.rs
new file mode 100644
index 000000000..2367fe061
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_treasury.rs
@@ -0,0 +1,121 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_treasury`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_treasury`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
+	fn spend_local() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 0_000 picoseconds.
+		Weight::from_parts(0, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn remove_approval() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 0_000 picoseconds.
+		Weight::from_parts(0, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `p` is `[0, 99]`.
+	fn on_initialize_proposals(_p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 0_000 picoseconds.
+		Weight::from_parts(0, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn spend() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 0_000 picoseconds.
+		Weight::from_parts(0, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// Storage: `Treasury::Spends` (r:1 w:1)
+	/// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(61), added: 2536, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn payout() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `179`
+		//  Estimated: `6126`
+		// Minimum execution time: 40_034_000 picoseconds.
+		Weight::from_parts(40_975_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
+	/// Storage: `Treasury::Spends` (r:1 w:1)
+	/// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(61), added: 2536, mode: `MaxEncodedLen`)
+	fn check_status() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `116`
+		//  Estimated: `3526`
+		// Minimum execution time: 8_875_000 picoseconds.
+		Weight::from_parts(9_141_000, 0)
+			.saturating_add(Weight::from_parts(0, 3526))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `Treasury::Spends` (r:1 w:1)
+	/// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(61), added: 2536, mode: `MaxEncodedLen`)
+	fn void_spend() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `116`
+		//  Estimated: `3526`
+		// Minimum execution time: 7_768_000 picoseconds.
+		Weight::from_parts(8_319_000, 0)
+			.saturating_add(Weight::from_parts(0, 3526))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_universal_dividend.rs b/runtime/gtest/src/weights/pallet_universal_dividend.rs
new file mode 100644
index 000000000..fefb2113b
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_universal_dividend.rs
@@ -0,0 +1,118 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_universal_dividend`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_universal_dividend`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightInfo<T> {
+	/// Storage: `Identity::IdentityIndexOf` (r:1 w:0)
+	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `UniversalDividend::PastReevals` (r:1 w:0)
+	/// Proof: `UniversalDividend::PastReevals` (`max_values`: Some(1), `max_size`: Some(1602), added: 2097, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `i` is `[1, 160]`.
+	fn claim_uds(i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `709`
+		//  Estimated: `4174`
+		// Minimum execution time: 28_835_000 picoseconds.
+		Weight::from_parts(31_036_396, 0)
+			.saturating_add(Weight::from_parts(0, 4174))
+			// Standard Error: 760
+			.saturating_add(Weight::from_parts(151, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `UniversalDividend::CurrentUd` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUd` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:2 w:2)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn transfer_ud() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `156`
+		//  Estimated: `6126`
+		// Minimum execution time: 49_566_000 picoseconds.
+		Weight::from_parts(51_122_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+	/// Storage: `UniversalDividend::CurrentUd` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUd` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	fn transfer_ud_keep_alive() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `93`
+		//  Estimated: `3558`
+		// Minimum execution time: 30_753_000 picoseconds.
+		Weight::from_parts(31_854_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `UniversalDividend::PastReevals` (r:1 w:0)
+	/// Proof: `UniversalDividend::PastReevals` (`max_values`: Some(1), `max_size`: Some(1602), added: 2097, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// The range of component `i` is `[1, 160]`.
+	fn on_removed_member(_i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `181`
+		//  Estimated: `3558`
+		// Minimum execution time: 16_415_000 picoseconds.
+		Weight::from_parts(18_167_250, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_upgrade_origin.rs b/runtime/gtest/src/weights/pallet_upgrade_origin.rs
new file mode 100644
index 000000000..7a901054f
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_upgrade_origin.rs
@@ -0,0 +1,58 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_upgrade_origin`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_upgrade_origin`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_upgrade_origin::WeightInfo for WeightInfo<T> {
+	fn dispatch_as_root() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 4_332_000 picoseconds.
+		Weight::from_parts(4_853_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_utility.rs b/runtime/gtest/src/weights/pallet_utility.rs
new file mode 100644
index 000000000..a35aaf997
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_utility.rs
@@ -0,0 +1,99 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
+
+//! Autogenerated weights for `pallet_utility`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/gtest/src/weights/
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+
+use frame_support::{traits::Get, weights::Weight};
+use core::marker::PhantomData;
+
+/// Weight functions for `pallet_utility`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_utility::WeightInfo for WeightInfo<T> {
+	/// The range of component `c` is `[0, 1000]`.
+	fn batch(c: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_463_000 picoseconds.
+		Weight::from_parts(16_497_634, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 2_392
+			.saturating_add(Weight::from_parts(2_040_439, 0).saturating_mul(c.into()))
+	}
+	fn as_derivative() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_054_000 picoseconds.
+		Weight::from_parts(3_274_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `c` is `[0, 1000]`.
+	fn batch_all(c: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_222_000 picoseconds.
+		Weight::from_parts(5_529_669, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 2_848
+			.saturating_add(Weight::from_parts(2_223_935, 0).saturating_mul(c.into()))
+	}
+	fn dispatch_as() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 4_726_000 picoseconds.
+		Weight::from_parts(5_358_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	/// The range of component `c` is `[0, 1000]`.
+	fn force_batch(c: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_485_000 picoseconds.
+		Weight::from_parts(13_885_895, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			// Standard Error: 3_003
+			.saturating_add(Weight::from_parts(2_041_933, 0).saturating_mul(c.into()))
+	}
+}
diff --git a/runtime/gtest/src/weights/paritydb_weights.rs b/runtime/gtest/src/weights/paritydb_weights.rs
new file mode 100644
index 000000000..240a87406
--- /dev/null
+++ b/runtime/gtest/src/weights/paritydb_weights.rs
@@ -0,0 +1,95 @@
+
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2024-07-03 (Y/M/D)
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
+//!
+//! DATABASE: `ParityDb`, RUNTIME: `ÄžTest Local Testnet`
+//! BLOCK-NUM: `BlockId::Number(0)`
+//! SKIP-WRITE: `false`, SKIP-READ: `false`, WARMUPS: `1`
+//! STATE-VERSION: `V1`, STATE-CACHE-SIZE: ``
+//! WEIGHT-PATH: `./runtime/gtest/src/weights/`
+//! METRIC: `Average`, WEIGHT-MUL: `2.0`, WEIGHT-ADD: `0`
+
+// Executed Command:
+//   target/release/duniter
+//   benchmark
+//   storage
+//   --chain=dev
+//   --mul=2
+//   --weight-path=./runtime/gtest/src/weights/
+//   --state-version=1
+//   --database=paritydb
+
+/// Storage DB weights for the `ÄžTest Local Testnet` runtime and `ParityDb`.
+pub mod constants {
+	use frame_support::weights::constants;
+	use sp_core::parameter_types;
+	use sp_weights::RuntimeDbWeight;
+
+	parameter_types! {
+		/// `ParityDB` can be enabled with a feature flag, but is still experimental. These weights
+		/// are available for brave runtime engineers who may want to try this out as default.
+		pub const ParityDbWeight: RuntimeDbWeight = RuntimeDbWeight {
+			/// Time to read one storage item.
+			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
+			///
+			/// Stats nanoseconds:
+			///   Min, Max: 829, 1_070_616
+			///   Average:  8_230
+			///   Median:   1_323
+			///   Std-Dev:  84791.82
+			///
+			/// Percentiles nanoseconds:
+			///   99th: 10_178
+			///   95th: 2_674
+			///   75th: 1_501
+			read: 16_460 * constants::WEIGHT_REF_TIME_PER_NANOS,
+
+			/// Time to write one storage item.
+			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
+			///
+			/// Stats nanoseconds:
+			///   Min, Max: 3_815, 6_954_898
+			///   Average:  54_221
+			///   Median:   10_495
+			///   Std-Dev:  550742.92
+			///
+			/// Percentiles nanoseconds:
+			///   99th: 19_878
+			///   95th: 15_095
+			///   75th: 12_501
+			write: 108_442 * constants::WEIGHT_REF_TIME_PER_NANOS,
+		};
+	}
+
+	#[cfg(test)]
+	mod test_db_weights {
+		use super::constants::ParityDbWeight as W;
+		use sp_weights::constants;
+
+		/// Checks that all weights exist and have sane values.
+		// NOTE: If this test fails but you are sure that the generated values are fine,
+		// you can delete it.
+		#[test]
+		fn bound() {
+			// At least 1 µs.
+			assert!(
+				W::get().reads(1).ref_time() >= constants::WEIGHT_REF_TIME_PER_MICROS,
+				"Read weight should be at least 1 µs."
+			);
+			assert!(
+				W::get().writes(1).ref_time() >= constants::WEIGHT_REF_TIME_PER_MICROS,
+				"Write weight should be at least 1 µs."
+			);
+			// At most 1 ms.
+			assert!(
+				W::get().reads(1).ref_time() <= constants::WEIGHT_REF_TIME_PER_MILLIS,
+				"Read weight should be at most 1 ms."
+			);
+			assert!(
+				W::get().writes(1).ref_time() <= constants::WEIGHT_REF_TIME_PER_MILLIS,
+				"Write weight should be at most 1 ms."
+			);
+		}
+	}
+}
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index ef2a9858c..4cde813dc 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,5 +1,5 @@
 [toolchain]
-channel = "nightly-2024-03-17"
+channel = "nightly-2024-06-30"
 components = [ "rustfmt", "clippy", "rust-std", "cargo", "rust-src" ]
 targets = [ "wasm32-unknown-unknown" ]
 profile = "minimal"
diff --git a/scripts/run_all_benchmarks.sh b/scripts/run_all_benchmarks.sh
index 01ec0fe5d..2c55040bc 100755
--- a/scripts/run_all_benchmarks.sh
+++ b/scripts/run_all_benchmarks.sh
@@ -1,5 +1,7 @@
-cargo build --release --features runtime-benchmarks
-target/release/duniter benchmark storage --chain=dev --mul=2 --weight-path=./runtime/common/src/weights/ --state-version=1
-target/release/duniter benchmark overhead --chain=dev --wasm-execution=compiled --weight-path=./runtime/common/src/weights/ --warmup=10 --repeat=100
-target/release/duniter benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet="*" --extrinsic="*" --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/common/src/weights/
-
+for chain in g1 gtest gdev
+do
+  cargo build --release --no-default-features --features runtime-benchmarks,$chain
+  target/release/duniter benchmark storage --chain=dev --mul=2 --weight-path=./runtime/$chain/src/weights/ --state-version=1 --database=paritydb
+  target/release/duniter benchmark overhead --chain=dev --wasm-execution=compiled --weight-path=./runtime/$chain/src/weights/ --warmup=10 --repeat=100
+  target/release/duniter benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet="*" --extrinsic="*" --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/$chain/src/weights/
+done
diff --git a/xtask/src/gen_doc.rs b/xtask/src/gen_doc.rs
index 88d99dc61..3ea49c742 100644
--- a/xtask/src/gen_doc.rs
+++ b/xtask/src/gen_doc.rs
@@ -44,7 +44,7 @@ const CALLS_DOC_FILEPATH: &str = "docs/api/runtime-calls.md";
 const EVENTS_DOC_FILEPATH: &str = "docs/api/runtime-events.md";
 const ERRORS_DOC_FILEPATH: &str = "docs/api/runtime-errors.md";
 const TEMPLATES_GLOB: &str = "xtask/res/templates/*.md";
-const WEIGHT_FILEPATH: &str = "runtime/common/src/weights/";
+const WEIGHT_FILEPATH: &str = "runtime/gdev/src/weights/";
 
 // define structs and implementations
 
-- 
GitLab