diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 11e3e7c068fbb8c0f880b0192aee8acb0b8a862c..f228ee435a0fff2cfb1166aaa3e01f152c92cf1a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -96,9 +96,10 @@ run_benchmarks:
     - when: manual
   script:
     - cargo build -Zgit=shallow-deps --release --features runtime-benchmarks
-    - target/release/duniter benchmark storage --chain=dev --mul=2 --state-version=1
-    - target/release/duniter benchmark overhead --chain=dev --wasm-execution=compiled --warmup=1 --repeat=100
-    - target/release/duniter benchmark pallet --chain=dev --steps=5 --repeat=2 --pallet="*" --extrinsic="*" --wasm-execution=compiled
+    - target/release/duniter benchmark storage --chain=dev --mul=2 --state-version=1 --weight-path=./runtime/gdev/src/weights/
+    - target/release/duniter benchmark overhead --chain=dev --wasm-execution=compiled --warmup=1 --repeat=100 --weight-path=./runtime/gdev/src/weights/
+    - target/release/duniter benchmark pallet --chain=dev --steps=5 --repeat=2 --pallet="*" --extrinsic="*" --wasm-execution=compiled --output=./runtime/gdev/src/weights/
+    - cargo build -Zgit=shallow-deps --release --features runtime-benchmarks # Check if autogenerated weights work
 
 gtest_build:
   stage: build
@@ -128,7 +129,8 @@ build_deb:
     - if: $CI_COMMIT_TAG
       when: never
     - <<: *is_network_branch
-      when: manual
+      needs: ["build_raw_specs"]
+      when: always
     - if: '$CI_MERGE_REQUEST_ID || $CI_COMMIT_BRANCH == "master"'
       when: manual
     - when: manual
@@ -151,7 +153,8 @@ build_rpm:
     - if: $CI_COMMIT_TAG
       when: never
     - <<: *is_network_branch
-      when: manual
+      needs: ["build_raw_specs"]
+      when: always
     - if: '$CI_MERGE_REQUEST_ID || $CI_COMMIT_BRANCH == "master"'
       when: manual
     - when: manual
diff --git a/Cargo.lock b/Cargo.lock
index 5efc0a28f602008f971216e5fc036029fd6afc3a..be8a37afdcf99d369590c2ccd545b3835053ff71 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -71,17 +71,6 @@ dependencies = [
  "subtle 2.6.1",
 ]
 
-[[package]]
-name = "ahash"
-version = "0.7.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9"
-dependencies = [
- "getrandom",
- "once_cell",
- "version_check",
-]
-
 [[package]]
 name = "ahash"
 version = "0.8.11"
@@ -268,7 +257,7 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f"
 dependencies = [
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ff 0.4.2",
  "ark-std 0.4.0",
 ]
@@ -280,7 +269,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "20c7021f180a0cbea0380eba97c2af3c57074cdaffe0eef7e840e1c9f2841e55"
 dependencies = [
  "ark-bls12-377",
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-models-ext",
  "ark-std 0.4.0",
 ]
@@ -291,7 +280,7 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488"
 dependencies = [
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ff 0.4.2",
  "ark-serialize 0.4.2",
  "ark-std 0.4.0",
@@ -304,7 +293,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b1dc4b3d08f19e8ec06e949712f95b8361e43f1391d94f65e4234df03480631c"
 dependencies = [
  "ark-bls12-381",
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ff 0.4.2",
  "ark-models-ext",
  "ark-serialize 0.4.2",
@@ -318,7 +307,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2e0605daf0cc5aa2034b78d008aaf159f56901d92a52ee4f6ecdfdac4f426700"
 dependencies = [
  "ark-bls12-377",
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ff 0.4.2",
  "ark-std 0.4.0",
 ]
@@ -330,7 +319,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ccee5fba47266f460067588ee1bf070a9c760bf2050c1c509982c5719aadb4f2"
 dependencies = [
  "ark-bw6-761",
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ff 0.4.2",
  "ark-models-ext",
  "ark-std 0.4.0",
@@ -343,7 +332,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba"
 dependencies = [
  "ark-ff 0.4.2",
- "ark-poly",
+ "ark-poly 0.4.2",
  "ark-serialize 0.4.2",
  "ark-std 0.4.0",
  "derivative",
@@ -354,6 +343,27 @@ dependencies = [
  "zeroize",
 ]
 
+[[package]]
+name = "ark-ec"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce"
+dependencies = [
+ "ahash",
+ "ark-ff 0.5.0",
+ "ark-poly 0.5.0",
+ "ark-serialize 0.5.0",
+ "ark-std 0.5.0",
+ "educe",
+ "fnv",
+ "hashbrown 0.15.1",
+ "itertools 0.13.0",
+ "num-bigint",
+ "num-integer",
+ "num-traits 0.2.19",
+ "zeroize",
+]
+
 [[package]]
 name = "ark-ed-on-bls12-377"
 version = "0.4.0"
@@ -361,7 +371,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b10d901b9ac4b38f9c32beacedfadcdd64e46f8d7f8e88c1ae1060022cf6f6c6"
 dependencies = [
  "ark-bls12-377",
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ff 0.4.2",
  "ark-std 0.4.0",
 ]
@@ -372,7 +382,7 @@ version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "524a4fb7540df2e1a8c2e67a83ba1d1e6c3947f4f9342cc2359fc2e789ad731d"
 dependencies = [
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ed-on-bls12-377",
  "ark-ff 0.4.2",
  "ark-models-ext",
@@ -386,7 +396,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c"
 dependencies = [
  "ark-bls12-381",
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ff 0.4.2",
  "ark-std 0.4.0",
 ]
@@ -397,7 +407,7 @@ version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d15185f1acb49a07ff8cbe5f11a1adc5a93b19e211e325d826ae98e98e124346"
 dependencies = [
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ed-on-bls12-381-bandersnatch",
  "ark-ff 0.4.2",
  "ark-models-ext",
@@ -442,6 +452,26 @@ dependencies = [
  "zeroize",
 ]
 
+[[package]]
+name = "ark-ff"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70"
+dependencies = [
+ "ark-ff-asm 0.5.0",
+ "ark-ff-macros 0.5.0",
+ "ark-serialize 0.5.0",
+ "ark-std 0.5.0",
+ "arrayvec 0.7.6",
+ "digest 0.10.7",
+ "educe",
+ "itertools 0.13.0",
+ "num-bigint",
+ "num-traits 0.2.19",
+ "paste",
+ "zeroize",
+]
+
 [[package]]
 name = "ark-ff-asm"
 version = "0.3.0"
@@ -462,6 +492,16 @@ dependencies = [
  "syn 1.0.109",
 ]
 
+[[package]]
+name = "ark-ff-asm"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60"
+dependencies = [
+ "quote",
+ "syn 2.0.87",
+]
+
 [[package]]
 name = "ark-ff-macros"
 version = "0.3.0"
@@ -487,13 +527,26 @@ dependencies = [
  "syn 1.0.109",
 ]
 
+[[package]]
+name = "ark-ff-macros"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3"
+dependencies = [
+ "num-bigint",
+ "num-traits 0.2.19",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
 [[package]]
 name = "ark-models-ext"
 version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3e9eab5d4b5ff2f228b763d38442adc9b084b0a465409b059fac5c2308835ec2"
 dependencies = [
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ff 0.4.2",
  "ark-serialize 0.4.2",
  "ark-std 0.4.0",
@@ -513,13 +566,28 @@ dependencies = [
  "hashbrown 0.13.2",
 ]
 
+[[package]]
+name = "ark-poly"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27"
+dependencies = [
+ "ahash",
+ "ark-ff 0.5.0",
+ "ark-serialize 0.5.0",
+ "ark-std 0.5.0",
+ "educe",
+ "fnv",
+ "hashbrown 0.15.1",
+]
+
 [[package]]
 name = "ark-scale"
 version = "0.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179"
 dependencies = [
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ff 0.4.2",
  "ark-serialize 0.4.2",
  "ark-std 0.4.0",
@@ -527,6 +595,21 @@ dependencies = [
  "scale-info",
 ]
 
+[[package]]
+name = "ark-secret-scalar"
+version = "0.0.2"
+source = "git+https://github.com/duniter/ring-vrf#93af77b15de3bb34f1c46913599f4f4c4faa3215"
+dependencies = [
+ "ark-ec 0.4.2",
+ "ark-ff 0.4.2",
+ "ark-serialize 0.4.2",
+ "ark-std 0.4.0",
+ "ark-transcript",
+ "digest 0.10.7",
+ "getrandom_or_panic",
+ "zeroize",
+]
+
 [[package]]
 name = "ark-serialize"
 version = "0.3.0"
@@ -543,12 +626,25 @@ version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5"
 dependencies = [
- "ark-serialize-derive",
+ "ark-serialize-derive 0.4.2",
  "ark-std 0.4.0",
  "digest 0.10.7",
  "num-bigint",
 ]
 
+[[package]]
+name = "ark-serialize"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7"
+dependencies = [
+ "ark-serialize-derive 0.5.0",
+ "ark-std 0.5.0",
+ "arrayvec 0.7.6",
+ "digest 0.10.7",
+ "num-bigint",
+]
+
 [[package]]
 name = "ark-serialize-derive"
 version = "0.4.2"
@@ -560,6 +656,17 @@ dependencies = [
  "syn 1.0.109",
 ]
 
+[[package]]
+name = "ark-serialize-derive"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
 [[package]]
 name = "ark-std"
 version = "0.3.0"
@@ -581,6 +688,29 @@ dependencies = [
  "rayon",
 ]
 
+[[package]]
+name = "ark-std"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a"
+dependencies = [
+ "num-traits 0.2.19",
+ "rand",
+]
+
+[[package]]
+name = "ark-transcript"
+version = "0.0.2"
+source = "git+https://github.com/duniter/ring-vrf#93af77b15de3bb34f1c46913599f4f4c4faa3215"
+dependencies = [
+ "ark-ff 0.4.2",
+ "ark-serialize 0.4.2",
+ "ark-std 0.4.0",
+ "digest 0.10.7",
+ "rand_core",
+ "sha3",
+]
+
 [[package]]
 name = "array-bytes"
 version = "6.2.3"
@@ -608,6 +738,12 @@ version = "0.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
 
+[[package]]
+name = "ascii"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e"
+
 [[package]]
 name = "asn1-rs"
 version = "0.5.2"
@@ -694,8 +830,8 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
 
 [[package]]
 name = "asset-test-utils"
-version = "18.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-pallet-parachain-system",
  "cumulus-pallet-xcmp-queue",
@@ -723,8 +859,8 @@ dependencies = [
 
 [[package]]
 name = "assets-common"
-version = "0.18.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-primitives-core",
  "frame-support",
@@ -954,6 +1090,27 @@ dependencies = [
  "windows-targets 0.52.6",
 ]
 
+[[package]]
+name = "bandersnatch_vrfs"
+version = "0.0.4"
+source = "git+https://github.com/duniter/ring-vrf#93af77b15de3bb34f1c46913599f4f4c4faa3215"
+dependencies = [
+ "ark-bls12-381",
+ "ark-ec 0.4.2",
+ "ark-ed-on-bls12-381-bandersnatch",
+ "ark-ff 0.4.2",
+ "ark-serialize 0.4.2",
+ "ark-std 0.4.0",
+ "dleq_vrf",
+ "rand_chacha",
+ "rand_core",
+ "ring 0.1.0",
+ "sha2 0.10.8",
+ "sp-ark-bls12-381",
+ "sp-ark-ed-on-bls12-381-bandersnatch",
+ "zeroize",
+]
+
 [[package]]
 name = "base-x"
 version = "0.2.11"
@@ -996,13 +1153,23 @@ version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
 
+[[package]]
+name = "beef"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1"
+dependencies = [
+ "serde",
+]
+
 [[package]]
 name = "binary-merkle-tree"
-version = "15.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "13.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "hash-db",
  "log",
+ "parity-scale-codec",
 ]
 
 [[package]]
@@ -1014,6 +1181,23 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "bip32"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db40d3dfbeab4e031d78c844642fa0caa0b0db11ce1607ac9d2986dff1405c69"
+dependencies = [
+ "bs58",
+ "hmac 0.12.1",
+ "k256",
+ "rand_core",
+ "ripemd",
+ "secp256k1 0.27.0",
+ "sha2 0.10.8",
+ "subtle 2.6.1",
+ "zeroize",
+]
+
 [[package]]
 name = "bip39"
 version = "2.1.0"
@@ -1021,6 +1205,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387"
 dependencies = [
  "bitcoin_hashes",
+ "serde",
+ "unicode-normalization",
 ]
 
 [[package]]
@@ -1188,10 +1374,19 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "bounded-vec"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68534a48cbf63a4b1323c433cf21238c9ec23711e0df13b08c33e5c2082663ce"
+dependencies = [
+ "thiserror 1.0.69",
+]
+
 [[package]]
 name = "bp-header-chain"
-version = "0.18.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-runtime",
  "finality-grandpa",
@@ -1202,13 +1397,13 @@ dependencies = [
  "sp-consensus-grandpa",
  "sp-core",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "bp-messages"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-header-chain",
  "bp-runtime",
@@ -1218,13 +1413,13 @@ dependencies = [
  "serde",
  "sp-core",
  "sp-io",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "bp-parachains"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-header-chain",
  "bp-polkadot-core",
@@ -1235,44 +1430,43 @@ dependencies = [
  "scale-info",
  "sp-core",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "bp-polkadot"
-version = "0.16.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.5.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-header-chain",
  "bp-polkadot-core",
  "bp-runtime",
  "frame-support",
  "sp-api",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "bp-polkadot-core"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-messages",
  "bp-runtime",
  "frame-support",
  "frame-system",
  "parity-scale-codec",
- "parity-util-mem",
  "scale-info",
  "serde",
  "sp-core",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "bp-relayers"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-header-chain",
  "bp-messages",
@@ -1284,13 +1478,13 @@ dependencies = [
  "parity-scale-codec",
  "scale-info",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "bp-runtime"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -1305,15 +1499,15 @@ dependencies = [
  "sp-io",
  "sp-runtime",
  "sp-state-machine",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-trie",
  "trie-db",
 ]
 
 [[package]]
 name = "bp-test-utils"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-header-chain",
  "bp-parachains",
@@ -1326,14 +1520,14 @@ dependencies = [
  "sp-consensus-grandpa",
  "sp-core",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-trie",
 ]
 
 [[package]]
 name = "bp-xcm-bridge-hub"
-version = "0.4.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-messages",
  "bp-runtime",
@@ -1343,14 +1537,14 @@ dependencies = [
  "serde",
  "sp-core",
  "sp-io",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
 ]
 
 [[package]]
 name = "bp-xcm-bridge-hub-router"
-version = "0.14.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.6.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -1361,8 +1555,8 @@ dependencies = [
 
 [[package]]
 name = "bridge-hub-common"
-version = "0.10.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-primitives-core",
  "frame-support",
@@ -1372,14 +1566,14 @@ dependencies = [
  "snowbridge-core",
  "sp-core",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
 ]
 
 [[package]]
 name = "bridge-hub-test-utils"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "asset-test-utils",
  "bp-header-chain",
@@ -1413,7 +1607,7 @@ dependencies = [
  "sp-io",
  "sp-keyring",
  "sp-runtime",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-builder",
  "staging-xcm-executor",
@@ -1421,8 +1615,8 @@ dependencies = [
 
 [[package]]
 name = "bridge-runtime-common"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-header-chain",
  "bp-messages",
@@ -1444,24 +1638,20 @@ dependencies = [
  "scale-info",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-trie",
+ "sp-weights",
  "staging-xcm",
  "tuplex",
 ]
 
-[[package]]
-name = "bs58"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3"
-
 [[package]]
 name = "bs58"
 version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4"
 dependencies = [
+ "sha2 0.10.8",
  "tinyvec",
 ]
 
@@ -1725,7 +1915,7 @@ dependencies = [
  "anstream",
  "anstyle",
  "clap_lex",
- "strsim",
+ "strsim 0.11.1",
  "terminal_size",
 ]
 
@@ -1765,6 +1955,17 @@ dependencies = [
  "cc",
 ]
 
+[[package]]
+name = "coarsetime"
+version = "0.1.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4252bf230cb600c19826a575b31c8c9c84c6f11acfab6dfcad2e941b10b6f8e2"
+dependencies = [
+ "libc",
+ "wasix",
+ "wasm-bindgen",
+]
+
 [[package]]
 name = "codespan-reporting"
 version = "0.11.1"
@@ -1781,6 +1982,19 @@ version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
 
+[[package]]
+name = "combine"
+version = "3.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680"
+dependencies = [
+ "ascii",
+ "byteorder",
+ "either",
+ "memchr",
+ "unreachable",
+]
+
 [[package]]
 name = "combine"
 version = "4.6.7"
@@ -1802,6 +2016,22 @@ dependencies = [
  "unicode-width 0.2.0",
 ]
 
+[[package]]
+name = "common"
+version = "0.1.0"
+source = "git+https://github.com/w3f/ring-proof?rev=665f5f5#665f5f51af5734c7b6d90b985dd6861d4c5b4752"
+dependencies = [
+ "ark-ec 0.4.2",
+ "ark-ff 0.4.2",
+ "ark-poly 0.4.2",
+ "ark-serialize 0.4.2",
+ "ark-std 0.4.0",
+ "fflonk",
+ "getrandom_or_panic",
+ "merlin",
+ "rand_chacha",
+]
+
 [[package]]
 name = "common-path"
 version = "1.0.0"
@@ -1951,6 +2181,16 @@ dependencies = [
  "libc",
 ]
 
+[[package]]
+name = "core-foundation"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
 [[package]]
 name = "core-foundation-sys"
 version = "0.8.7"
@@ -2091,21 +2331,6 @@ dependencies = [
  "wasmtime-types",
 ]
 
-[[package]]
-name = "crc"
-version = "3.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636"
-dependencies = [
- "crc-catalog",
-]
-
-[[package]]
-name = "crc-catalog"
-version = "2.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
-
 [[package]]
 name = "crc32fast"
 version = "1.4.2"
@@ -2287,17 +2512,39 @@ dependencies = [
 ]
 
 [[package]]
-name = "cumulus-pallet-aura-ext"
-version = "0.17.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+name = "cumulus-client-parachain-inherent"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "cumulus-pallet-parachain-system",
- "frame-support",
- "frame-system",
- "pallet-aura",
- "pallet-timestamp",
- "parity-scale-codec",
- "scale-info",
+ "async-trait",
+ "cumulus-primitives-core",
+ "cumulus-primitives-parachain-inherent",
+ "cumulus-relay-chain-interface",
+ "cumulus-test-relay-sproof-builder",
+ "parity-scale-codec",
+ "sc-client-api",
+ "sp-api",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-inherents",
+ "sp-runtime",
+ "sp-state-machine",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-trie",
+ "tracing",
+]
+
+[[package]]
+name = "cumulus-pallet-aura-ext"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "cumulus-pallet-parachain-system",
+ "frame-support",
+ "frame-system",
+ "pallet-aura",
+ "pallet-timestamp",
+ "parity-scale-codec",
+ "scale-info",
  "sp-application-crypto",
  "sp-consensus-aura",
  "sp-runtime",
@@ -2305,8 +2552,8 @@ dependencies = [
 
 [[package]]
 name = "cumulus-pallet-dmp-queue"
-version = "0.17.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-primitives-core",
  "frame-benchmarking",
@@ -2322,8 +2569,8 @@ dependencies = [
 
 [[package]]
 name = "cumulus-pallet-parachain-system"
-version = "0.17.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bytes",
  "cumulus-pallet-parachain-system-proc-macro",
@@ -2343,12 +2590,12 @@ dependencies = [
  "polkadot-runtime-parachains",
  "scale-info",
  "sp-core",
- "sp-externalities",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-inherents",
  "sp-io",
  "sp-runtime",
  "sp-state-machine",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-trie",
  "sp-version",
  "staging-xcm",
@@ -2359,7 +2606,7 @@ dependencies = [
 [[package]]
 name = "cumulus-pallet-parachain-system-proc-macro"
 version = "0.6.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "proc-macro-crate 3.2.0",
  "proc-macro2",
@@ -2369,8 +2616,8 @@ dependencies = [
 
 [[package]]
 name = "cumulus-pallet-session-benchmarking"
-version = "19.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "9.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -2382,8 +2629,8 @@ dependencies = [
 
 [[package]]
 name = "cumulus-pallet-solo-to-para"
-version = "0.17.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-pallet-parachain-system",
  "frame-support",
@@ -2397,8 +2644,8 @@ dependencies = [
 
 [[package]]
 name = "cumulus-pallet-xcm"
-version = "0.17.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-primitives-core",
  "frame-support",
@@ -2412,8 +2659,8 @@ dependencies = [
 
 [[package]]
 name = "cumulus-pallet-xcmp-queue"
-version = "0.17.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bounded-collections",
  "bp-xcm-bridge-hub-router",
@@ -2437,8 +2684,8 @@ dependencies = [
 
 [[package]]
 name = "cumulus-ping"
-version = "0.17.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-pallet-xcm",
  "cumulus-primitives-core",
@@ -2452,8 +2699,8 @@ dependencies = [
 
 [[package]]
 name = "cumulus-primitives-aura"
-version = "0.15.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "sp-api",
  "sp-consensus-aura",
@@ -2461,8 +2708,8 @@ dependencies = [
 
 [[package]]
 name = "cumulus-primitives-core"
-version = "0.16.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "polkadot-core-primitives",
@@ -2477,8 +2724,8 @@ dependencies = [
 
 [[package]]
 name = "cumulus-primitives-parachain-inherent"
-version = "0.16.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "cumulus-primitives-core",
@@ -2491,22 +2738,23 @@ dependencies = [
 
 [[package]]
 name = "cumulus-primitives-proof-size-hostfunction"
-version = "0.10.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "sp-externalities",
- "sp-runtime-interface",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-runtime-interface 24.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-trie",
 ]
 
 [[package]]
 name = "cumulus-primitives-storage-weight-reclaim"
-version = "8.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "1.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-primitives-core",
  "cumulus-primitives-proof-size-hostfunction",
  "docify",
+ "frame-benchmarking",
  "frame-support",
  "frame-system",
  "log",
@@ -2517,8 +2765,8 @@ dependencies = [
 
 [[package]]
 name = "cumulus-primitives-timestamp"
-version = "0.16.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-primitives-core",
  "sp-inherents",
@@ -2527,8 +2775,8 @@ dependencies = [
 
 [[package]]
 name = "cumulus-primitives-utility"
-version = "0.17.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-primitives-core",
  "frame-support",
@@ -2542,10 +2790,29 @@ dependencies = [
  "staging-xcm-executor",
 ]
 
+[[package]]
+name = "cumulus-relay-chain-interface"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "async-trait",
+ "cumulus-primitives-core",
+ "futures 0.3.31",
+ "jsonrpsee-core 0.24.7",
+ "parity-scale-codec",
+ "polkadot-overseer",
+ "sc-client-api",
+ "sp-api",
+ "sp-blockchain",
+ "sp-state-machine",
+ "sp-version",
+ "thiserror 1.0.69",
+]
+
 [[package]]
 name = "cumulus-test-relay-sproof-builder"
-version = "0.16.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-primitives-core",
  "parity-scale-codec",
@@ -2626,14 +2893,38 @@ dependencies = [
  "syn 2.0.87",
 ]
 
+[[package]]
+name = "darling"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850"
+dependencies = [
+ "darling_core 0.14.4",
+ "darling_macro 0.14.4",
+]
+
 [[package]]
 name = "darling"
 version = "0.20.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
 dependencies = [
- "darling_core",
- "darling_macro",
+ "darling_core 0.20.10",
+ "darling_macro 0.20.10",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim 0.10.0",
+ "syn 1.0.109",
 ]
 
 [[package]]
@@ -2646,17 +2937,28 @@ dependencies = [
  "ident_case",
  "proc-macro2",
  "quote",
- "strsim",
+ "strsim 0.11.1",
  "syn 2.0.87",
 ]
 
+[[package]]
+name = "darling_macro"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
+dependencies = [
+ "darling_core 0.14.4",
+ "quote",
+ "syn 1.0.109",
+]
+
 [[package]]
 name = "darling_macro"
 version = "0.20.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
 dependencies = [
- "darling_core",
+ "darling_core 0.20.10",
  "quote",
  "syn 2.0.87",
 ]
@@ -2933,10 +3235,26 @@ dependencies = [
  "sp-core",
  "sp-distance",
  "sp-runtime",
- "subxt",
+ "subxt 0.38.0",
  "tokio",
 ]
 
+[[package]]
+name = "dleq_vrf"
+version = "0.0.2"
+source = "git+https://github.com/duniter/ring-vrf#93af77b15de3bb34f1c46913599f4f4c4faa3215"
+dependencies = [
+ "ark-ec 0.4.2",
+ "ark-ff 0.4.2",
+ "ark-scale",
+ "ark-secret-scalar",
+ "ark-serialize 0.4.2",
+ "ark-std 0.4.0",
+ "ark-transcript",
+ "arrayvec 0.7.6",
+ "zeroize",
+]
+
 [[package]]
 name = "docify"
 version = "0.2.9"
@@ -3009,33 +3327,41 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
 
 [[package]]
 name = "duniter"
-version = "0.9.2"
+version = "0.8.0"
 dependencies = [
+ "array-bytes",
+ "async-channel 2.3.1",
  "async-io",
- "bs58 0.5.1",
+ "async-trait",
+ "bs58",
  "clap",
  "clap_complete",
  "common-runtime",
  "dc-distance",
  "distance-oracle",
+ "env_logger 0.10.2",
  "frame-benchmarking",
  "frame-benchmarking-cli",
+ "frame-metadata-hash-extension",
  "frame-system",
  "futures 0.3.31",
  "g1-runtime",
  "gdev-runtime",
  "gtest-runtime",
  "hex",
- "jsonrpsee",
+ "jsonrpsee 0.24.7",
  "log",
  "memmap2 0.9.5",
  "num-format",
  "pallet-grandpa",
  "pallet-im-online",
+ "pallet-oneshot-account",
  "pallet-transaction-payment",
  "pallet-transaction-payment-rpc",
  "pallet-transaction-payment-rpc-runtime-api",
  "pallet-treasury",
+ "parity-scale-codec",
+ "parking_lot 0.12.3",
  "sc-basic-authorship",
  "sc-chain-spec",
  "sc-cli",
@@ -3050,6 +3376,8 @@ dependencies = [
  "sc-executor",
  "sc-keystore",
  "sc-network",
+ "sc-network-sync",
+ "sc-network-test",
  "sc-offchain",
  "sc-rpc",
  "sc-rpc-api",
@@ -3057,6 +3385,7 @@ dependencies = [
  "sc-telemetry",
  "sc-transaction-pool",
  "sc-transaction-pool-api",
+ "sc-utils",
  "serde",
  "serde_json",
  "serde_yaml",
@@ -3077,7 +3406,7 @@ dependencies = [
  "sp-offchain",
  "sp-runtime",
  "sp-session",
- "sp-storage",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-timestamp",
  "sp-transaction-pool",
  "sp-transaction-storage-proof",
@@ -3106,7 +3435,7 @@ dependencies = [
  "sp-core",
  "sp-keyring",
  "sp-runtime",
- "subxt",
+ "subxt 0.38.0",
  "tokio",
 ]
 
@@ -3119,7 +3448,7 @@ dependencies = [
  "parity-scale-codec",
  "sp-core",
  "sp-runtime",
- "subxt",
+ "subxt 0.38.0",
  "tokio",
 ]
 
@@ -3209,6 +3538,18 @@ dependencies = [
  "zeroize",
 ]
 
+[[package]]
+name = "educe"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417"
+dependencies = [
+ "enum-ordinalize",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
 [[package]]
 name = "either"
 version = "1.13.0"
@@ -3265,6 +3606,26 @@ dependencies = [
  "syn 2.0.87",
 ]
 
+[[package]]
+name = "enum-ordinalize"
+version = "4.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5"
+dependencies = [
+ "enum-ordinalize-derive",
+]
+
+[[package]]
+name = "enum-ordinalize-derive"
+version = "4.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
 [[package]]
 name = "enumflags2"
 version = "0.7.10"
@@ -3356,7 +3717,7 @@ version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09d398648d65820a727d6a81e58b962f874473396a047e4c30bafe3240953417"
 dependencies = [
- "ethereum-types",
+ "ethereum-types 0.14.1",
  "tiny-keccak",
 ]
 
@@ -3368,9 +3729,20 @@ checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60"
 dependencies = [
  "crunchy",
  "fixed-hash",
- "impl-codec 0.6.0",
+ "tiny-keccak",
+]
+
+[[package]]
+name = "ethbloom"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c321610643004cf908ec0f5f2aa0d8f1f8e14b540562a2887a1111ff1ecbf7b"
+dependencies = [
+ "crunchy",
+ "fixed-hash",
+ "impl-codec 0.7.0",
  "impl-rlp",
- "impl-serde 0.4.0",
+ "impl-serde 0.5.0",
  "scale-info",
  "tiny-keccak",
 ]
@@ -3381,22 +3753,44 @@ version = "0.14.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee"
 dependencies = [
- "ethbloom",
+ "ethbloom 0.13.0",
  "fixed-hash",
- "impl-codec 0.6.0",
- "impl-rlp",
- "impl-serde 0.4.0",
  "primitive-types 0.12.2",
- "scale-info",
  "uint 0.9.5",
 ]
 
+[[package]]
+name = "ethereum-types"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ab15ed80916029f878e0267c3a9f92b67df55e79af370bf66199059ae2b4ee3"
+dependencies = [
+ "ethbloom 0.14.1",
+ "fixed-hash",
+ "impl-codec 0.7.0",
+ "impl-rlp",
+ "impl-serde 0.5.0",
+ "primitive-types 0.13.1",
+ "scale-info",
+ "uint 0.10.0",
+]
+
 [[package]]
 name = "event-listener"
 version = "2.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
 
+[[package]]
+name = "event-listener"
+version = "4.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e"
+dependencies = [
+ "concurrent-queue",
+ "pin-project-lite",
+]
+
 [[package]]
 name = "event-listener"
 version = "5.3.1"
@@ -3436,7 +3830,7 @@ dependencies = [
  "blake2 0.10.6",
  "file-guard",
  "fs-err",
- "prettyplease 0.2.25",
+ "prettyplease",
  "proc-macro2",
  "quote",
  "syn 2.0.87",
@@ -3482,6 +3876,30 @@ dependencies = [
  "bytes",
 ]
 
+[[package]]
+name = "fatality"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec6f82451ff7f0568c6181287189126d492b5654e30a788add08027b6363d019"
+dependencies = [
+ "fatality-proc-macro",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "fatality-proc-macro"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb42427514b063d97ce21d5199f36c0c307d981434a6be32582bc79fe5bd2303"
+dependencies = [
+ "expander",
+ "indexmap 2.6.0",
+ "proc-macro-crate 3.2.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
 [[package]]
 name = "fdlimit"
 version = "0.3.0"
@@ -3502,6 +3920,19 @@ dependencies = [
  "subtle 2.6.1",
 ]
 
+[[package]]
+name = "fflonk"
+version = "0.1.1"
+source = "git+https://github.com/w3f/fflonk#eda051ea3b80042e844a3ebd17c2f60536e6ee3f"
+dependencies = [
+ "ark-ec 0.5.0",
+ "ark-ff 0.5.0",
+ "ark-poly 0.5.0",
+ "ark-serialize 0.5.0",
+ "ark-std 0.5.0",
+ "merlin",
+]
+
 [[package]]
 name = "fiat-crypto"
 version = "0.2.9"
@@ -3556,6 +3987,16 @@ dependencies = [
  "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"
@@ -3606,25 +4047,10 @@ version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2"
 
-[[package]]
-name = "foreign-types"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
-dependencies = [
- "foreign-types-shared",
-]
-
-[[package]]
-name = "foreign-types-shared"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-
 [[package]]
 name = "fork-tree"
-version = "13.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "12.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
 ]
@@ -3656,8 +4082,8 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa"
 
 [[package]]
 name = "frame-benchmarking"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-support-procedural",
@@ -3673,31 +4099,35 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-runtime-interface",
- "sp-storage",
+ "sp-runtime-interface 24.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "static_assertions",
 ]
 
 [[package]]
 name = "frame-benchmarking-cli"
-version = "43.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "32.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "Inflector",
  "array-bytes",
  "chrono",
  "clap",
  "comfy-table",
+ "cumulus-client-parachain-inherent",
+ "cumulus-primitives-proof-size-hostfunction",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
  "gethostname",
  "handlebars",
+ "hex",
  "itertools 0.11.0",
- "lazy_static",
  "linked-hash-map",
  "log",
  "parity-scale-codec",
+ "polkadot-parachain-primitives",
+ "polkadot-primitives",
  "rand",
  "rand_pcg",
  "sc-block-builder",
@@ -3706,32 +4136,40 @@ dependencies = [
  "sc-client-api",
  "sc-client-db",
  "sc-executor",
+ "sc-executor-common",
  "sc-service",
  "sc-sysinfo",
  "serde",
  "serde_json",
  "sp-api",
+ "sp-block-builder",
  "sp-blockchain",
  "sp-core",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-database",
- "sp-externalities",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-genesis-builder",
  "sp-inherents",
  "sp-io",
  "sp-keystore",
  "sp-runtime",
  "sp-state-machine",
- "sp-storage",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-timestamp",
+ "sp-transaction-pool",
  "sp-trie",
- "sp-wasm-interface",
+ "sp-version",
+ "sp-wasm-interface 20.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "subxt 0.37.0",
+ "subxt-signer",
  "thiserror 1.0.69",
  "thousands",
 ]
 
 [[package]]
 name = "frame-benchmarking-pallet-pov"
-version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "18.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -3758,8 +4196,8 @@ dependencies = [
 
 [[package]]
 name = "frame-election-provider-solution-type"
-version = "14.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "13.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "proc-macro-crate 3.2.0",
  "proc-macro2",
@@ -3769,8 +4207,8 @@ dependencies = [
 
 [[package]]
 name = "frame-election-provider-support"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-election-provider-solution-type",
  "frame-support",
@@ -3785,8 +4223,8 @@ dependencies = [
 
 [[package]]
 name = "frame-executive"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "aquamarine",
  "frame-support",
@@ -3798,7 +4236,7 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
@@ -3836,12 +4274,25 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "frame-metadata"
+version = "18.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "daaf440c68eb2c3d88e5760fe8c7af3f9fee9181fab6c2f2c4e7cc48dcc40bb8"
+dependencies = [
+ "cfg-if",
+ "parity-scale-codec",
+ "scale-info",
+ "serde",
+]
+
 [[package]]
 name = "frame-metadata-hash-extension"
-version = "0.6.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
+ "const-hex",
  "docify",
  "frame-support",
  "frame-system",
@@ -3853,15 +4304,16 @@ dependencies = [
 
 [[package]]
 name = "frame-support"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "aquamarine",
  "array-bytes",
+ "binary-merkle-tree",
  "bitflags 1.3.2",
  "docify",
  "environmental",
- "frame-metadata 16.0.0",
+ "frame-metadata 18.0.0",
  "frame-support-procedural",
  "impl-trait-for-tuples",
  "k256",
@@ -3877,7 +4329,7 @@ dependencies = [
  "sp-arithmetic",
  "sp-core",
  "sp-crypto-hashing-proc-macro",
- "sp-debug-derive",
+ "sp-debug-derive 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-genesis-builder",
  "sp-inherents",
  "sp-io",
@@ -3885,8 +4337,9 @@ dependencies = [
  "sp-runtime",
  "sp-staking",
  "sp-state-machine",
- "sp-std",
- "sp-tracing",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-trie",
  "sp-weights",
  "static_assertions",
  "tt-call",
@@ -3894,8 +4347,8 @@ dependencies = [
 
 [[package]]
 name = "frame-support-procedural"
-version = "30.0.3"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "23.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "Inflector",
  "cfg-expr",
@@ -3908,14 +4361,14 @@ dependencies = [
  "proc-macro-warning 1.0.2",
  "proc-macro2",
  "quote",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "syn 2.0.87",
 ]
 
 [[package]]
 name = "frame-support-procedural-tools"
-version = "13.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "10.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support-procedural-tools-derive",
  "proc-macro-crate 3.2.0",
@@ -3926,8 +4379,8 @@ dependencies = [
 
 [[package]]
 name = "frame-support-procedural-tools-derive"
-version = "12.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "11.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3936,8 +4389,8 @@ dependencies = [
 
 [[package]]
 name = "frame-system"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cfg-if",
  "docify",
@@ -3949,15 +4402,15 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-version",
  "sp-weights",
 ]
 
 [[package]]
 name = "frame-system-benchmarking"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -3970,8 +4423,8 @@ dependencies = [
 
 [[package]]
 name = "frame-system-rpc-runtime-api"
-version = "34.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "parity-scale-codec",
@@ -3980,8 +4433,8 @@ dependencies = [
 
 [[package]]
 name = "frame-try-runtime"
-version = "0.44.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.34.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "parity-scale-codec",
@@ -4139,6 +4592,10 @@ name = "futures-timer"
 version = "3.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24"
+dependencies = [
+ "gloo-timers",
+ "send_wrapper 0.4.0",
+]
 
 [[package]]
 name = "futures-util"
@@ -4175,6 +4632,7 @@ dependencies = [
  "common-runtime",
  "frame-benchmarking",
  "frame-executive",
+ "frame-metadata-hash-extension",
  "frame-support",
  "frame-system",
  "frame-system-benchmarking",
@@ -4249,6 +4707,7 @@ dependencies = [
  "common-runtime",
  "frame-benchmarking",
  "frame-executive",
+ "frame-metadata-hash-extension",
  "frame-support",
  "frame-system",
  "frame-system-benchmarking",
@@ -4425,6 +4884,10 @@ name = "gimli"
 version = "0.31.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
+dependencies = [
+ "fallible-iterator 0.3.0",
+ "stable_deref_trait",
+]
 
 [[package]]
 name = "git-version"
@@ -4487,6 +4950,52 @@ dependencies = [
  "walkdir",
 ]
 
+[[package]]
+name = "gloo-net"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-sink",
+ "gloo-utils",
+ "http 1.1.0",
+ "js-sys",
+ "pin-project",
+ "serde",
+ "serde_json",
+ "thiserror 1.0.69",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "gloo-timers"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gloo-utils"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa"
+dependencies = [
+ "js-sys",
+ "serde",
+ "serde_json",
+ "wasm-bindgen",
+ "web-sys",
+]
+
 [[package]]
 name = "governor"
 version = "0.6.3"
@@ -4518,11 +5027,11 @@ dependencies = [
 
 [[package]]
 name = "graphql-parser"
-version = "0.4.1"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a818c0d883d7c0801df27be910917750932be279c7bc82dc541b8769425f409"
+checksum = "d2ebc8013b4426d5b81a4364c419a95ed0b404af2b82e2457de52d9348f0e474"
 dependencies = [
- "combine",
+ "combine 3.8.1",
  "thiserror 1.0.69",
 ]
 
@@ -4583,6 +5092,7 @@ dependencies = [
  "common-runtime",
  "frame-benchmarking",
  "frame-executive",
+ "frame-metadata-hash-extension",
  "frame-support",
  "frame-system",
  "frame-system-benchmarking",
@@ -4722,9 +5232,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"
@@ -4732,7 +5239,7 @@ version = "0.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
 dependencies = [
- "ahash 0.8.11",
+ "ahash",
 ]
 
 [[package]]
@@ -4741,7 +5248,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",
 ]
@@ -4808,6 +5315,51 @@ version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46"
 
+[[package]]
+name = "hickory-proto"
+version = "0.24.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ad3d6d98c648ed628df039541a5577bee1a7c83e9e16fe3dbedeea4cdfeb971"
+dependencies = [
+ "async-trait",
+ "cfg-if",
+ "data-encoding",
+ "enum-as-inner 0.6.1",
+ "futures-channel",
+ "futures-io",
+ "futures-util",
+ "idna 1.0.3",
+ "ipnet",
+ "once_cell",
+ "rand",
+ "thiserror 1.0.69",
+ "tinyvec",
+ "tokio",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "hickory-resolver"
+version = "0.24.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcf287bde7b776e85d7188e6e5db7cf410a2f9531fe82817eb87feed034c8d14"
+dependencies = [
+ "cfg-if",
+ "futures-util",
+ "hickory-proto",
+ "ipconfig",
+ "lru-cache",
+ "once_cell",
+ "parking_lot 0.12.3",
+ "rand",
+ "resolv-conf",
+ "smallvec",
+ "thiserror 1.0.69",
+ "tokio",
+ "tracing",
+]
+
 [[package]]
 name = "hkdf"
 version = "0.12.4"
@@ -4847,15 +5399,6 @@ dependencies = [
  "hmac 0.8.1",
 ]
 
-[[package]]
-name = "home"
-version = "0.5.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
-dependencies = [
- "windows-sys 0.52.0",
-]
-
 [[package]]
 name = "hostname"
 version = "0.3.1"
@@ -5012,7 +5555,9 @@ dependencies = [
  "http 1.1.0",
  "hyper 1.5.0",
  "hyper-util",
+ "log",
  "rustls 0.23.16",
+ "rustls-native-certs 0.8.1",
  "rustls-pki-types",
  "tokio",
  "tokio-rustls 0.26.0",
@@ -5245,7 +5790,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d6b0422c86d7ce0e97169cc42e04ae643caf278874a7a3c87b8150a220dc7e1e"
 dependencies = [
  "async-io",
- "core-foundation",
+ "core-foundation 0.9.4",
  "fnv",
  "futures 0.3.31",
  "if-addrs",
@@ -5310,13 +5855,24 @@ dependencies = [
  "parity-scale-codec",
 ]
 
+[[package]]
+name = "impl-num-traits"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "803d15461ab0dcc56706adf266158acbc44ccf719bf7d0af30705f58b90a4b8c"
+dependencies = [
+ "integer-sqrt",
+ "num-traits 0.2.19",
+ "uint 0.10.0",
+]
+
 [[package]]
 name = "impl-rlp"
-version = "0.3.0"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808"
+checksum = "54ed8ad1f3877f7e775b8cbf30ed1bd3209a95401817f19a0eb4402d13f8cf90"
 dependencies = [
- "rlp",
+ "rlp 0.6.1",
 ]
 
 [[package]]
@@ -5554,7 +6110,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec"
 dependencies = [
  "cesu8",
- "combine",
+ "combine 4.6.7",
  "jni-sys",
  "log",
  "thiserror 1.0.69",
@@ -5585,20 +6141,89 @@ dependencies = [
  "wasm-bindgen",
 ]
 
+[[package]]
+name = "jsonrpsee"
+version = "0.22.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfdb12a2381ea5b2e68c3469ec604a007b367778cdb14d09612c8069ebd616ad"
+dependencies = [
+ "jsonrpsee-client-transport 0.22.5",
+ "jsonrpsee-core 0.22.5",
+ "jsonrpsee-http-client 0.22.5",
+ "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-types 0.23.2",
+ "jsonrpsee-ws-client 0.23.2",
+]
+
 [[package]]
 name = "jsonrpsee"
 version = "0.24.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c5c71d8c1a731cc4227c2f698d377e7848ca12c8a48866fc5e6951c43a4db843"
 dependencies = [
- "jsonrpsee-client-transport",
- "jsonrpsee-core",
+ "jsonrpsee-client-transport 0.24.7",
+ "jsonrpsee-core 0.24.7",
+ "jsonrpsee-http-client 0.24.8",
  "jsonrpsee-proc-macros",
  "jsonrpsee-server",
- "jsonrpsee-types",
- "jsonrpsee-ws-client",
+ "jsonrpsee-types 0.24.7",
+ "jsonrpsee-wasm-client",
+ "jsonrpsee-ws-client 0.24.7",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "jsonrpsee-client-transport"
+version = "0.22.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4978087a58c3ab02efc5b07c5e5e2803024536106fd5506f558db172c889b3aa"
+dependencies = [
+ "futures-util",
+ "http 0.2.12",
+ "jsonrpsee-core 0.22.5",
+ "pin-project",
+ "rustls-native-certs 0.7.3",
+ "rustls-pki-types",
+ "soketto 0.7.1",
+ "thiserror 1.0.69",
+ "tokio",
+ "tokio-rustls 0.25.0",
+ "tokio-util",
+ "tracing",
+ "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.16",
+ "rustls-pki-types",
+ "rustls-platform-verifier",
+ "soketto 0.8.0",
+ "thiserror 1.0.69",
  "tokio",
+ "tokio-rustls 0.26.0",
+ "tokio-util",
  "tracing",
+ "url",
 ]
 
 [[package]]
@@ -5608,14 +6233,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "548125b159ba1314104f5bb5f38519e03a41862786aa3925cf349aae9cdd546e"
 dependencies = [
  "base64 0.22.1",
+ "futures-channel",
  "futures-util",
+ "gloo-net",
  "http 1.1.0",
- "jsonrpsee-core",
+ "jsonrpsee-core 0.24.7",
  "pin-project",
  "rustls 0.23.16",
  "rustls-pki-types",
  "rustls-platform-verifier",
- "soketto",
+ "soketto 0.8.0",
  "thiserror 1.0.69",
  "tokio",
  "tokio-rustls 0.26.0",
@@ -5624,6 +6251,51 @@ dependencies = [
  "url",
 ]
 
+[[package]]
+name = "jsonrpsee-core"
+version = "0.22.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4b257e1ec385e07b0255dde0b933f948b5c8b8c28d42afda9587c3a967b896d"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "beef",
+ "futures-timer",
+ "futures-util",
+ "hyper 0.14.31",
+ "jsonrpsee-types 0.22.5",
+ "pin-project",
+ "rustc-hash 1.1.0",
+ "serde",
+ "serde_json",
+ "thiserror 1.0.69",
+ "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",
+ "futures-timer",
+ "futures-util",
+ "jsonrpsee-types 0.23.2",
+ "pin-project",
+ "rustc-hash 1.1.0",
+ "serde",
+ "serde_json",
+ "thiserror 1.0.69",
+ "tokio",
+ "tokio-stream",
+ "tracing",
+]
+
 [[package]]
 name = "jsonrpsee-core"
 version = "0.24.7"
@@ -5637,7 +6309,7 @@ dependencies = [
  "http 1.1.0",
  "http-body 1.0.1",
  "http-body-util",
- "jsonrpsee-types",
+ "jsonrpsee-types 0.24.7",
  "parking_lot 0.12.3",
  "pin-project",
  "rand",
@@ -5648,6 +6320,52 @@ dependencies = [
  "tokio",
  "tokio-stream",
  "tracing",
+ "wasm-bindgen-futures",
+]
+
+[[package]]
+name = "jsonrpsee-http-client"
+version = "0.22.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ccf93fc4a0bfe05d851d37d7c32b7f370fe94336b52a2f0efc5f1981895c2e5"
+dependencies = [
+ "async-trait",
+ "hyper 0.14.31",
+ "hyper-rustls 0.24.2",
+ "jsonrpsee-core 0.22.5",
+ "jsonrpsee-types 0.22.5",
+ "serde",
+ "serde_json",
+ "thiserror 1.0.69",
+ "tokio",
+ "tower",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "jsonrpsee-http-client"
+version = "0.24.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87c24e981ad17798bbca852b0738bfb7b94816ed687bd0d5da60bfa35fa0fdc3"
+dependencies = [
+ "async-trait",
+ "base64 0.22.1",
+ "http-body 1.0.1",
+ "hyper 1.5.0",
+ "hyper-rustls 0.27.3",
+ "hyper-util",
+ "jsonrpsee-core 0.24.7",
+ "jsonrpsee-types 0.24.7",
+ "rustls 0.23.16",
+ "rustls-platform-verifier",
+ "serde",
+ "serde_json",
+ "thiserror 1.0.69",
+ "tokio",
+ "tower",
+ "tracing",
+ "url",
 ]
 
 [[package]]
@@ -5675,13 +6393,13 @@ dependencies = [
  "http-body-util",
  "hyper 1.5.0",
  "hyper-util",
- "jsonrpsee-core",
- "jsonrpsee-types",
+ "jsonrpsee-core 0.24.7",
+ "jsonrpsee-types 0.24.7",
  "pin-project",
  "route-recognizer",
  "serde",
  "serde_json",
- "soketto",
+ "soketto 0.8.0",
  "thiserror 1.0.69",
  "tokio",
  "tokio-stream",
@@ -5692,26 +6410,76 @@ dependencies = [
 
 [[package]]
 name = "jsonrpsee-types"
-version = "0.24.7"
+version = "0.22.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a178c60086f24cc35bb82f57c651d0d25d99c4742b4d335de04e97fa1f08a8a1"
+checksum = "150d6168405890a7a3231a3c74843f58b8959471f6df76078db2619ddee1d07d"
 dependencies = [
- "http 1.1.0",
+ "anyhow",
+ "beef",
  "serde",
  "serde_json",
  "thiserror 1.0.69",
 ]
 
 [[package]]
-name = "jsonrpsee-ws-client"
-version = "0.24.7"
+name = "jsonrpsee-types"
+version = "0.23.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fe322e0896d0955a3ebdd5bf813571c53fea29edd713bc315b76620b327e86d"
+checksum = "d9c465fbe385238e861fdc4d1c85e04ada6c1fd246161d26385c1b311724d2af"
 dependencies = [
+ "beef",
  "http 1.1.0",
- "jsonrpsee-client-transport",
- "jsonrpsee-core",
- "jsonrpsee-types",
+ "serde",
+ "serde_json",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "jsonrpsee-types"
+version = "0.24.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a178c60086f24cc35bb82f57c651d0d25d99c4742b4d335de04e97fa1f08a8a1"
+dependencies = [
+ "http 1.1.0",
+ "serde",
+ "serde_json",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "jsonrpsee-wasm-client"
+version = "0.24.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42e41af42ca39657313748174d02766e5287d3a57356f16756dbd8065b933977"
+dependencies = [
+ "jsonrpsee-client-transport 0.24.7",
+ "jsonrpsee-core 0.24.7",
+ "jsonrpsee-types 0.24.7",
+]
+
+[[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 = "jsonrpsee-ws-client"
+version = "0.24.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fe322e0896d0955a3ebdd5bf813571c53fea29edd713bc315b76620b327e86d"
+dependencies = [
+ "http 1.1.0",
+ "jsonrpsee-client-transport 0.24.7",
+ "jsonrpsee-core 0.24.7",
+ "jsonrpsee-types 0.24.7",
  "url",
 ]
 
@@ -5738,6 +6506,16 @@ dependencies = [
  "cpufeatures",
 ]
 
+[[package]]
+name = "keccak-hash"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b286e6b663fb926e1eeb68528e69cb70ed46c6d65871a21b2215ae8154c6d3c"
+dependencies = [
+ "primitive-types 0.12.2",
+ "tiny-keccak",
+]
+
 [[package]]
 name = "keccak-hash"
 version = "0.11.0"
@@ -5954,7 +6732,7 @@ dependencies = [
  "libp2p-identity",
  "libp2p-swarm",
  "log",
- "lru 0.12.5",
+ "lru",
  "quick-protobuf",
  "quick-protobuf-codec",
  "smallvec",
@@ -5968,7 +6746,7 @@ version = "0.2.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8"
 dependencies = [
- "bs58 0.5.1",
+ "bs58",
  "ed25519-dalek",
  "hkdf",
  "multihash 0.19.2",
@@ -6229,7 +7007,7 @@ dependencies = [
  "futures 0.3.31",
  "js-sys",
  "libp2p-core",
- "send_wrapper",
+ "send_wrapper 0.6.0",
  "wasm-bindgen",
  "wasm-bindgen-futures",
 ]
@@ -6249,7 +7027,7 @@ dependencies = [
  "parking_lot 0.12.3",
  "pin-project-lite",
  "rw-stream-sink",
- "soketto",
+ "soketto 0.8.0",
  "thiserror 1.0.69",
  "url",
  "webpki-roots 0.25.4",
@@ -6405,21 +7183,22 @@ checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704"
 
 [[package]]
 name = "litep2p"
-version = "0.6.2"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f46c51c205264b834ceed95c8b195026e700494bc3991aaba3b4ea9e20626d9"
+checksum = "2b0fef34af8847e816003bf7fdeac5ea50b9a7a88441ac927a6166b5e812ab79"
 dependencies = [
  "async-trait",
- "bs58 0.4.0",
+ "bs58",
  "bytes",
  "cid 0.10.1",
  "ed25519-dalek",
  "futures 0.3.31",
  "futures-timer",
  "hex-literal",
+ "hickory-resolver",
  "indexmap 2.6.0",
  "libc",
- "mockall 0.12.1",
+ "mockall 0.13.1",
  "multiaddr 0.17.1",
  "multihash 0.17.0",
  "network-interface",
@@ -6427,8 +7206,7 @@ dependencies = [
  "parking_lot 0.12.3",
  "pin-project",
  "prost 0.12.6",
- "prost-build 0.11.9",
- "quinn 0.9.4",
+ "prost-build",
  "rand",
  "rcgen",
  "ring 0.16.20",
@@ -6440,18 +7218,15 @@ dependencies = [
  "snow",
  "socket2 0.5.7",
  "static_assertions",
- "str0m",
  "thiserror 1.0.69",
  "tokio",
  "tokio-stream",
  "tokio-tungstenite",
  "tokio-util",
  "tracing",
- "trust-dns-resolver",
  "uint 0.9.5",
  "unsigned-varint 0.8.0",
  "url",
- "webpki",
  "x25519-dalek",
  "x509-parser 0.16.0",
  "yasna",
@@ -6474,15 +7249,6 @@ version = "0.4.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
 
-[[package]]
-name = "lru"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909"
-dependencies = [
- "hashbrown 0.12.3",
-]
-
 [[package]]
 name = "lru"
 version = "0.12.5"
@@ -6665,6 +7431,20 @@ dependencies = [
  "hash-db",
 ]
 
+[[package]]
+name = "merkleized-metadata"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38c592efaf1b3250df14c8f3c2d952233f0302bb81d3586db2f303666c1cd607"
+dependencies = [
+ "array-bytes",
+ "blake3",
+ "frame-metadata 18.0.0",
+ "parity-scale-codec",
+ "scale-decode 0.13.1",
+ "scale-info",
+]
+
 [[package]]
 name = "merlin"
 version = "3.0.0"
@@ -6764,15 +7544,14 @@ dependencies = [
 
 [[package]]
 name = "mockall"
-version = "0.12.1"
+version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43766c2b5203b10de348ffe19f7e54564b64f3d6018ff7648d1e2d6d3a0f0a48"
+checksum = "39a6bfcc6c8c7eed5ee98b9c3e33adc726054389233e201c95dab2d41a3839d2"
 dependencies = [
  "cfg-if",
  "downcast",
  "fragile",
- "lazy_static",
- "mockall_derive 0.12.1",
+ "mockall_derive 0.13.1",
  "predicates 3.1.2",
  "predicates-tree",
 ]
@@ -6791,9 +7570,9 @@ dependencies = [
 
 [[package]]
 name = "mockall_derive"
-version = "0.12.1"
+version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af7cbce79ec385a1d4f54baa90a76401eb15d9cab93685f62e7e9f942aa00ae2"
+checksum = "25ca3004c2efe9011bd4e461bd8256445052b9615405b4f7ea43fc8ca5c20898"
 dependencies = [
  "cfg-if",
  "proc-macro2",
@@ -6920,12 +7699,6 @@ 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.13.0"
@@ -6964,6 +7737,12 @@ dependencies = [
  "rand",
 ]
 
+[[package]]
+name = "nanorand"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3"
+
 [[package]]
 name = "netlink-packet-core"
 version = "0.4.2"
@@ -7071,10 +7850,16 @@ version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c"
 
+[[package]]
+name = "no-std-net"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43794a0ace135be66a25d3ae77d41b91615fb68ae937f904090203e81f755b65"
+
 [[package]]
 name = "node-primitives"
 version = "2.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "sp-core",
  "sp-runtime",
@@ -7331,32 +8116,6 @@ version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
 
-[[package]]
-name = "openssl"
-version = "0.10.68"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5"
-dependencies = [
- "bitflags 2.6.0",
- "cfg-if",
- "foreign-types",
- "libc",
- "once_cell",
- "openssl-macros",
- "openssl-sys",
-]
-
-[[package]]
-name = "openssl-macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.87",
-]
-
 [[package]]
 name = "openssl-probe"
 version = "0.1.5"
@@ -7364,32 +8123,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
 
 [[package]]
-name = "openssl-src"
-version = "300.4.0+3.4.0"
+name = "option-ext"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a709e02f2b4aca747929cca5ed248880847c650233cf8b8cdc48f40aaf4898a6"
-dependencies = [
- "cc",
-]
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
 
 [[package]]
-name = "openssl-sys"
-version = "0.9.104"
+name = "orchestra"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741"
+checksum = "41f6bbacc8c189a3f2e45e0fd0436e5d97f194db888e721bdbc3973e7dbed4c2"
 dependencies = [
- "cc",
- "libc",
- "openssl-src",
- "pkg-config",
- "vcpkg",
+ "async-trait",
+ "dyn-clonable",
+ "futures 0.3.31",
+ "futures-timer",
+ "orchestra-proc-macro",
+ "pin-project",
+ "prioritized-metered-channel",
+ "thiserror 1.0.69",
+ "tracing",
 ]
 
 [[package]]
-name = "option-ext"
-version = "0.2.0"
+name = "orchestra-proc-macro"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+checksum = "f7b1d40dd8f367db3c65bec8d3dd47d4a604ee8874480738f93191bddab4e0e0"
+dependencies = [
+ "expander",
+ "indexmap 2.6.0",
+ "itertools 0.11.0",
+ "petgraph",
+ "proc-macro-crate 3.2.0",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
 
 [[package]]
 name = "overload"
@@ -7399,27 +8169,27 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
 
 [[package]]
 name = "pallet-alliance"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
  "frame-system",
  "log",
  "pallet-collective",
- "pallet-identity 38.0.0",
+ "pallet-identity 29.0.0",
  "parity-scale-codec",
  "scale-info",
  "sp-core",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-io",
  "sp-runtime",
 ]
 
 [[package]]
 name = "pallet-asset-conversion"
-version = "20.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "10.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -7436,8 +8206,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-asset-conversion-ops"
-version = "0.6.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -7454,9 +8224,10 @@ dependencies = [
 
 [[package]]
 name = "pallet-asset-conversion-tx-payment"
-version = "20.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "10.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
+ "frame-benchmarking",
  "frame-support",
  "frame-system",
  "pallet-asset-conversion",
@@ -7468,8 +8239,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-asset-rate"
-version = "17.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -7482,8 +8253,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-asset-tx-payment"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -7499,8 +8270,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-assets"
-version = "40.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "29.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -7515,8 +8286,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-assets-freezer"
-version = "0.5.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -7530,8 +8301,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-atomic-swap"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -7544,8 +8315,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-aura"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -7560,8 +8331,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-authority-discovery"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -7595,8 +8366,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-authorship"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -7608,8 +8379,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-babe"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -7631,8 +8402,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-bags-list"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "aquamarine",
  "docify",
@@ -7647,13 +8418,13 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "pallet-balances"
-version = "39.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -7667,8 +8438,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-beefy"
-version = "39.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -7686,8 +8457,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-beefy-mmr"
-version = "39.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
  "binary-merkle-tree",
@@ -7711,8 +8482,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-bounties"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -7728,8 +8499,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-bridge-grandpa"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-header-chain",
  "bp-runtime",
@@ -7742,13 +8513,13 @@ dependencies = [
  "scale-info",
  "sp-consensus-grandpa",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "pallet-bridge-messages"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-header-chain",
  "bp-messages",
@@ -7760,14 +8531,14 @@ dependencies = [
  "parity-scale-codec",
  "scale-info",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-trie",
 ]
 
 [[package]]
 name = "pallet-bridge-parachains"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-header-chain",
  "bp-parachains",
@@ -7781,13 +8552,13 @@ dependencies = [
  "parity-scale-codec",
  "scale-info",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "pallet-bridge-relayers"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-header-chain",
  "bp-messages",
@@ -7805,13 +8576,13 @@ dependencies = [
  "scale-info",
  "sp-arithmetic",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "pallet-broker"
-version = "0.17.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.6.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bitvec",
  "frame-benchmarking",
@@ -7845,8 +8616,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-child-bounties"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -7863,8 +8634,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-collator-selection"
-version = "19.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "9.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -7882,9 +8653,10 @@ dependencies = [
 
 [[package]]
 name = "pallet-collective"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
+ "docify",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
@@ -7898,8 +8670,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-collective-content"
-version = "0.16.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.6.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -7912,8 +8684,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-contracts"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bitflags 1.3.2",
  "environmental",
@@ -7935,17 +8707,17 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-builder",
  "wasm-instrument",
- "wasmi",
+ "wasmi 0.32.3",
 ]
 
 [[package]]
 name = "pallet-contracts-mock-network"
-version = "14.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "3.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -7970,7 +8742,7 @@ dependencies = [
  "sp-io",
  "sp-keystore",
  "sp-runtime",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-builder",
  "staging-xcm-executor",
@@ -7979,8 +8751,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-contracts-proc-macro"
-version = "23.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "18.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -7989,20 +8761,19 @@ dependencies = [
 
 [[package]]
 name = "pallet-contracts-uapi"
-version = "12.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "5.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bitflags 1.3.2",
  "parity-scale-codec",
  "paste",
- "polkavm-derive 0.9.1",
  "scale-info",
 ]
 
 [[package]]
 name = "pallet-conviction-voting"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "assert_matches",
  "frame-benchmarking",
@@ -8017,8 +8788,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-core-fellowship"
-version = "22.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "12.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8035,8 +8806,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-delegated-staking"
-version = "5.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "1.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -8050,8 +8821,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-democracy"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8067,8 +8838,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-dev-mode"
-version = "20.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "10.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -8170,8 +8941,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-election-provider-multi-phase"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -8192,8 +8963,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-election-provider-support-benchmarking"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -8205,8 +8976,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-elections-phragmen"
-version = "39.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "29.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8223,8 +8994,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-fast-unstake"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -8241,8 +9012,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-glutton"
-version = "24.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "14.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "blake2 0.10.6",
  "frame-benchmarking",
@@ -8259,8 +9030,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-grandpa"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8284,7 +9055,7 @@ name = "pallet-identity"
 version = "1.0.0"
 dependencies = [
  "base64 0.22.1",
- "bs58 0.5.1",
+ "bs58",
  "duniter-primitives",
  "ed25519-dalek",
  "frame-benchmarking",
@@ -8303,8 +9074,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-identity"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "29.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "enumflags2",
  "frame-benchmarking",
@@ -8319,8 +9090,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-im-online"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8338,8 +9109,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-indices"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8354,8 +9125,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-insecure-randomness-collective-flip"
-version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "16.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -8367,8 +9138,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-lottery"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8397,8 +9168,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-membership"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8413,8 +9184,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-message-queue"
-version = "41.0.2"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "31.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "environmental",
  "frame-benchmarking",
@@ -8432,9 +9203,10 @@ dependencies = [
 
 [[package]]
 name = "pallet-migrations"
-version = "8.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "1.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
+ "cfg-if",
  "docify",
  "frame-benchmarking",
  "frame-support",
@@ -8449,8 +9221,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-mixnet"
-version = "0.14.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.4.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8468,8 +9240,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-mmr"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8485,23 +9257,19 @@ dependencies = [
 
 [[package]]
 name = "pallet-multisig"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "frame-benchmarking",
- "frame-support",
- "frame-system",
  "log",
  "parity-scale-codec",
+ "polkadot-sdk-frame",
  "scale-info",
- "sp-io",
- "sp-runtime",
 ]
 
 [[package]]
 name = "pallet-nft-fractionalization"
-version = "21.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "10.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8516,8 +9284,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-nfts"
-version = "32.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "22.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "enumflags2",
  "frame-benchmarking",
@@ -8533,8 +9301,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-nfts-runtime-api"
-version = "24.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "14.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "pallet-nfts",
  "parity-scale-codec",
@@ -8543,8 +9311,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-nis"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8558,8 +9326,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-node-authorization"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -8573,8 +9341,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-nomination-pools"
-version = "35.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "25.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -8586,13 +9354,13 @@ dependencies = [
  "sp-io",
  "sp-runtime",
  "sp-staking",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "pallet-nomination-pools-benchmarking"
-version = "36.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -8605,14 +9373,14 @@ dependencies = [
  "parity-scale-codec",
  "scale-info",
  "sp-runtime",
- "sp-runtime-interface",
+ "sp-runtime-interface 24.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-staking",
 ]
 
 [[package]]
 name = "pallet-nomination-pools-runtime-api"
-version = "33.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "23.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "pallet-nomination-pools",
  "parity-scale-codec",
@@ -8636,8 +9404,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-offences"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -8652,8 +9420,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-offences-benchmarking"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -8664,7 +9432,7 @@ dependencies = [
  "pallet-balances",
  "pallet-grandpa",
  "pallet-im-online",
- "pallet-offences 37.0.0",
+ "pallet-offences 27.0.0",
  "pallet-session",
  "pallet-staking",
  "parity-scale-codec",
@@ -8692,8 +9460,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-paged-list"
-version = "0.16.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.6.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -8709,8 +9477,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-parameters"
-version = "0.9.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -8726,8 +9494,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-preimage"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8757,16 +9525,12 @@ dependencies = [
 
 [[package]]
 name = "pallet-proxy"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "frame-benchmarking",
- "frame-support",
- "frame-system",
  "parity-scale-codec",
+ "polkadot-sdk-frame",
  "scale-info",
- "sp-io",
- "sp-runtime",
 ]
 
 [[package]]
@@ -8787,8 +9551,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-ranked-collective"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8805,8 +9569,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-recovery"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8819,8 +9583,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-referenda"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8836,8 +9600,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-remark"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -8852,43 +9616,55 @@ dependencies = [
 
 [[package]]
 name = "pallet-revive"
-version = "0.2.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bitflags 1.3.2",
+ "derive_more 0.99.18",
  "environmental",
+ "ethereum-types 0.15.1",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
+ "hex",
  "impl-trait-for-tuples",
+ "jsonrpsee 0.24.7",
  "log",
  "pallet-balances",
  "pallet-revive-fixtures",
  "pallet-revive-proc-macro",
  "pallet-revive-uapi",
+ "pallet-transaction-payment",
  "parity-scale-codec",
  "paste",
- "polkavm 0.10.0",
+ "polkavm 0.13.0",
+ "rlp 0.6.1",
  "scale-info",
  "serde",
  "sp-api",
+ "sp-arithmetic",
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-weights",
  "staging-xcm",
  "staging-xcm-builder",
+ "subxt-signer",
 ]
 
 [[package]]
 name = "pallet-revive-fixtures"
-version = "0.2.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "anyhow",
  "frame-system",
+ "log",
  "parity-wasm",
- "polkavm-linker 0.10.0",
+ "polkavm-linker 0.14.0",
+ "sp-core",
+ "sp-io",
  "sp-runtime",
  "tempfile",
  "toml 0.8.19",
@@ -8896,8 +9672,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-revive-mock-network"
-version = "0.2.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -8921,7 +9697,7 @@ dependencies = [
  "sp-io",
  "sp-keystore",
  "sp-runtime",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-builder",
  "staging-xcm-executor",
@@ -8930,8 +9706,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-revive-proc-macro"
-version = "0.1.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -8940,20 +9716,20 @@ dependencies = [
 
 [[package]]
 name = "pallet-revive-uapi"
-version = "0.1.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bitflags 1.3.2",
  "parity-scale-codec",
  "paste",
- "polkavm-derive 0.10.0",
+ "polkavm-derive 0.14.0",
  "scale-info",
 ]
 
 [[package]]
 name = "pallet-root-offences"
-version = "35.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "25.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -8967,8 +9743,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-root-testing"
-version = "14.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "4.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -8981,8 +9757,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-safe-mode"
-version = "19.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "9.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -8999,8 +9775,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-salary"
-version = "23.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "13.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -9017,8 +9793,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-scheduler"
-version = "39.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "29.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -9034,8 +9810,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-scored-pool"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -9047,8 +9823,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-session"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -9080,8 +9856,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-session-benchmarking"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -9096,8 +9872,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-skip-feeless-payment"
-version = "13.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "3.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -9127,8 +9903,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-society"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -9144,8 +9920,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-staking"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -9165,8 +9941,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-staking-reward-fn"
-version = "22.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "19.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "log",
  "sp-arithmetic",
@@ -9174,8 +9950,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-staking-runtime-api"
-version = "24.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "14.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -9184,8 +9960,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-state-trie-migration"
-version = "40.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "29.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -9200,8 +9976,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-statement"
-version = "20.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "10.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -9217,8 +9993,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-sudo"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -9232,8 +10008,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-timestamp"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -9245,14 +10021,14 @@ dependencies = [
  "sp-inherents",
  "sp-io",
  "sp-runtime",
- "sp-storage",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-timestamp",
 ]
 
 [[package]]
 name = "pallet-tips"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -9269,9 +10045,10 @@ dependencies = [
 
 [[package]]
 name = "pallet-transaction-payment"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
+ "frame-benchmarking",
  "frame-support",
  "frame-system",
  "parity-scale-codec",
@@ -9284,10 +10061,10 @@ dependencies = [
 
 [[package]]
 name = "pallet-transaction-payment-rpc"
-version = "41.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "30.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "jsonrpsee",
+ "jsonrpsee 0.24.7",
  "pallet-transaction-payment-rpc-runtime-api",
  "parity-scale-codec",
  "sp-api",
@@ -9300,8 +10077,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-transaction-payment-rpc-runtime-api"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "pallet-transaction-payment",
  "parity-scale-codec",
@@ -9312,8 +10089,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-transaction-storage"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -9331,14 +10108,15 @@ dependencies = [
 
 [[package]]
 name = "pallet-treasury"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
  "impl-trait-for-tuples",
+ "log",
  "pallet-balances",
  "parity-scale-codec",
  "scale-info",
@@ -9349,8 +10127,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-tx-pause"
-version = "19.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "9.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -9366,8 +10144,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-uniques"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -9414,8 +10192,23 @@ dependencies = [
 
 [[package]]
 name = "pallet-utility"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "frame-benchmarking",
+ "frame-support",
+ "frame-system",
+ "parity-scale-codec",
+ "scale-info",
+ "sp-core",
+ "sp-io",
+ "sp-runtime",
+]
+
+[[package]]
+name = "pallet-verify-signature"
+version = "1.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -9425,12 +10218,13 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
+ "sp-weights",
 ]
 
 [[package]]
 name = "pallet-vesting"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -9443,8 +10237,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-whitelist"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -9457,14 +10251,13 @@ dependencies = [
 
 [[package]]
 name = "pallet-xcm"
-version = "17.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bounded-collections",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
- "log",
  "pallet-balances",
  "parity-scale-codec",
  "scale-info",
@@ -9481,8 +10274,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-xcm-benchmarks"
-version = "17.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -9499,8 +10292,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-xcm-bridge-hub"
-version = "0.13.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-messages",
  "bp-runtime",
@@ -9513,7 +10306,7 @@ dependencies = [
  "scale-info",
  "sp-core",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-builder",
  "staging-xcm-executor",
@@ -9521,8 +10314,8 @@ dependencies = [
 
 [[package]]
 name = "pallet-xcm-bridge-hub-router"
-version = "0.15.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.5.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bp-xcm-bridge-hub-router",
  "frame-benchmarking",
@@ -9533,15 +10326,15 @@ dependencies = [
  "scale-info",
  "sp-core",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-builder",
 ]
 
 [[package]]
 name = "parachains-common"
-version = "18.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-primitives-core",
  "cumulus-primitives-utility",
@@ -9570,8 +10363,8 @@ dependencies = [
 
 [[package]]
 name = "parachains-runtimes-test-utils"
-version = "17.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-pallet-parachain-system",
  "cumulus-pallet-xcmp-queue",
@@ -9591,7 +10384,7 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-parachain-info",
  "staging-xcm",
  "staging-xcm-executor",
@@ -9665,35 +10458,6 @@ dependencies = [
  "syn 1.0.109",
 ]
 
-[[package]]
-name = "parity-util-mem"
-version = "0.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d32c34f4f5ca7f9196001c0aba5a1f9a5a12382c8944b8b0f90233282d1e8f8"
-dependencies = [
- "cfg-if",
- "ethereum-types",
- "hashbrown 0.12.3",
- "impl-trait-for-tuples",
- "lru 0.8.1",
- "parity-util-mem-derive",
- "parking_lot 0.12.3",
- "primitive-types 0.12.2",
- "smallvec",
- "winapi",
-]
-
-[[package]]
-name = "parity-util-mem-derive"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2"
-dependencies = [
- "proc-macro2",
- "syn 1.0.109",
- "synstructure 0.12.6",
-]
-
 [[package]]
 name = "parity-wasm"
 version = "0.45.0"
@@ -9965,8 +10729,8 @@ dependencies = [
 
 [[package]]
 name = "polkadot-core-primitives"
-version = "15.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -9974,10 +10738,131 @@ dependencies = [
  "sp-runtime",
 ]
 
+[[package]]
+name = "polkadot-node-metrics"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "bs58",
+ "futures 0.3.31",
+ "futures-timer",
+ "log",
+ "parity-scale-codec",
+ "polkadot-primitives",
+ "prioritized-metered-channel",
+ "sc-cli",
+ "sc-service",
+ "sc-tracing",
+ "substrate-prometheus-endpoint",
+ "tracing-gum",
+]
+
+[[package]]
+name = "polkadot-node-network-protocol"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "async-channel 1.9.0",
+ "async-trait",
+ "bitvec",
+ "derive_more 0.99.18",
+ "fatality",
+ "futures 0.3.31",
+ "hex",
+ "parity-scale-codec",
+ "polkadot-node-primitives",
+ "polkadot-primitives",
+ "rand",
+ "sc-authority-discovery",
+ "sc-network",
+ "sc-network-types",
+ "sp-runtime",
+ "strum 0.26.3",
+ "thiserror 1.0.69",
+ "tracing-gum",
+]
+
+[[package]]
+name = "polkadot-node-primitives"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "bitvec",
+ "bounded-vec",
+ "futures 0.3.31",
+ "futures-timer",
+ "parity-scale-codec",
+ "polkadot-parachain-primitives",
+ "polkadot-primitives",
+ "sc-keystore",
+ "schnorrkel",
+ "serde",
+ "sp-application-crypto",
+ "sp-consensus-babe",
+ "sp-consensus-slots",
+ "sp-core",
+ "sp-keystore",
+ "sp-maybe-compressed-blob",
+ "sp-runtime",
+ "thiserror 1.0.69",
+ "zstd 0.12.4",
+]
+
+[[package]]
+name = "polkadot-node-subsystem-types"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "async-trait",
+ "bitvec",
+ "derive_more 0.99.18",
+ "fatality",
+ "futures 0.3.31",
+ "orchestra",
+ "polkadot-node-network-protocol",
+ "polkadot-node-primitives",
+ "polkadot-primitives",
+ "polkadot-statement-table",
+ "sc-client-api",
+ "sc-network",
+ "sc-network-types",
+ "sc-transaction-pool-api",
+ "smallvec",
+ "sp-api",
+ "sp-authority-discovery",
+ "sp-blockchain",
+ "sp-consensus-babe",
+ "sp-runtime",
+ "substrate-prometheus-endpoint",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "polkadot-overseer"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "async-trait",
+ "futures 0.3.31",
+ "futures-timer",
+ "orchestra",
+ "parking_lot 0.12.3",
+ "polkadot-node-metrics",
+ "polkadot-node-network-protocol",
+ "polkadot-node-primitives",
+ "polkadot-node-subsystem-types",
+ "polkadot-primitives",
+ "sc-client-api",
+ "sp-api",
+ "sp-core",
+ "tikv-jemalloc-ctl",
+ "tracing-gum",
+]
+
 [[package]]
 name = "polkadot-parachain-primitives"
-version = "14.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "6.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bounded-collections",
  "derive_more 0.99.18",
@@ -9992,8 +10877,8 @@ dependencies = [
 
 [[package]]
 name = "polkadot-primitives"
-version = "16.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bitvec",
  "hex-literal",
@@ -10014,12 +10899,14 @@ dependencies = [
  "sp-keystore",
  "sp-runtime",
  "sp-staking",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "thiserror 1.0.69",
 ]
 
 [[package]]
 name = "polkadot-runtime-common"
-version = "17.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bitvec",
  "frame-benchmarking",
@@ -10035,7 +10922,7 @@ dependencies = [
  "pallet-broker",
  "pallet-election-provider-multi-phase",
  "pallet-fast-unstake",
- "pallet-identity 38.0.0",
+ "pallet-identity 29.0.0",
  "pallet-session",
  "pallet-staking",
  "pallet-staking-reward-fn",
@@ -10055,6 +10942,7 @@ dependencies = [
  "sp-core",
  "sp-inherents",
  "sp-io",
+ "sp-keyring",
  "sp-npos-elections",
  "sp-runtime",
  "sp-session",
@@ -10067,20 +10955,20 @@ dependencies = [
 
 [[package]]
 name = "polkadot-runtime-metrics"
-version = "17.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "bs58 0.5.1",
+ "bs58",
  "frame-benchmarking",
  "parity-scale-codec",
  "polkadot-primitives",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "polkadot-runtime-parachains"
-version = "17.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bitflags 1.3.2",
  "bitvec",
@@ -10120,15 +11008,15 @@ dependencies = [
  "sp-runtime",
  "sp-session",
  "sp-staking",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-executor",
 ]
 
 [[package]]
 name = "polkadot-sdk"
-version = "0.7.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "asset-test-utils",
  "assets-common",
@@ -10214,12 +11102,12 @@ dependencies = [
  "pallet-fast-unstake",
  "pallet-glutton",
  "pallet-grandpa",
- "pallet-identity 38.0.0",
+ "pallet-identity 29.0.0",
  "pallet-im-online",
  "pallet-indices",
  "pallet-insecure-randomness-collective-flip",
  "pallet-lottery",
- "pallet-membership 38.0.0",
+ "pallet-membership 28.0.0",
  "pallet-message-queue",
  "pallet-migrations",
  "pallet-mixnet",
@@ -10233,7 +11121,7 @@ dependencies = [
  "pallet-nomination-pools",
  "pallet-nomination-pools-benchmarking",
  "pallet-nomination-pools-runtime-api",
- "pallet-offences 37.0.0",
+ "pallet-offences 27.0.0",
  "pallet-offences-benchmarking",
  "pallet-paged-list",
  "pallet-parameters",
@@ -10253,7 +11141,7 @@ dependencies = [
  "pallet-scheduler",
  "pallet-scored-pool",
  "pallet-session",
- "pallet-session-benchmarking 38.0.0",
+ "pallet-session-benchmarking 28.0.0",
  "pallet-skip-feeless-payment",
  "pallet-society",
  "pallet-staking",
@@ -10271,6 +11159,7 @@ dependencies = [
  "pallet-tx-pause",
  "pallet-uniques",
  "pallet-utility",
+ "pallet-verify-signature",
  "pallet-vesting",
  "pallet-whitelist",
  "pallet-xcm",
@@ -10317,10 +11206,10 @@ dependencies = [
  "sp-consensus-slots",
  "sp-core",
  "sp-core-hashing",
- "sp-crypto-ec-utils",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
- "sp-debug-derive",
- "sp-externalities",
+ "sp-crypto-ec-utils 0.10.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-debug-derive 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-genesis-builder",
  "sp-inherents",
  "sp-io",
@@ -10332,20 +11221,20 @@ dependencies = [
  "sp-npos-elections",
  "sp-offchain",
  "sp-runtime",
- "sp-runtime-interface",
+ "sp-runtime-interface 24.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-session",
  "sp-staking",
  "sp-state-machine",
  "sp-statement-store",
- "sp-std",
- "sp-storage",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-timestamp",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-transaction-pool",
  "sp-transaction-storage-proof",
  "sp-trie",
  "sp-version",
- "sp-wasm-interface",
+ "sp-wasm-interface 20.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-weights",
  "staging-parachain-info",
  "staging-xcm",
@@ -10358,8 +11247,8 @@ dependencies = [
 
 [[package]]
 name = "polkadot-sdk-frame"
-version = "0.7.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -10378,16 +11267,29 @@ dependencies = [
  "sp-consensus-aura",
  "sp-consensus-grandpa",
  "sp-core",
+ "sp-genesis-builder",
  "sp-inherents",
  "sp-io",
+ "sp-keyring",
  "sp-offchain",
  "sp-runtime",
  "sp-session",
- "sp-storage",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-transaction-pool",
  "sp-version",
 ]
 
+[[package]]
+name = "polkadot-statement-table"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "parity-scale-codec",
+ "polkadot-primitives",
+ "sp-core",
+ "tracing-gum",
+]
+
 [[package]]
 name = "polkavm"
 version = "0.9.3"
@@ -10403,15 +11305,15 @@ dependencies = [
 
 [[package]]
 name = "polkavm"
-version = "0.10.0"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7ec0c5935f2eff23cfc4653002f4f8d12b37f87a720e0631282d188c32089d6"
+checksum = "57e79a14b15ed38cb5b9a1e38d02e933f19e3d180ae5b325fed606c5e5b9177e"
 dependencies = [
  "libc",
  "log",
- "polkavm-assembler 0.10.0",
- "polkavm-common 0.10.0",
- "polkavm-linux-raw 0.10.0",
+ "polkavm-assembler 0.13.0",
+ "polkavm-common 0.13.0",
+ "polkavm-linux-raw 0.13.0",
 ]
 
 [[package]]
@@ -10425,9 +11327,9 @@ dependencies = [
 
 [[package]]
 name = "polkavm-assembler"
-version = "0.10.0"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8e4fd5a43100bf1afe9727b8130d01f966f5cfc9144d5604b21e795c2bcd80e"
+checksum = "4e8da55465000feb0a61bbf556ed03024db58f3420eca37721fc726b3b2136bf"
 dependencies = [
  "log",
 ]
@@ -10443,14 +11345,20 @@ dependencies = [
 
 [[package]]
 name = "polkavm-common"
-version = "0.10.0"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0097b48bc0bedf9f3f537ce8f37e8f1202d8d83f9b621bdb21ff2c59b9097c50"
+checksum = "084b4339aae7dfdaaa5aa7d634110afd95970e0737b6fb2a0cb10db8b56b753c"
 dependencies = [
  "log",
- "polkavm-assembler 0.10.0",
+ "polkavm-assembler 0.13.0",
 ]
 
+[[package]]
+name = "polkavm-common"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711952a783e9c5ad407cdacb1ed147f36d37c5d43417c1091d86456d2999417b"
+
 [[package]]
 name = "polkavm-derive"
 version = "0.9.1"
@@ -10462,11 +11370,11 @@ dependencies = [
 
 [[package]]
 name = "polkavm-derive"
-version = "0.10.0"
+version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0dcc701385c08c31bdb0569f0c51a290c580d892fa77f1dd88a7352a62679ecf"
+checksum = "b4832a0aebf6cefc988bb7b2d74ea8c86c983164672e2fc96300f356a1babfc1"
 dependencies = [
- "polkavm-derive-impl-macro 0.10.0",
+ "polkavm-derive-impl-macro 0.14.0",
 ]
 
 [[package]]
@@ -10483,11 +11391,11 @@ dependencies = [
 
 [[package]]
 name = "polkavm-derive-impl"
-version = "0.10.0"
+version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7855353a5a783dd5d09e3b915474bddf66575f5a3cf45dec8d1c5e051ba320dc"
+checksum = "e339fc7c11310fe5adf711d9342278ac44a75c9784947937cce12bd4f30842f2"
 dependencies = [
- "polkavm-common 0.10.0",
+ "polkavm-common 0.14.0",
  "proc-macro2",
  "quote",
  "syn 2.0.87",
@@ -10505,11 +11413,11 @@ dependencies = [
 
 [[package]]
 name = "polkavm-derive-impl-macro"
-version = "0.10.0"
+version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9324fe036de37c17829af233b46ef6b5562d4a0c09bb7fdb9f8378856dee30cf"
+checksum = "b569754b15060d03000c09e3bf11509d527f60b75d79b4c30c3625b5071d9702"
 dependencies = [
- "polkavm-derive-impl 0.10.0",
+ "polkavm-derive-impl 0.14.0",
  "syn 2.0.87",
 ]
 
@@ -10530,15 +11438,15 @@ dependencies = [
 
 [[package]]
 name = "polkavm-linker"
-version = "0.10.0"
+version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d704edfe7bdcc876784f19436d53d515b65eb07bc9a0fae77085d552c2dbbb5"
+checksum = "0959ac3b0f4fd5caf5c245c637705f19493efe83dba31a83bbba928b93b0116a"
 dependencies = [
- "gimli 0.28.1",
+ "gimli 0.31.1",
  "hashbrown 0.14.5",
  "log",
  "object 0.36.5",
- "polkavm-common 0.10.0",
+ "polkavm-common 0.14.0",
  "regalloc2 0.9.3",
  "rustc-demangle",
 ]
@@ -10551,9 +11459,9 @@ checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120"
 
 [[package]]
 name = "polkavm-linux-raw"
-version = "0.10.0"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126"
+checksum = "686c4dd9c9c16cc22565b51bdbb269792318d0fd2e6b966b5f6c788534cad0e9"
 
 [[package]]
 name = "polling"
@@ -10663,16 +11571,6 @@ dependencies = [
  "termtree",
 ]
 
-[[package]]
-name = "prettyplease"
-version = "0.1.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86"
-dependencies = [
- "proc-macro2",
- "syn 1.0.109",
-]
-
 [[package]]
 name = "prettyplease"
 version = "0.2.25"
@@ -10691,7 +11589,6 @@ checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2"
 dependencies = [
  "fixed-hash",
  "impl-codec 0.6.0",
- "impl-rlp",
  "impl-serde 0.4.0",
  "scale-info",
  "uint 0.9.5",
@@ -10705,11 +11602,29 @@ checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5"
 dependencies = [
  "fixed-hash",
  "impl-codec 0.7.0",
+ "impl-num-traits",
+ "impl-rlp",
  "impl-serde 0.5.0",
  "scale-info",
  "uint 0.10.0",
 ]
 
+[[package]]
+name = "prioritized-metered-channel"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a172e6cc603231f2cf004232eabcecccc0da53ba576ab286ef7baa0cfc7927ad"
+dependencies = [
+ "coarsetime",
+ "crossbeam-queue",
+ "derive_more 0.99.18",
+ "futures 0.3.31",
+ "futures-timer",
+ "nanorand",
+ "thiserror 1.0.69",
+ "tracing",
+]
+
 [[package]]
 name = "proc-macro-crate"
 version = "1.1.3"
@@ -10865,109 +11780,77 @@ dependencies = [
 
 [[package]]
 name = "prost"
-version = "0.11.9"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd"
+checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
 dependencies = [
  "bytes",
- "prost-derive 0.11.9",
+ "prost-derive 0.12.6",
 ]
 
 [[package]]
 name = "prost"
-version = "0.12.6"
+version = "0.13.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
+checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5"
 dependencies = [
  "bytes",
- "prost-derive 0.12.6",
+ "prost-derive 0.13.5",
 ]
 
 [[package]]
 name = "prost-build"
-version = "0.11.9"
+version = "0.13.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270"
+checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf"
 dependencies = [
- "bytes",
  "heck 0.4.1",
  "itertools 0.10.5",
- "lazy_static",
  "log",
- "multimap 0.8.3",
+ "multimap",
+ "once_cell",
  "petgraph",
- "prettyplease 0.1.25",
- "prost 0.11.9",
- "prost-types 0.11.9",
+ "prettyplease",
+ "prost 0.13.5",
+ "prost-types",
  "regex",
- "syn 1.0.109",
+ "syn 2.0.87",
  "tempfile",
- "which",
 ]
 
 [[package]]
-name = "prost-build"
+name = "prost-derive"
 version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4"
+checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
 dependencies = [
- "bytes",
- "heck 0.5.0",
+ "anyhow",
  "itertools 0.12.1",
- "log",
- "multimap 0.10.0",
- "once_cell",
- "petgraph",
- "prettyplease 0.2.25",
- "prost 0.12.6",
- "prost-types 0.12.6",
- "regex",
+ "proc-macro2",
+ "quote",
  "syn 2.0.87",
- "tempfile",
 ]
 
 [[package]]
 name = "prost-derive"
-version = "0.11.9"
+version = "0.13.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4"
+checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d"
 dependencies = [
  "anyhow",
  "itertools 0.10.5",
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.87",
 ]
 
 [[package]]
-name = "prost-derive"
-version = "0.12.6"
+name = "prost-types"
+version = "0.13.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
+checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16"
 dependencies = [
- "anyhow",
- "itertools 0.12.1",
- "proc-macro2",
- "quote",
- "syn 2.0.87",
-]
-
-[[package]]
-name = "prost-types"
-version = "0.11.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13"
-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",
+ "prost 0.13.5",
 ]
 
 [[package]]
@@ -11022,24 +11905,6 @@ dependencies = [
  "unsigned-varint 0.7.2",
 ]
 
-[[package]]
-name = "quinn"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e8b432585672228923edbbf64b8b12c14e1112f62e88737655b4a083dbcd78e"
-dependencies = [
- "bytes",
- "pin-project-lite",
- "quinn-proto 0.9.6",
- "quinn-udp 0.3.2",
- "rustc-hash 1.1.0",
- "rustls 0.20.9",
- "thiserror 1.0.69",
- "tokio",
- "tracing",
- "webpki",
-]
-
 [[package]]
 name = "quinn"
 version = "0.10.2"
@@ -11076,24 +11941,6 @@ dependencies = [
  "tracing",
 ]
 
-[[package]]
-name = "quinn-proto"
-version = "0.9.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94b0b33c13a79f669c85defaf4c275dc86a0c0372807d0ca3d78e0bb87274863"
-dependencies = [
- "bytes",
- "rand",
- "ring 0.16.20",
- "rustc-hash 1.1.0",
- "rustls 0.20.9",
- "slab",
- "thiserror 1.0.69",
- "tinyvec",
- "tracing",
- "webpki",
-]
-
 [[package]]
 name = "quinn-proto"
 version = "0.10.6"
@@ -11131,19 +11978,6 @@ dependencies = [
  "web-time",
 ]
 
-[[package]]
-name = "quinn-udp"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "641538578b21f5e5c8ea733b736895576d0fe329bb883b937db6f4d163dbaaf4"
-dependencies = [
- "libc",
- "quinn-proto 0.9.6",
- "socket2 0.4.10",
- "tracing",
- "windows-sys 0.42.0",
-]
-
 [[package]]
 name = "quinn-udp"
 version = "0.4.1"
@@ -11291,6 +12125,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.31",
+ "jsonrpsee 0.23.2",
+ "serde_json",
+ "thiserror 1.0.69",
+ "tokio",
+ "tracing",
+]
+
 [[package]]
 name = "redox_syscall"
 version = "0.2.16"
@@ -11477,6 +12327,23 @@ dependencies = [
  "subtle 2.6.1",
 ]
 
+[[package]]
+name = "ring"
+version = "0.1.0"
+source = "git+https://github.com/w3f/ring-proof?rev=665f5f5#665f5f51af5734c7b6d90b985dd6861d4c5b4752"
+dependencies = [
+ "ark-ec 0.4.2",
+ "ark-ff 0.4.2",
+ "ark-poly 0.4.2",
+ "ark-serialize 0.4.2",
+ "ark-std 0.4.0",
+ "arrayvec 0.7.6",
+ "blake2 0.10.6",
+ "common",
+ "fflonk",
+ "merlin",
+]
+
 [[package]]
 name = "ring"
 version = "0.16.20"
@@ -11507,6 +12374,15 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
+[[package]]
+name = "ripemd"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f"
+dependencies = [
+ "digest 0.10.7",
+]
+
 [[package]]
 name = "rlp"
 version = "0.5.2"
@@ -11517,10 +12393,20 @@ dependencies = [
  "rustc-hex",
 ]
 
+[[package]]
+name = "rlp"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa24e92bb2a83198bb76d661a71df9f7076b8c420b8696e4d3d97d50d94479e3"
+dependencies = [
+ "bytes",
+ "rustc-hex",
+]
+
 [[package]]
 name = "rococo-runtime-constants"
-version = "17.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "polkadot-primitives",
@@ -11592,7 +12478,7 @@ dependencies = [
  "primitive-types 0.12.2",
  "proptest",
  "rand",
- "rlp",
+ "rlp 0.5.2",
  "ruint-macro",
  "serde",
  "valuable",
@@ -11715,6 +12601,20 @@ dependencies = [
  "sct",
 ]
 
+[[package]]
+name = "rustls"
+version = "0.22.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432"
+dependencies = [
+ "log",
+ "ring 0.17.8",
+ "rustls-pki-types",
+ "rustls-webpki 0.102.8",
+ "subtle 2.6.1",
+ "zeroize",
+]
+
 [[package]]
 name = "rustls"
 version = "0.23.16"
@@ -11739,7 +12639,7 @@ dependencies = [
  "openssl-probe",
  "rustls-pemfile 1.0.4",
  "schannel",
- "security-framework",
+ "security-framework 2.11.1",
 ]
 
 [[package]]
@@ -11752,7 +12652,19 @@ dependencies = [
  "rustls-pemfile 2.2.0",
  "rustls-pki-types",
  "schannel",
- "security-framework",
+ "security-framework 2.11.1",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3"
+dependencies = [
+ "openssl-probe",
+ "rustls-pki-types",
+ "schannel",
+ "security-framework 3.0.1",
 ]
 
 [[package]]
@@ -11788,7 +12700,7 @@ version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490"
 dependencies = [
- "core-foundation",
+ "core-foundation 0.9.4",
  "core-foundation-sys",
  "jni",
  "log",
@@ -11797,7 +12709,7 @@ dependencies = [
  "rustls-native-certs 0.7.3",
  "rustls-platform-verifier-android",
  "rustls-webpki 0.102.8",
- "security-framework",
+ "security-framework 2.11.1",
  "security-framework-sys",
  "webpki-roots 0.26.6",
  "winapi",
@@ -11848,6 +12760,17 @@ dependencies = [
  "wait-timeout",
 ]
 
+[[package]]
+name = "ruzstd"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d"
+dependencies = [
+ "byteorder",
+ "derive_more 0.99.18",
+ "twox-hash",
+]
+
 [[package]]
 name = "ruzstd"
 version = "0.6.0"
@@ -11904,19 +12827,49 @@ dependencies = [
 
 [[package]]
 name = "sc-allocator"
-version = "29.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "23.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "log",
+ "sp-core",
+ "sp-wasm-interface 20.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "sc-authority-discovery"
+version = "0.34.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
+ "async-trait",
+ "futures 0.3.31",
+ "futures-timer",
+ "ip_network",
+ "libp2p",
+ "linked_hash_set",
  "log",
+ "multihash 0.19.2",
+ "parity-scale-codec",
+ "prost 0.12.6",
+ "prost-build",
+ "rand",
+ "sc-client-api",
+ "sc-network",
+ "sc-network-types",
+ "sp-api",
+ "sp-authority-discovery",
+ "sp-blockchain",
  "sp-core",
- "sp-wasm-interface",
+ "sp-keystore",
+ "sp-runtime",
+ "substrate-prometheus-endpoint",
  "thiserror 1.0.69",
 ]
 
 [[package]]
 name = "sc-basic-authorship"
-version = "0.45.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.34.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "futures 0.3.31",
  "futures-timer",
@@ -11937,8 +12890,8 @@ dependencies = [
 
 [[package]]
 name = "sc-block-builder"
-version = "0.42.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.33.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -11952,8 +12905,8 @@ dependencies = [
 
 [[package]]
 name = "sc-chain-spec"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
  "docify",
@@ -11969,18 +12922,18 @@ dependencies = [
  "serde_json",
  "sp-blockchain",
  "sp-core",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-genesis-builder",
  "sp-io",
  "sp-runtime",
  "sp-state-machine",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "sc-chain-spec-derive"
-version = "12.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "11.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "proc-macro-crate 3.2.0",
  "proc-macro2",
@@ -11990,8 +12943,8 @@ dependencies = [
 
 [[package]]
 name = "sc-cli"
-version = "0.47.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.36.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
  "chrono",
@@ -12015,6 +12968,7 @@ dependencies = [
  "sc-service",
  "sc-telemetry",
  "sc-tracing",
+ "sc-transaction-pool",
  "sc-utils",
  "serde",
  "serde_json",
@@ -12031,8 +12985,8 @@ dependencies = [
 
 [[package]]
 name = "sc-client-api"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "fnv",
  "futures 0.3.31",
@@ -12047,19 +13001,19 @@ dependencies = [
  "sp-consensus",
  "sp-core",
  "sp-database",
- "sp-externalities",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-runtime",
  "sp-state-machine",
  "sp-statement-store",
- "sp-storage",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-trie",
  "substrate-prometheus-endpoint",
 ]
 
 [[package]]
 name = "sc-client-db"
-version = "0.44.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.35.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "hash-db",
  "kvdb",
@@ -12083,8 +13037,8 @@ dependencies = [
 
 [[package]]
 name = "sc-consensus"
-version = "0.44.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.33.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "futures 0.3.31",
@@ -12107,8 +13061,8 @@ dependencies = [
 
 [[package]]
 name = "sc-consensus-aura"
-version = "0.45.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.34.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "futures 0.3.31",
@@ -12136,8 +13090,8 @@ dependencies = [
 
 [[package]]
 name = "sc-consensus-babe"
-version = "0.45.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.34.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "fork-tree",
@@ -12162,7 +13116,7 @@ dependencies = [
  "sp-consensus-babe",
  "sp-consensus-slots",
  "sp-core",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-inherents",
  "sp-keystore",
  "sp-runtime",
@@ -12172,11 +13126,11 @@ dependencies = [
 
 [[package]]
 name = "sc-consensus-babe-rpc"
-version = "0.45.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.34.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "futures 0.3.31",
- "jsonrpsee",
+ "jsonrpsee 0.24.7",
  "sc-consensus-babe",
  "sc-consensus-epochs",
  "sc-rpc-api",
@@ -12194,8 +13148,8 @@ dependencies = [
 
 [[package]]
 name = "sc-consensus-epochs"
-version = "0.44.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.33.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "fork-tree",
  "parity-scale-codec",
@@ -12207,10 +13161,10 @@ dependencies = [
 
 [[package]]
 name = "sc-consensus-grandpa"
-version = "0.30.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.19.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "ahash 0.8.11",
+ "ahash",
  "array-bytes",
  "async-trait",
  "dyn-clone",
@@ -12242,7 +13196,7 @@ dependencies = [
  "sp-consensus",
  "sp-consensus-grandpa",
  "sp-core",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-keystore",
  "sp-runtime",
  "substrate-prometheus-endpoint",
@@ -12251,12 +13205,12 @@ dependencies = [
 
 [[package]]
 name = "sc-consensus-grandpa-rpc"
-version = "0.30.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.19.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "finality-grandpa",
  "futures 0.3.31",
- "jsonrpsee",
+ "jsonrpsee 0.24.7",
  "log",
  "parity-scale-codec",
  "sc-client-api",
@@ -12271,14 +13225,14 @@ dependencies = [
 
 [[package]]
 name = "sc-consensus-manual-seal"
-version = "0.46.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.35.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "assert_matches",
  "async-trait",
  "futures 0.3.31",
  "futures-timer",
- "jsonrpsee",
+ "jsonrpsee 0.24.7",
  "log",
  "parity-scale-codec",
  "sc-client-api",
@@ -12306,8 +13260,8 @@ dependencies = [
 
 [[package]]
 name = "sc-consensus-slots"
-version = "0.44.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.33.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "futures 0.3.31",
@@ -12329,8 +13283,8 @@ dependencies = [
 
 [[package]]
 name = "sc-executor"
-version = "0.40.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.32.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "parking_lot 0.12.3",
@@ -12340,44 +13294,44 @@ dependencies = [
  "schnellru",
  "sp-api",
  "sp-core",
- "sp-externalities",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-io",
  "sp-panic-handler",
- "sp-runtime-interface",
+ "sp-runtime-interface 24.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-trie",
  "sp-version",
- "sp-wasm-interface",
+ "sp-wasm-interface 20.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "tracing",
 ]
 
 [[package]]
 name = "sc-executor-common"
-version = "0.35.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.29.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "polkavm 0.9.3",
  "sc-allocator",
  "sp-maybe-compressed-blob",
- "sp-wasm-interface",
+ "sp-wasm-interface 20.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "thiserror 1.0.69",
  "wasm-instrument",
 ]
 
 [[package]]
 name = "sc-executor-polkavm"
-version = "0.32.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.29.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "log",
  "polkavm 0.9.3",
  "sc-executor-common",
- "sp-wasm-interface",
+ "sp-wasm-interface 20.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "sc-executor-wasmtime"
-version = "0.35.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.29.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "anyhow",
  "cfg-if",
@@ -12387,15 +13341,15 @@ dependencies = [
  "rustix 0.36.17",
  "sc-allocator",
  "sc-executor-common",
- "sp-runtime-interface",
- "sp-wasm-interface",
+ "sp-runtime-interface 24.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-wasm-interface 20.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "wasmtime",
 ]
 
 [[package]]
 name = "sc-informant"
-version = "0.44.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.33.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "console",
  "futures 0.3.31",
@@ -12411,8 +13365,8 @@ dependencies = [
 
 [[package]]
 name = "sc-keystore"
-version = "33.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "25.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
  "parking_lot 0.12.3",
@@ -12425,8 +13379,8 @@ dependencies = [
 
 [[package]]
 name = "sc-mixnet"
-version = "0.15.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.4.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
  "arrayvec 0.7.6",
@@ -12454,8 +13408,8 @@ dependencies = [
 
 [[package]]
 name = "sc-network"
-version = "0.45.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.34.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
  "async-channel 1.9.0",
@@ -12479,7 +13433,7 @@ dependencies = [
  "partial_sort",
  "pin-project",
  "prost 0.12.6",
- "prost-build 0.12.6",
+ "prost-build",
  "rand",
  "sc-client-api",
  "sc-network-common",
@@ -12505,15 +13459,15 @@ dependencies = [
 
 [[package]]
 name = "sc-network-common"
-version = "0.44.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.33.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "bitflags 1.3.2",
  "futures 0.3.31",
  "libp2p-identity",
  "parity-scale-codec",
- "prost-build 0.12.6",
+ "prost-build",
  "sc-consensus",
  "sc-network-types",
  "sp-consensus",
@@ -12523,10 +13477,10 @@ dependencies = [
 
 [[package]]
 name = "sc-network-gossip"
-version = "0.45.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.34.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "ahash 0.8.11",
+ "ahash",
  "futures 0.3.31",
  "futures-timer",
  "log",
@@ -12542,8 +13496,8 @@ dependencies = [
 
 [[package]]
 name = "sc-network-light"
-version = "0.44.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.33.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
  "async-channel 1.9.0",
@@ -12551,7 +13505,7 @@ dependencies = [
  "log",
  "parity-scale-codec",
  "prost 0.12.6",
- "prost-build 0.12.6",
+ "prost-build",
  "sc-client-api",
  "sc-network",
  "sc-network-types",
@@ -12563,8 +13517,8 @@ dependencies = [
 
 [[package]]
 name = "sc-network-sync"
-version = "0.44.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.33.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
  "async-channel 1.9.0",
@@ -12572,12 +13526,11 @@ dependencies = [
  "fork-tree",
  "futures 0.3.31",
  "futures-timer",
- "libp2p",
  "log",
  "mockall 0.11.4",
  "parity-scale-codec",
  "prost 0.12.6",
- "prost-build 0.12.6",
+ "prost-build",
  "sc-client-api",
  "sc-consensus",
  "sc-network",
@@ -12598,10 +13551,42 @@ dependencies = [
  "tokio-stream",
 ]
 
+[[package]]
+name = "sc-network-test"
+version = "0.8.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "async-trait",
+ "futures 0.3.31",
+ "futures-timer",
+ "libp2p",
+ "log",
+ "parking_lot 0.12.3",
+ "rand",
+ "sc-block-builder",
+ "sc-client-api",
+ "sc-consensus",
+ "sc-network",
+ "sc-network-common",
+ "sc-network-light",
+ "sc-network-sync",
+ "sc-network-types",
+ "sc-service",
+ "sc-utils",
+ "sp-blockchain",
+ "sp-consensus",
+ "sp-core",
+ "sp-runtime",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "substrate-test-runtime",
+ "substrate-test-runtime-client",
+ "tokio",
+]
+
 [[package]]
 name = "sc-network-transactions"
-version = "0.44.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.33.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
  "futures 0.3.31",
@@ -12619,10 +13604,10 @@ dependencies = [
 
 [[package]]
 name = "sc-network-types"
-version = "0.12.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.10.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "bs58 0.5.1",
+ "bs58",
  "ed25519-dalek",
  "libp2p-identity",
  "litep2p",
@@ -12636,22 +13621,25 @@ dependencies = [
 
 [[package]]
 name = "sc-offchain"
-version = "40.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "29.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
  "bytes",
  "fnv",
  "futures 0.3.31",
  "futures-timer",
- "hyper 0.14.31",
- "hyper-rustls 0.24.2",
+ "http-body-util",
+ "hyper 1.5.0",
+ "hyper-rustls 0.27.3",
+ "hyper-util",
  "log",
  "num_cpus",
  "once_cell",
  "parity-scale-codec",
  "parking_lot 0.12.3",
  "rand",
+ "rustls 0.23.16",
  "sc-client-api",
  "sc-network",
  "sc-network-common",
@@ -12660,7 +13648,7 @@ dependencies = [
  "sc-utils",
  "sp-api",
  "sp-core",
- "sp-externalities",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-keystore",
  "sp-offchain",
  "sp-runtime",
@@ -12670,8 +13658,8 @@ dependencies = [
 
 [[package]]
 name = "sc-proposer-metrics"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.17.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "log",
  "substrate-prometheus-endpoint",
@@ -12679,11 +13667,11 @@ dependencies = [
 
 [[package]]
 name = "sc-rpc"
-version = "40.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "29.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "futures 0.3.31",
- "jsonrpsee",
+ "jsonrpsee 0.24.7",
  "log",
  "parity-scale-codec",
  "parking_lot 0.12.3",
@@ -12711,10 +13699,10 @@ dependencies = [
 
 [[package]]
 name = "sc-rpc-api"
-version = "0.44.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.33.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "jsonrpsee",
+ "jsonrpsee 0.24.7",
  "parity-scale-codec",
  "sc-chain-spec",
  "sc-mixnet",
@@ -12731,8 +13719,8 @@ dependencies = [
 
 [[package]]
 name = "sc-rpc-server"
-version = "17.1.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "11.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "dyn-clone",
  "forwarded-header-value",
@@ -12742,7 +13730,7 @@ dependencies = [
  "http-body-util",
  "hyper 1.5.0",
  "ip_network",
- "jsonrpsee",
+ "jsonrpsee 0.24.7",
  "log",
  "sc-rpc-api",
  "serde",
@@ -12755,14 +13743,15 @@ dependencies = [
 
 [[package]]
 name = "sc-rpc-spec-v2"
-version = "0.45.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.34.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
  "futures 0.3.31",
  "futures-util",
  "hex",
- "jsonrpsee",
+ "itertools 0.11.0",
+ "jsonrpsee 0.24.7",
  "log",
  "parity-scale-codec",
  "parking_lot 0.12.3",
@@ -12771,7 +13760,6 @@ dependencies = [
  "sc-client-api",
  "sc-rpc",
  "sc-transaction-pool-api",
- "sc-utils",
  "schnellru",
  "serde",
  "sp-api",
@@ -12787,15 +13775,15 @@ dependencies = [
 
 [[package]]
 name = "sc-service"
-version = "0.46.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.35.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "directories",
  "exit-future",
  "futures 0.3.31",
  "futures-timer",
- "jsonrpsee",
+ "jsonrpsee 0.24.7",
  "log",
  "parity-scale-codec",
  "parking_lot 0.12.3",
@@ -12830,12 +13818,12 @@ dependencies = [
  "sp-blockchain",
  "sp-consensus",
  "sp-core",
- "sp-externalities",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-keystore",
  "sp-runtime",
  "sp-session",
  "sp-state-machine",
- "sp-storage",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-transaction-pool",
  "sp-transaction-storage-proof",
  "sp-trie",
@@ -12851,8 +13839,8 @@ dependencies = [
 
 [[package]]
 name = "sc-state-db"
-version = "0.36.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.30.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -12862,8 +13850,8 @@ dependencies = [
 
 [[package]]
 name = "sc-sysinfo"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "derive_more 0.99.18",
  "futures 0.3.31",
@@ -12876,15 +13864,15 @@ dependencies = [
  "serde",
  "serde_json",
  "sp-core",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-io",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "sc-telemetry"
-version = "25.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "15.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "chrono",
  "futures 0.3.31",
@@ -12903,13 +13891,12 @@ dependencies = [
 
 [[package]]
 name = "sc-tracing"
-version = "37.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "chrono",
  "console",
  "is-terminal",
- "lazy_static",
  "libc",
  "log",
  "parity-scale-codec",
@@ -12923,7 +13910,7 @@ dependencies = [
  "sp-core",
  "sp-rpc",
  "sp-runtime",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "thiserror 1.0.69",
  "tracing",
  "tracing-log",
@@ -12933,7 +13920,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing-proc-macro"
 version = "11.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "proc-macro-crate 3.2.0",
  "proc-macro2",
@@ -12943,12 +13930,14 @@ dependencies = [
 
 [[package]]
 name = "sc-transaction-pool"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "futures 0.3.31",
  "futures-timer",
+ "indexmap 2.6.0",
+ "itertools 0.11.0",
  "linked-hash-map",
  "log",
  "parity-scale-codec",
@@ -12960,18 +13949,20 @@ dependencies = [
  "sp-api",
  "sp-blockchain",
  "sp-core",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-runtime",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-transaction-pool",
  "substrate-prometheus-endpoint",
  "thiserror 1.0.69",
+ "tokio",
+ "tokio-stream",
 ]
 
 [[package]]
 name = "sc-transaction-pool-api"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "futures 0.3.31",
@@ -12986,13 +13977,12 @@ dependencies = [
 
 [[package]]
 name = "sc-utils"
-version = "17.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "14.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-channel 1.9.0",
  "futures 0.3.31",
  "futures-timer",
- "lazy_static",
  "log",
  "parking_lot 0.12.3",
  "prometheus",
@@ -13036,6 +14026,21 @@ dependencies = [
  "smallvec",
 ]
 
+[[package]]
+name = "scale-decode"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e98f3262c250d90e700bb802eb704e1f841e03331c2eb815e46516c4edbf5b27"
+dependencies = [
+ "derive_more 0.99.18",
+ "parity-scale-codec",
+ "primitive-types 0.12.2",
+ "scale-bits 0.6.0",
+ "scale-decode-derive 0.13.1",
+ "scale-type-resolver 0.2.0",
+ "smallvec",
+]
+
 [[package]]
 name = "scale-decode"
 version = "0.14.0"
@@ -13046,18 +14051,30 @@ dependencies = [
  "parity-scale-codec",
  "primitive-types 0.13.1",
  "scale-bits 0.6.0",
- "scale-decode-derive",
+ "scale-decode-derive 0.14.0",
  "scale-type-resolver 0.2.0",
  "smallvec",
 ]
 
+[[package]]
+name = "scale-decode-derive"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9bb22f574168103cdd3133b19281639ca65ad985e24612728f727339dcaf4021"
+dependencies = [
+ "darling 0.14.4",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
 [[package]]
 name = "scale-decode-derive"
 version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5ed9401effa946b493f9f84dc03714cca98119b230497df6f3df6b84a2b03648"
 dependencies = [
- "darling",
+ "darling 0.20.10",
  "proc-macro2",
  "quote",
  "syn 2.0.87",
@@ -13076,6 +14093,21 @@ dependencies = [
  "smallvec",
 ]
 
+[[package]]
+name = "scale-encode"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "528464e6ae6c8f98e2b79633bf79ef939552e795e316579dab09c61670d56602"
+dependencies = [
+ "derive_more 0.99.18",
+ "parity-scale-codec",
+ "primitive-types 0.12.2",
+ "scale-bits 0.6.0",
+ "scale-encode-derive 0.7.2",
+ "scale-type-resolver 0.2.0",
+ "smallvec",
+]
+
 [[package]]
 name = "scale-encode"
 version = "0.8.0"
@@ -13086,18 +14118,31 @@ dependencies = [
  "parity-scale-codec",
  "primitive-types 0.13.1",
  "scale-bits 0.6.0",
- "scale-encode-derive",
+ "scale-encode-derive 0.8.0",
  "scale-type-resolver 0.2.0",
  "smallvec",
 ]
 
+[[package]]
+name = "scale-encode-derive"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef2618f123c88da9cd8853b69d766068f1eddc7692146d7dfe9b89e25ce2efd"
+dependencies = [
+ "darling 0.20.10",
+ "proc-macro-crate 3.2.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
 [[package]]
 name = "scale-encode-derive"
 version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "102fbc6236de6c53906c0b262f12c7aa69c2bdc604862c12728f5f4d370bc137"
 dependencies = [
- "darling",
+ "darling 0.20.10",
  "proc-macro-crate 3.2.0",
  "proc-macro2",
  "quote",
@@ -13150,6 +14195,19 @@ dependencies = [
  "smallvec",
 ]
 
+[[package]]
+name = "scale-typegen"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "498d1aecf2ea61325d4511787c115791639c0fd21ef4f8e11e49dd09eff2bbac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "scale-info",
+ "syn 2.0.87",
+ "thiserror 1.0.69",
+]
+
 [[package]]
 name = "scale-typegen"
 version = "0.9.0"
@@ -13180,6 +14238,27 @@ dependencies = [
  "scale-type-resolver 0.1.1",
 ]
 
+[[package]]
+name = "scale-value"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cd6ab090d823e75cfdb258aad5fe92e13f2af7d04b43a55d607d25fcc38c811"
+dependencies = [
+ "base58",
+ "blake2 0.10.6",
+ "derive_more 0.99.18",
+ "either",
+ "frame-metadata 15.1.0",
+ "parity-scale-codec",
+ "scale-bits 0.6.0",
+ "scale-decode 0.13.1",
+ "scale-encode 0.7.2",
+ "scale-info",
+ "scale-type-resolver 0.2.0",
+ "serde",
+ "yap",
+]
+
 [[package]]
 name = "scale-value"
 version = "0.17.0"
@@ -13215,7 +14294,7 @@ version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367"
 dependencies = [
- "ahash 0.8.11",
+ "ahash",
  "cfg-if",
  "hashbrown 0.13.2",
 ]
@@ -13261,21 +14340,6 @@ dependencies = [
  "untrusted 0.9.0",
 ]
 
-[[package]]
-name = "sctp-proto"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6220f78bb44c15f326b0596113305f6101097a18755d53727a575c97e09fb24"
-dependencies = [
- "bytes",
- "crc",
- "fxhash",
- "log",
- "rand",
- "slab",
- "thiserror 1.0.69",
-]
-
 [[package]]
 name = "sealed"
 version = "0.5.0"
@@ -13303,13 +14367,31 @@ dependencies = [
  "zeroize",
 ]
 
+[[package]]
+name = "secp256k1"
+version = "0.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f"
+dependencies = [
+ "secp256k1-sys 0.8.1",
+]
+
 [[package]]
 name = "secp256k1"
 version = "0.28.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10"
 dependencies = [
- "secp256k1-sys",
+ "secp256k1-sys 0.9.2",
+]
+
+[[package]]
+name = "secp256k1-sys"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e"
+dependencies = [
+ "cc",
 ]
 
 [[package]]
@@ -13337,13 +14419,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
 dependencies = [
  "bitflags 2.6.0",
- "core-foundation",
+ "core-foundation 0.9.4",
  "core-foundation-sys",
  "libc",
  "num-bigint",
  "security-framework-sys",
 ]
 
+[[package]]
+name = "security-framework"
+version = "3.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1415a607e92bec364ea2cf9264646dcce0f91e6d65281bd6f2819cca3bf39c8"
+dependencies = [
+ "bitflags 2.6.0",
+ "core-foundation 0.10.0",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
 [[package]]
 name = "security-framework-sys"
 version = "2.12.1"
@@ -13405,6 +14500,12 @@ dependencies = [
  "pest",
 ]
 
+[[package]]
+name = "send_wrapper"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0"
+
 [[package]]
 name = "send_wrapper"
 version = "0.6.0"
@@ -13507,14 +14608,15 @@ dependencies = [
 
 [[package]]
 name = "sha-1"
-version = "0.10.1"
+version = "0.9.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c"
+checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6"
 dependencies = [
+ "block-buffer 0.9.0",
  "cfg-if",
  "cpufeatures",
- "digest 0.10.7",
- "sha1-asm",
+ "digest 0.9.0",
+ "opaque-debug 0.3.1",
 ]
 
 [[package]]
@@ -13528,15 +14630,6 @@ dependencies = [
  "digest 0.10.7",
 ]
 
-[[package]]
-name = "sha1-asm"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "286acebaf8b67c1130aedffad26f594eff0c1292389158135327d2e23aed582b"
-dependencies = [
- "cc",
-]
-
 [[package]]
 name = "sha2"
 version = "0.9.9"
@@ -13620,9 +14713,9 @@ dependencies = [
 
 [[package]]
 name = "simple-dns"
-version = "0.5.7"
+version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cae9a3fcdadafb6d97f4c0e007e4247b114ee0f119f650c3cbf3a8b3a1479694"
+checksum = "4c80e565e7dcc4f1ef247e2f395550d4cf7d777746d5988e7e4e3156b71077fc"
 dependencies = [
  "bitflags 2.6.0",
 ]
@@ -13672,8 +14765,8 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7"
 
 [[package]]
 name = "slot-range-helper"
-version = "15.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "enumn",
  "parity-scale-codec",
@@ -13721,6 +14814,61 @@ dependencies = [
  "futures-lite",
 ]
 
+[[package]]
+name = "smoldot"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6d1eaa97d77be4d026a1e7ffad1bb3b78448763b357ea6f8188d3e6f736a9b9"
+dependencies = [
+ "arrayvec 0.7.6",
+ "async-lock",
+ "atomic-take",
+ "base64 0.21.7",
+ "bip39",
+ "blake2-rfc",
+ "bs58",
+ "chacha20",
+ "crossbeam-queue",
+ "derive_more 0.99.18",
+ "ed25519-zebra",
+ "either",
+ "event-listener 4.0.3",
+ "fnv",
+ "futures-lite",
+ "futures-util",
+ "hashbrown 0.14.5",
+ "hex",
+ "hmac 0.12.1",
+ "itertools 0.12.1",
+ "libm",
+ "libsecp256k1",
+ "merlin",
+ "no-std-net",
+ "nom",
+ "num-bigint",
+ "num-rational",
+ "num-traits 0.2.19",
+ "pbkdf2",
+ "pin-project",
+ "poly1305",
+ "rand",
+ "rand_chacha",
+ "ruzstd 0.5.0",
+ "schnorrkel",
+ "serde",
+ "serde_json",
+ "sha2 0.10.8",
+ "sha3",
+ "siphasher 1.0.1",
+ "slab",
+ "smallvec",
+ "soketto 0.7.1",
+ "twox-hash",
+ "wasmi 0.31.2",
+ "x25519-dalek",
+ "zeroize",
+]
+
 [[package]]
 name = "smoldot"
 version = "0.18.0"
@@ -13733,7 +14881,7 @@ dependencies = [
  "base64 0.22.1",
  "bip39",
  "blake2-rfc",
- "bs58 0.5.1",
+ "bs58",
  "chacha20",
  "crossbeam-queue",
  "derive_more 0.99.18",
@@ -13759,7 +14907,7 @@ dependencies = [
  "poly1305",
  "rand",
  "rand_chacha",
- "ruzstd",
+ "ruzstd 0.6.0",
  "schnorrkel",
  "serde",
  "serde_json",
@@ -13768,13 +14916,49 @@ dependencies = [
  "siphasher 1.0.1",
  "slab",
  "smallvec",
- "soketto",
+ "soketto 0.8.0",
  "twox-hash",
- "wasmi",
+ "wasmi 0.32.3",
  "x25519-dalek",
  "zeroize",
 ]
 
+[[package]]
+name = "smoldot-light"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5496f2d116b7019a526b1039ec2247dd172b8670633b1a64a614c9ea12c9d8c7"
+dependencies = [
+ "async-channel 2.3.1",
+ "async-lock",
+ "base64 0.21.7",
+ "blake2-rfc",
+ "derive_more 0.99.18",
+ "either",
+ "event-listener 4.0.3",
+ "fnv",
+ "futures-channel",
+ "futures-lite",
+ "futures-util",
+ "hashbrown 0.14.5",
+ "hex",
+ "itertools 0.12.1",
+ "log",
+ "lru",
+ "no-std-net",
+ "parking_lot 0.12.3",
+ "pin-project",
+ "rand",
+ "rand_chacha",
+ "serde",
+ "serde_json",
+ "siphasher 1.0.1",
+ "slab",
+ "smol",
+ "smoldot 0.16.0",
+ "zeroize",
+]
+
 [[package]]
 name = "smoldot-light"
 version = "0.16.2"
@@ -13785,7 +14969,7 @@ dependencies = [
  "async-lock",
  "base64 0.22.1",
  "blake2-rfc",
- "bs58 0.5.1",
+ "bs58",
  "derive_more 0.99.18",
  "either",
  "event-listener 5.3.1",
@@ -13797,7 +14981,7 @@ dependencies = [
  "hex",
  "itertools 0.13.0",
  "log",
- "lru 0.12.5",
+ "lru",
  "parking_lot 0.12.3",
  "pin-project",
  "rand",
@@ -13807,7 +14991,7 @@ dependencies = [
  "siphasher 1.0.1",
  "slab",
  "smol",
- "smoldot",
+ "smoldot 0.18.0",
  "zeroize",
 ]
 
@@ -13846,14 +15030,14 @@ dependencies = [
 
 [[package]]
 name = "snowbridge-beacon-primitives"
-version = "0.10.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "byte-slice-cast",
  "frame-support",
  "hex",
  "parity-scale-codec",
- "rlp",
+ "rlp 0.6.1",
  "scale-info",
  "serde",
  "snowbridge-ethereum",
@@ -13861,15 +15045,15 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "ssz_rs",
  "ssz_rs_derive",
 ]
 
 [[package]]
 name = "snowbridge-core"
-version = "0.10.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "ethabi-decode",
  "frame-support",
@@ -13884,29 +15068,29 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-builder",
 ]
 
 [[package]]
 name = "snowbridge-ethereum"
-version = "0.9.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.3.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "ethabi-decode",
- "ethbloom",
- "ethereum-types",
+ "ethbloom 0.14.1",
+ "ethereum-types 0.15.1",
  "hex-literal",
  "parity-bytes",
  "parity-scale-codec",
- "rlp",
+ "rlp 0.6.1",
  "scale-info",
  "serde",
  "serde-big-array",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
@@ -13926,8 +15110,8 @@ dependencies = [
 
 [[package]]
 name = "snowbridge-outbound-queue-merkle-tree"
-version = "0.9.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.3.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -13937,21 +15121,21 @@ dependencies = [
 
 [[package]]
 name = "snowbridge-outbound-queue-runtime-api"
-version = "0.10.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "parity-scale-codec",
  "snowbridge-core",
  "snowbridge-outbound-queue-merkle-tree",
  "sp-api",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "snowbridge-pallet-ethereum-client"
-version = "0.10.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -13968,26 +15152,26 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "static_assertions",
 ]
 
 [[package]]
 name = "snowbridge-pallet-ethereum-client-fixtures"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.9.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "hex-literal",
  "snowbridge-beacon-primitives",
  "snowbridge-core",
  "sp-core",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "snowbridge-pallet-inbound-queue"
-version = "0.10.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "alloy-primitives",
  "alloy-sol-types",
@@ -14006,27 +15190,27 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-executor",
 ]
 
 [[package]]
 name = "snowbridge-pallet-inbound-queue-fixtures"
-version = "0.18.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.10.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "hex-literal",
  "snowbridge-beacon-primitives",
  "snowbridge-core",
  "sp-core",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "snowbridge-pallet-outbound-queue"
-version = "0.10.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bridge-hub-common",
  "ethabi-decode",
@@ -14042,13 +15226,13 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "snowbridge-pallet-system"
-version = "0.10.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -14060,15 +15244,15 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-executor",
 ]
 
 [[package]]
 name = "snowbridge-router-primitives"
-version = "0.16.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.9.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "hex-literal",
@@ -14079,22 +15263,22 @@ dependencies = [
  "sp-core",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-executor",
 ]
 
 [[package]]
 name = "snowbridge-runtime-common"
-version = "0.10.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "log",
  "parity-scale-codec",
  "snowbridge-core",
  "sp-arithmetic",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-builder",
  "staging-xcm-executor",
@@ -14102,8 +15286,8 @@ dependencies = [
 
 [[package]]
 name = "snowbridge-runtime-test-common"
-version = "0.10.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-pallet-parachain-system",
  "frame-support",
@@ -14133,13 +15317,13 @@ dependencies = [
 
 [[package]]
 name = "snowbridge-system-runtime-api"
-version = "0.10.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.2.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "snowbridge-core",
  "sp-api",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
 ]
 
@@ -14163,6 +15347,21 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
+[[package]]
+name = "soketto"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2"
+dependencies = [
+ "base64 0.13.1",
+ "bytes",
+ "futures 0.3.31",
+ "httparse",
+ "log",
+ "rand",
+ "sha-1",
+]
+
 [[package]]
 name = "soketto"
 version = "0.8.0"
@@ -14181,8 +15380,8 @@ dependencies = [
 
 [[package]]
 name = "sp-api"
-version = "34.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "hash-db",
@@ -14191,10 +15390,10 @@ dependencies = [
  "scale-info",
  "sp-api-proc-macro",
  "sp-core",
- "sp-externalities",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-metadata-ir",
  "sp-runtime",
- "sp-runtime-interface",
+ "sp-runtime-interface 24.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-state-machine",
  "sp-trie",
  "sp-version",
@@ -14203,8 +15402,8 @@ dependencies = [
 
 [[package]]
 name = "sp-api-proc-macro"
-version = "20.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "15.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "Inflector",
  "blake2 0.10.6",
@@ -14217,8 +15416,8 @@ dependencies = [
 
 [[package]]
 name = "sp-application-crypto"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "30.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -14229,8 +15428,8 @@ dependencies = [
 
 [[package]]
 name = "sp-arithmetic"
-version = "26.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "23.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "docify",
  "integer-sqrt",
@@ -14241,10 +15440,28 @@ dependencies = [
  "static_assertions",
 ]
 
+[[package]]
+name = "sp-ark-bls12-381"
+version = "0.4.2"
+source = "git+https://github.com/duniter/arkworks-substrate#1dbec3114648697c992d3d022ade24c7a221c4c8"
+dependencies = [
+ "ark-bls12-381-ext",
+ "sp-crypto-ec-utils 0.10.0 (git+https://github.com/duniter/duniter-polkadot-sdk)",
+]
+
+[[package]]
+name = "sp-ark-ed-on-bls12-381-bandersnatch"
+version = "0.4.2"
+source = "git+https://github.com/duniter/arkworks-substrate#1dbec3114648697c992d3d022ade24c7a221c4c8"
+dependencies = [
+ "ark-ed-on-bls12-381-bandersnatch-ext",
+ "sp-crypto-ec-utils 0.10.0 (git+https://github.com/duniter/duniter-polkadot-sdk)",
+]
+
 [[package]]
 name = "sp-authority-discovery"
-version = "34.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -14255,8 +15472,8 @@ dependencies = [
 
 [[package]]
 name = "sp-block-builder"
-version = "34.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "sp-api",
  "sp-inherents",
@@ -14265,8 +15482,8 @@ dependencies = [
 
 [[package]]
 name = "sp-blockchain"
-version = "37.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "futures 0.3.31",
  "parity-scale-codec",
@@ -14284,8 +15501,8 @@ dependencies = [
 
 [[package]]
 name = "sp-consensus"
-version = "0.40.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.32.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "futures 0.3.31",
@@ -14299,8 +15516,8 @@ dependencies = [
 
 [[package]]
 name = "sp-consensus-aura"
-version = "0.40.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.32.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -14315,8 +15532,8 @@ dependencies = [
 
 [[package]]
 name = "sp-consensus-babe"
-version = "0.40.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.32.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -14333,17 +15550,16 @@ dependencies = [
 
 [[package]]
 name = "sp-consensus-beefy"
-version = "22.1.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "13.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "lazy_static",
  "parity-scale-codec",
  "scale-info",
  "serde",
  "sp-api",
  "sp-application-crypto",
  "sp-core",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-io",
  "sp-keystore",
  "sp-mmr-primitives",
@@ -14354,8 +15570,8 @@ dependencies = [
 
 [[package]]
 name = "sp-consensus-grandpa"
-version = "21.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "13.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "finality-grandpa",
  "log",
@@ -14371,8 +15587,8 @@ dependencies = [
 
 [[package]]
 name = "sp-consensus-pow"
-version = "0.40.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.32.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -14382,8 +15598,8 @@ dependencies = [
 
 [[package]]
 name = "sp-consensus-slots"
-version = "0.40.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.32.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -14393,20 +15609,21 @@ dependencies = [
 
 [[package]]
 name = "sp-core"
-version = "34.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
+ "bandersnatch_vrfs",
  "bitflags 1.3.2",
  "blake2 0.10.6",
  "bounded-collections",
- "bs58 0.5.1",
+ "bs58",
  "dyn-clonable",
  "ed25519-zebra",
  "futures 0.3.31",
  "hash-db",
  "hash256-std-hasher",
- "impl-serde 0.4.0",
+ "impl-serde 0.5.0",
  "itertools 0.11.0",
  "k256",
  "libsecp256k1",
@@ -14416,19 +15633,19 @@ dependencies = [
  "parity-scale-codec",
  "parking_lot 0.12.3",
  "paste",
- "primitive-types 0.12.2",
+ "primitive-types 0.13.1",
  "rand",
  "scale-info",
  "schnorrkel",
- "secp256k1",
+ "secp256k1 0.28.2",
  "secrecy",
  "serde",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
- "sp-debug-derive",
- "sp-externalities",
- "sp-runtime-interface",
- "sp-std",
- "sp-storage",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-debug-derive 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-runtime-interface 24.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "ss58-registry",
  "substrate-bip39",
  "thiserror 1.0.69",
@@ -14439,16 +15656,36 @@ dependencies = [
 
 [[package]]
 name = "sp-core-hashing"
-version = "16.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "15.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "sp-crypto-ec-utils"
-version = "0.14.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.10.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "ark-bls12-377",
+ "ark-bls12-377-ext",
+ "ark-bls12-381",
+ "ark-bls12-381-ext",
+ "ark-bw6-761",
+ "ark-bw6-761-ext",
+ "ark-ec 0.4.2",
+ "ark-ed-on-bls12-377",
+ "ark-ed-on-bls12-377-ext",
+ "ark-ed-on-bls12-381-bandersnatch",
+ "ark-ed-on-bls12-381-bandersnatch-ext",
+ "ark-scale",
+ "sp-runtime-interface 24.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+]
+
+[[package]]
+name = "sp-crypto-ec-utils"
+version = "0.10.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "ark-bls12-377",
  "ark-bls12-377-ext",
@@ -14456,13 +15693,13 @@ dependencies = [
  "ark-bls12-381-ext",
  "ark-bw6-761",
  "ark-bw6-761-ext",
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ed-on-bls12-377",
  "ark-ed-on-bls12-377-ext",
  "ark-ed-on-bls12-381-bandersnatch",
  "ark-ed-on-bls12-381-bandersnatch-ext",
  "ark-scale",
- "sp-runtime-interface",
+ "sp-runtime-interface 24.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk)",
 ]
 
 [[package]]
@@ -14482,7 +15719,7 @@ dependencies = [
 [[package]]
 name = "sp-crypto-hashing"
 version = "0.1.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "blake2b_simd",
  "byteorder",
@@ -14495,17 +15732,17 @@ 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.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "quote",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "syn 2.0.87",
 ]
 
 [[package]]
 name = "sp-database"
 version = "10.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "kvdb",
  "parking_lot 0.12.3",
@@ -14514,7 +15751,17 @@ dependencies = [
 [[package]]
 name = "sp-debug-derive"
 version = "14.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
+[[package]]
+name = "sp-debug-derive"
+version = "14.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -14537,18 +15784,28 @@ dependencies = [
 
 [[package]]
 name = "sp-externalities"
-version = "0.29.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.25.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "environmental",
+ "parity-scale-codec",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+]
+
+[[package]]
+name = "sp-externalities"
+version = "0.25.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "environmental",
  "parity-scale-codec",
- "sp-storage",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk)",
 ]
 
 [[package]]
 name = "sp-genesis-builder"
-version = "0.15.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.8.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -14559,8 +15816,8 @@ dependencies = [
 
 [[package]]
 name = "sp-inherents"
-version = "34.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "impl-trait-for-tuples",
@@ -14572,8 +15829,8 @@ dependencies = [
 
 [[package]]
 name = "sp-io"
-version = "38.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "30.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bytes",
  "docify",
@@ -14583,14 +15840,14 @@ dependencies = [
  "parity-scale-codec",
  "polkavm-derive 0.9.1",
  "rustversion",
- "secp256k1",
+ "secp256k1 0.28.2",
  "sp-core",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
- "sp-externalities",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-keystore",
- "sp-runtime-interface",
+ "sp-runtime-interface 24.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-state-machine",
- "sp-tracing",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-trie",
  "tracing",
  "tracing-core",
@@ -14598,8 +15855,8 @@ dependencies = [
 
 [[package]]
 name = "sp-keyring"
-version = "39.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "31.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "sp-core",
  "sp-runtime",
@@ -14608,19 +15865,19 @@ dependencies = [
 
 [[package]]
 name = "sp-keystore"
-version = "0.40.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.34.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "parking_lot 0.12.3",
  "sp-core",
- "sp-externalities",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
 name = "sp-maybe-compressed-blob"
 version = "11.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "thiserror 1.0.69",
  "zstd 0.12.4",
@@ -14639,18 +15896,18 @@ dependencies = [
 
 [[package]]
 name = "sp-metadata-ir"
-version = "0.7.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.6.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "frame-metadata 16.0.0",
+ "frame-metadata 18.0.0",
  "parity-scale-codec",
  "scale-info",
 ]
 
 [[package]]
 name = "sp-mixnet"
-version = "0.12.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.4.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -14660,8 +15917,8 @@ dependencies = [
 
 [[package]]
 name = "sp-mmr-primitives"
-version = "34.1.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -14670,15 +15927,15 @@ dependencies = [
  "serde",
  "sp-api",
  "sp-core",
- "sp-debug-derive",
+ "sp-debug-derive 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-runtime",
  "thiserror 1.0.69",
 ]
 
 [[package]]
 name = "sp-npos-elections"
-version = "34.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -14690,8 +15947,8 @@ dependencies = [
 
 [[package]]
 name = "sp-offchain"
-version = "34.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "sp-api",
  "sp-core",
@@ -14701,17 +15958,16 @@ dependencies = [
 [[package]]
 name = "sp-panic-handler"
 version = "13.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "backtrace",
- "lazy_static",
  "regex",
 ]
 
 [[package]]
 name = "sp-rpc"
-version = "32.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "rustc-hash 1.1.0",
  "serde",
@@ -14720,9 +15976,10 @@ dependencies = [
 
 [[package]]
 name = "sp-runtime"
-version = "39.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "31.0.1"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
+ "binary-merkle-tree",
  "docify",
  "either",
  "hash256-std-hasher",
@@ -14739,34 +15996,68 @@ dependencies = [
  "sp-arithmetic",
  "sp-core",
  "sp-io",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-trie",
  "sp-weights",
  "tracing",
+ "tuplex",
 ]
 
 [[package]]
 name = "sp-runtime-interface"
-version = "28.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "24.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bytes",
  "impl-trait-for-tuples",
  "parity-scale-codec",
  "polkavm-derive 0.9.1",
- "primitive-types 0.12.2",
- "sp-externalities",
- "sp-runtime-interface-proc-macro",
- "sp-std",
- "sp-storage",
- "sp-tracing",
- "sp-wasm-interface",
+ "primitive-types 0.13.1",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-runtime-interface-proc-macro 17.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-wasm-interface 20.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "static_assertions",
+]
+
+[[package]]
+name = "sp-runtime-interface"
+version = "24.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "bytes",
+ "impl-trait-for-tuples",
+ "parity-scale-codec",
+ "polkavm-derive 0.9.1",
+ "primitive-types 0.13.1",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk)",
+ "sp-runtime-interface-proc-macro 17.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk)",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk)",
+ "sp-storage 19.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk)",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk)",
+ "sp-wasm-interface 20.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk)",
  "static_assertions",
 ]
 
 [[package]]
 name = "sp-runtime-interface-proc-macro"
-version = "18.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "17.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "Inflector",
+ "expander",
+ "proc-macro-crate 3.2.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
+[[package]]
+name = "sp-runtime-interface-proc-macro"
+version = "17.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "Inflector",
  "expander",
@@ -14778,8 +16069,8 @@ dependencies = [
 
 [[package]]
 name = "sp-session"
-version = "36.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -14792,8 +16083,8 @@ dependencies = [
 
 [[package]]
 name = "sp-staking"
-version = "36.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
@@ -14805,8 +16096,8 @@ dependencies = [
 
 [[package]]
 name = "sp-state-machine"
-version = "0.43.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.35.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "hash-db",
  "log",
@@ -14815,7 +16106,7 @@ dependencies = [
  "rand",
  "smallvec",
  "sp-core",
- "sp-externalities",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-panic-handler",
  "sp-trie",
  "thiserror 1.0.69",
@@ -14825,8 +16116,8 @@ dependencies = [
 
 [[package]]
 name = "sp-statement-store"
-version = "18.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "10.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "aes-gcm",
  "curve25519-dalek",
@@ -14839,10 +16130,10 @@ dependencies = [
  "sp-api",
  "sp-application-crypto",
  "sp-core",
- "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2)",
- "sp-externalities",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-runtime",
- "sp-runtime-interface",
+ "sp-runtime-interface 24.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "thiserror 1.0.69",
  "x25519-dalek",
 ]
@@ -14850,24 +16141,41 @@ dependencies = [
 [[package]]
 name = "sp-std"
 version = "14.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+
+[[package]]
+name = "sp-std"
+version = "14.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk#e3172c09434c095d444f0300169c0e6111523d73"
 
 [[package]]
 name = "sp-storage"
-version = "21.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "19.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "impl-serde 0.4.0",
+ "impl-serde 0.5.0",
  "parity-scale-codec",
  "ref-cast",
  "serde",
- "sp-debug-derive",
+ "sp-debug-derive 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+]
+
+[[package]]
+name = "sp-storage"
+version = "19.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "impl-serde 0.5.0",
+ "parity-scale-codec",
+ "ref-cast",
+ "serde",
+ "sp-debug-derive 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk)",
 ]
 
 [[package]]
 name = "sp-timestamp"
-version = "34.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -14878,8 +16186,19 @@ dependencies = [
 
 [[package]]
 name = "sp-tracing"
-version = "17.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "16.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "parity-scale-codec",
+ "tracing",
+ "tracing-core",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "sp-tracing"
+version = "16.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
  "tracing",
@@ -14889,8 +16208,8 @@ dependencies = [
 
 [[package]]
 name = "sp-transaction-pool"
-version = "34.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "sp-api",
  "sp-runtime",
@@ -14898,8 +16217,8 @@ dependencies = [
 
 [[package]]
 name = "sp-transaction-storage-proof"
-version = "34.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "26.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -14912,12 +16231,11 @@ dependencies = [
 
 [[package]]
 name = "sp-trie"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "29.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "ahash 0.8.11",
+ "ahash",
  "hash-db",
- "lazy_static",
  "memory-db",
  "nohash-hasher",
  "parity-scale-codec",
@@ -14926,7 +16244,7 @@ dependencies = [
  "scale-info",
  "schnellru",
  "sp-core",
- "sp-externalities",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "thiserror 1.0.69",
  "tracing",
  "trie-db",
@@ -14935,27 +16253,28 @@ dependencies = [
 
 [[package]]
 name = "sp-version"
-version = "37.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "29.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "impl-serde 0.4.0",
+ "impl-serde 0.5.0",
  "parity-scale-codec",
  "parity-wasm",
  "scale-info",
  "serde",
  "sp-crypto-hashing-proc-macro",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "sp-version-proc-macro",
  "thiserror 1.0.69",
 ]
 
 [[package]]
 name = "sp-version-proc-macro"
-version = "14.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "13.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "parity-scale-codec",
+ "proc-macro-warning 1.0.2",
  "proc-macro2",
  "quote",
  "syn 2.0.87",
@@ -14963,8 +16282,8 @@ dependencies = [
 
 [[package]]
 name = "sp-wasm-interface"
-version = "21.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "20.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "anyhow",
  "impl-trait-for-tuples",
@@ -14973,10 +16292,21 @@ dependencies = [
  "wasmtime",
 ]
 
+[[package]]
+name = "sp-wasm-interface"
+version = "20.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "anyhow",
+ "impl-trait-for-tuples",
+ "log",
+ "parity-scale-codec",
+]
+
 [[package]]
 name = "sp-weights"
-version = "31.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "27.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "bounded-collections",
  "parity-scale-codec",
@@ -14984,7 +16314,7 @@ dependencies = [
  "serde",
  "smallvec",
  "sp-arithmetic",
- "sp-debug-derive",
+ "sp-debug-derive 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
 ]
 
 [[package]]
@@ -15064,8 +16394,8 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
 
 [[package]]
 name = "staging-parachain-info"
-version = "0.17.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.7.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-primitives-core",
  "frame-support",
@@ -15077,13 +16407,15 @@ dependencies = [
 
 [[package]]
 name = "staging-xcm"
-version = "14.2.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "array-bytes",
  "bounded-collections",
  "derivative",
  "environmental",
+ "frame-support",
+ "hex-literal",
  "impl-trait-for-tuples",
  "log",
  "parity-scale-codec",
@@ -15096,8 +16428,8 @@ dependencies = [
 
 [[package]]
 name = "staging-xcm-builder"
-version = "17.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -15118,8 +16450,8 @@ dependencies = [
 
 [[package]]
 name = "staging-xcm-executor"
-version = "17.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "environmental",
  "frame-benchmarking",
@@ -15170,26 +16502,6 @@ dependencies = [
  "syn 1.0.109",
 ]
 
-[[package]]
-name = "str0m"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6706347e49b13373f7ddfafad47df7583ed52083d6fc8a594eb2c80497ef959d"
-dependencies = [
- "combine",
- "crc",
- "fastrand",
- "hmac 0.12.1",
- "once_cell",
- "openssl",
- "openssl-sys",
- "sctp-proto",
- "serde",
- "sha-1",
- "thiserror 1.0.69",
- "tracing",
-]
-
 [[package]]
 name = "string-interner"
 version = "0.17.0"
@@ -15201,6 +16513,12 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
 [[package]]
 name = "strsim"
 version = "0.11.1"
@@ -15250,8 +16568,8 @@ dependencies = [
 
 [[package]]
 name = "substrate-bip39"
-version = "0.6.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.4.7"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "hmac 0.12.1",
  "pbkdf2",
@@ -15261,57 +16579,156 @@ dependencies = [
 ]
 
 [[package]]
-name = "substrate-build-script-utils"
-version = "11.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
-
-[[package]]
-name = "substrate-frame-rpc-system"
-version = "39.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+name = "substrate-build-script-utils"
+version = "11.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+
+[[package]]
+name = "substrate-frame-rpc-system"
+version = "28.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "docify",
+ "frame-system-rpc-runtime-api",
+ "futures 0.3.31",
+ "jsonrpsee 0.24.7",
+ "log",
+ "parity-scale-codec",
+ "sc-rpc-api",
+ "sc-transaction-pool-api",
+ "sp-api",
+ "sp-block-builder",
+ "sp-blockchain",
+ "sp-core",
+ "sp-runtime",
+]
+
+[[package]]
+name = "substrate-prometheus-endpoint"
+version = "0.17.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "http-body-util",
+ "hyper 1.5.0",
+ "hyper-util",
+ "log",
+ "prometheus",
+ "thiserror 1.0.69",
+ "tokio",
+]
+
+[[package]]
+name = "substrate-test-client"
+version = "2.0.1"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "array-bytes",
+ "async-trait",
+ "futures 0.3.31",
+ "parity-scale-codec",
+ "sc-client-api",
+ "sc-client-db",
+ "sc-consensus",
+ "sc-executor",
+ "sc-offchain",
+ "sc-service",
+ "serde",
+ "serde_json",
+ "sp-blockchain",
+ "sp-consensus",
+ "sp-core",
+ "sp-keyring",
+ "sp-keystore",
+ "sp-runtime",
+ "sp-state-machine",
+ "tokio",
+]
+
+[[package]]
+name = "substrate-test-runtime"
+version = "2.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "array-bytes",
+ "frame-executive",
+ "frame-metadata-hash-extension",
+ "frame-support",
+ "frame-system",
+ "frame-system-rpc-runtime-api",
+ "log",
+ "pallet-babe",
+ "pallet-balances",
+ "pallet-timestamp",
+ "parity-scale-codec",
+ "sc-service",
+ "scale-info",
+ "serde_json",
+ "sp-api",
+ "sp-application-crypto",
+ "sp-block-builder",
+ "sp-consensus-aura",
+ "sp-consensus-babe",
+ "sp-consensus-grandpa",
+ "sp-core",
+ "sp-crypto-hashing 0.1.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-externalities 0.25.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-genesis-builder",
+ "sp-inherents",
+ "sp-io",
+ "sp-keyring",
+ "sp-offchain",
+ "sp-runtime",
+ "sp-session",
+ "sp-state-machine",
+ "sp-transaction-pool",
+ "sp-trie",
+ "sp-version",
+ "substrate-wasm-builder",
+ "tracing",
+ "trie-db",
+]
+
+[[package]]
+name = "substrate-test-runtime-client"
+version = "2.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
- "docify",
- "frame-system-rpc-runtime-api",
  "futures 0.3.31",
- "jsonrpsee",
- "log",
- "parity-scale-codec",
- "sc-rpc-api",
- "sc-transaction-pool-api",
+ "sc-block-builder",
+ "sc-client-api",
+ "sc-consensus",
  "sp-api",
- "sp-block-builder",
  "sp-blockchain",
+ "sp-consensus",
  "sp-core",
  "sp-runtime",
-]
-
-[[package]]
-name = "substrate-prometheus-endpoint"
-version = "0.17.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
-dependencies = [
- "http-body-util",
- "hyper 1.5.0",
- "hyper-util",
- "log",
- "prometheus",
- "thiserror 1.0.69",
- "tokio",
+ "substrate-test-client",
+ "substrate-test-runtime",
 ]
 
 [[package]]
 name = "substrate-wasm-builder"
-version = "24.0.1"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "17.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
+ "array-bytes",
  "build-helper",
  "cargo_metadata",
  "console",
  "filetime",
+ "frame-metadata 18.0.0",
  "jobserver",
+ "merkleized-metadata",
+ "parity-scale-codec",
  "parity-wasm",
  "polkavm-linker 0.9.2",
+ "sc-executor",
+ "shlex",
+ "sp-core",
+ "sp-io",
  "sp-maybe-compressed-blob",
+ "sp-tracing 16.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
+ "sp-version",
  "strum 0.26.3",
  "tempfile",
  "toml 0.8.19",
@@ -15350,10 +16767,46 @@ dependencies = [
  "syn 2.0.87",
 ]
 
+[[package]]
+name = "subxt"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a160cba1edbf3ec4fbbeaea3f1a185f70448116a6bccc8276bb39adb3b3053bd"
+dependencies = [
+ "async-trait",
+ "derive-where",
+ "either",
+ "frame-metadata 16.0.0",
+ "futures 0.3.31",
+ "hex",
+ "impl-serde 0.4.0",
+ "instant",
+ "jsonrpsee 0.22.5",
+ "parity-scale-codec",
+ "primitive-types 0.12.2",
+ "reconnecting-jsonrpsee-ws-client",
+ "scale-bits 0.6.0",
+ "scale-decode 0.13.1",
+ "scale-encode 0.7.2",
+ "scale-info",
+ "scale-value 0.16.3",
+ "serde",
+ "serde_json",
+ "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "subxt-core 0.37.1",
+ "subxt-lightclient 0.37.0",
+ "subxt-macro 0.37.0",
+ "subxt-metadata 0.37.0",
+ "thiserror 1.0.69",
+ "tokio-util",
+ "tracing",
+ "url",
+]
+
 [[package]]
 name = "subxt"
 version = "0.38.0"
-source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.16.2#7bd25b258a127627971a9c6920da8c508cf37ec0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.17.0#7044fccc5aaa1f838368a7f4a54f96d1f3f3040c"
 dependencies = [
  "async-trait",
  "derive-where",
@@ -15362,7 +16815,7 @@ dependencies = [
  "futures 0.3.31",
  "hex",
  "impl-serde 0.5.0",
- "jsonrpsee",
+ "jsonrpsee 0.24.7",
  "parity-scale-codec",
  "polkadot-sdk",
  "primitive-types 0.13.1",
@@ -15373,10 +16826,10 @@ dependencies = [
  "scale-value 0.17.0",
  "serde",
  "serde_json",
- "subxt-core",
- "subxt-lightclient",
- "subxt-macro",
- "subxt-metadata",
+ "subxt-core 0.38.0",
+ "subxt-lightclient 0.38.0",
+ "subxt-macro 0.38.0",
+ "subxt-metadata 0.38.0",
  "thiserror 1.0.69",
  "tokio",
  "tokio-util",
@@ -15386,26 +16839,74 @@ dependencies = [
  "web-time",
 ]
 
+[[package]]
+name = "subxt-codegen"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d703dca0905cc5272d7cc27a4ac5f37dcaae7671acc7fef0200057cc8c317786"
+dependencies = [
+ "frame-metadata 16.0.0",
+ "heck 0.5.0",
+ "hex",
+ "jsonrpsee 0.22.5",
+ "parity-scale-codec",
+ "proc-macro2",
+ "quote",
+ "scale-info",
+ "scale-typegen 0.8.0",
+ "subxt-metadata 0.37.0",
+ "syn 2.0.87",
+ "thiserror 1.0.69",
+ "tokio",
+]
+
 [[package]]
 name = "subxt-codegen"
 version = "0.38.0"
-source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.16.2#7bd25b258a127627971a9c6920da8c508cf37ec0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.17.0#7044fccc5aaa1f838368a7f4a54f96d1f3f3040c"
 dependencies = [
  "heck 0.5.0",
  "parity-scale-codec",
  "proc-macro2",
  "quote",
  "scale-info",
- "scale-typegen",
- "subxt-metadata",
+ "scale-typegen 0.9.0",
+ "subxt-metadata 0.38.0",
  "syn 2.0.87",
  "thiserror 1.0.69",
 ]
 
+[[package]]
+name = "subxt-core"
+version = "0.37.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3af3b36405538a36b424d229dc908d1396ceb0994c90825ce928709eac1a159a"
+dependencies = [
+ "base58",
+ "blake2 0.10.6",
+ "derive-where",
+ "frame-metadata 16.0.0",
+ "hashbrown 0.14.5",
+ "hex",
+ "impl-serde 0.4.0",
+ "parity-scale-codec",
+ "primitive-types 0.12.2",
+ "scale-bits 0.6.0",
+ "scale-decode 0.13.1",
+ "scale-encode 0.7.2",
+ "scale-info",
+ "scale-value 0.16.3",
+ "serde",
+ "serde_json",
+ "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "subxt-metadata 0.37.0",
+ "tracing",
+]
+
 [[package]]
 name = "subxt-core"
 version = "0.38.0"
-source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.16.2#7bd25b258a127627971a9c6920da8c508cf37ec0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.17.0#7044fccc5aaa1f838368a7f4a54f96d1f3f3040c"
 dependencies = [
  "base58",
  "blake2 0.10.6",
@@ -15415,7 +16916,7 @@ dependencies = [
  "hashbrown 0.14.5",
  "hex",
  "impl-serde 0.5.0",
- "keccak-hash",
+ "keccak-hash 0.11.0",
  "parity-scale-codec",
  "polkadot-sdk",
  "primitive-types 0.13.1",
@@ -15426,45 +16927,90 @@ dependencies = [
  "scale-value 0.17.0",
  "serde",
  "serde_json",
- "subxt-metadata",
+ "subxt-metadata 0.38.0",
+ "tracing",
+]
+
+[[package]]
+name = "subxt-lightclient"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d9406fbdb9548c110803cb8afa750f8b911d51eefdf95474b11319591d225d9"
+dependencies = [
+ "futures 0.3.31",
+ "futures-util",
+ "serde",
+ "serde_json",
+ "smoldot-light 0.14.0",
+ "thiserror 1.0.69",
+ "tokio",
+ "tokio-stream",
  "tracing",
 ]
 
 [[package]]
 name = "subxt-lightclient"
 version = "0.38.0"
-source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.16.2#7bd25b258a127627971a9c6920da8c508cf37ec0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.17.0#7044fccc5aaa1f838368a7f4a54f96d1f3f3040c"
 dependencies = [
  "futures 0.3.31",
  "futures-util",
  "serde",
  "serde_json",
- "smoldot-light",
+ "smoldot-light 0.16.2",
  "thiserror 1.0.69",
  "tokio",
  "tokio-stream",
  "tracing",
 ]
 
+[[package]]
+name = "subxt-macro"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c195f803d70687e409aba9be6c87115b5da8952cd83c4d13f2e043239818fcd"
+dependencies = [
+ "darling 0.20.10",
+ "parity-scale-codec",
+ "proc-macro-error",
+ "quote",
+ "scale-typegen 0.8.0",
+ "subxt-codegen 0.37.0",
+ "syn 2.0.87",
+]
+
 [[package]]
 name = "subxt-macro"
 version = "0.38.0"
-source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.16.2#7bd25b258a127627971a9c6920da8c508cf37ec0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.17.0#7044fccc5aaa1f838368a7f4a54f96d1f3f3040c"
 dependencies = [
- "darling",
+ "darling 0.20.10",
  "parity-scale-codec",
  "proc-macro-error2",
  "quote",
- "scale-typegen",
- "subxt-codegen",
+ "scale-typegen 0.9.0",
+ "subxt-codegen 0.38.0",
  "subxt-utils-fetchmetadata",
  "syn 2.0.87",
 ]
 
+[[package]]
+name = "subxt-metadata"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "738be5890fdeff899bbffff4d9c0f244fe2a952fb861301b937e3aa40ebb55da"
+dependencies = [
+ "frame-metadata 16.0.0",
+ "hashbrown 0.14.5",
+ "parity-scale-codec",
+ "scale-info",
+ "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
 [[package]]
 name = "subxt-metadata"
 version = "0.38.0"
-source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.16.2#7bd25b258a127627971a9c6920da8c508cf37ec0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.17.0#7044fccc5aaa1f838368a7f4a54f96d1f3f3040c"
 dependencies = [
  "frame-decode",
  "frame-metadata 17.0.0",
@@ -15474,10 +17020,34 @@ dependencies = [
  "scale-info",
 ]
 
+[[package]]
+name = "subxt-signer"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f49888ae6ae90fe01b471193528eea5bd4ed52d8eecd2d13f4a2333b87388850"
+dependencies = [
+ "bip32",
+ "bip39",
+ "cfg-if",
+ "hex",
+ "hmac 0.12.1",
+ "keccak-hash 0.10.0",
+ "parity-scale-codec",
+ "pbkdf2",
+ "regex",
+ "schnorrkel",
+ "secp256k1 0.28.2",
+ "secrecy",
+ "sha2 0.10.8",
+ "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "subxt-core 0.37.1",
+ "zeroize",
+]
+
 [[package]]
 name = "subxt-utils-fetchmetadata"
 version = "0.38.0"
-source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.16.2#7bd25b258a127627971a9c6920da8c508cf37ec0"
+source = "git+https://github.com/duniter/subxt?branch=subxt-v0.38.0-duniter-substrate-v1.17.0#7044fccc5aaa1f838368a7f4a54f96d1f3f3040c"
 dependencies = [
  "hex",
  "parity-scale-codec",
@@ -15590,7 +17160,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
 dependencies = [
  "bitflags 1.3.2",
- "core-foundation",
+ "core-foundation 0.9.4",
  "system-configuration-sys",
 ]
 
@@ -15672,8 +17242,8 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76"
 
 [[package]]
 name = "testnet-parachains-constants"
-version = "10.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "1.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "cumulus-primitives-core",
  "frame-support",
@@ -15761,6 +17331,27 @@ dependencies = [
  "num_cpus",
 ]
 
+[[package]]
+name = "tikv-jemalloc-ctl"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "619bfed27d807b54f7f776b9430d4f8060e66ee138a28632ca898584d462c31c"
+dependencies = [
+ "libc",
+ "paste",
+ "tikv-jemalloc-sys",
+]
+
+[[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"
@@ -15865,6 +17456,17 @@ dependencies = [
  "tokio",
 ]
 
+[[package]]
+name = "tokio-rustls"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
+dependencies = [
+ "rustls 0.22.4",
+ "rustls-pki-types",
+ "tokio",
+]
+
 [[package]]
 name = "tokio-rustls"
 version = "0.26.0"
@@ -16046,6 +17648,29 @@ dependencies = [
  "tracing",
 ]
 
+[[package]]
+name = "tracing-gum"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "coarsetime",
+ "polkadot-primitives",
+ "tracing",
+ "tracing-gum-proc-macro",
+]
+
+[[package]]
+name = "tracing-gum-proc-macro"
+version = "5.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
+dependencies = [
+ "expander",
+ "proc-macro-crate 3.2.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
 [[package]]
 name = "tracing-log"
 version = "0.2.0"
@@ -16393,6 +18018,15 @@ dependencies = [
  "subtle 2.6.1",
 ]
 
+[[package]]
+name = "unreachable"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"
+dependencies = [
+ "void",
+]
+
 [[package]]
 name = "unsafe-libyaml"
 version = "0.2.11"
@@ -16500,10 +18134,10 @@ checksum = "70a3028804c8bbae2a97a15b71ffc0e308c4b01a520994aafa77d56e94e19024"
 dependencies = [
  "ark-bls12-377",
  "ark-bls12-381",
- "ark-ec",
+ "ark-ec 0.4.2",
  "ark-ff 0.4.2",
  "ark-serialize 0.4.2",
- "ark-serialize-derive",
+ "ark-serialize-derive 0.4.2",
  "arrayref",
  "constcat",
  "digest 0.10.7",
@@ -16550,6 +18184,15 @@ version = "0.11.0+wasi-snapshot-preview1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
+[[package]]
+name = "wasix"
+version = "0.12.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1fbb4ef9bbca0c1170e0b00dd28abc9e3b68669821600cad1caaed606583c6d"
+dependencies = [
+ "wasi",
+]
+
 [[package]]
 name = "wasm-bindgen"
 version = "0.2.95"
@@ -16681,6 +18324,19 @@ dependencies = [
  "web-sys",
 ]
 
+[[package]]
+name = "wasmi"
+version = "0.31.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8281d1d660cdf54c76a3efa9ddd0c270cada1383a995db3ccb43d166456c7"
+dependencies = [
+ "smallvec",
+ "spin 0.9.8",
+ "wasmi_arena",
+ "wasmi_core 0.13.0",
+ "wasmparser-nostd",
+]
+
 [[package]]
 name = "wasmi"
 version = "0.32.3"
@@ -16694,21 +18350,39 @@ dependencies = [
  "smallvec",
  "spin 0.9.8",
  "wasmi_collections",
- "wasmi_core",
+ "wasmi_core 0.32.3",
  "wasmparser-nostd",
 ]
 
+[[package]]
+name = "wasmi_arena"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "104a7f73be44570cac297b3035d76b169d6599637631cf37a1703326a0727073"
+
 [[package]]
 name = "wasmi_collections"
 version = "0.32.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4"
 dependencies = [
- "ahash 0.8.11",
+ "ahash",
  "hashbrown 0.14.5",
  "string-interner",
 ]
 
+[[package]]
+name = "wasmi_core"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcf1a7db34bff95b85c261002720c00c3a6168256dcb93041d3fa2054d19856a"
+dependencies = [
+ "downcast-rs",
+ "libm",
+ "num-traits 0.2.19",
+ "paste",
+]
+
 [[package]]
 name = "wasmi_core"
 version = "0.32.3"
@@ -16992,8 +18666,8 @@ dependencies = [
 
 [[package]]
 name = "westend-runtime-constants"
-version = "17.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "polkadot-primitives",
@@ -17006,18 +18680,6 @@ dependencies = [
  "staging-xcm-builder",
 ]
 
-[[package]]
-name = "which"
-version = "4.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
-dependencies = [
- "either",
- "home",
- "once_cell",
- "rustix 0.38.40",
-]
-
 [[package]]
 name = "wide"
 version = "0.7.28"
@@ -17123,21 +18785,6 @@ dependencies = [
  "windows-targets 0.52.6",
 ]
 
-[[package]]
-name = "windows-sys"
-version = "0.42.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
-dependencies = [
- "windows_aarch64_gnullvm 0.42.2",
- "windows_aarch64_msvc 0.42.2",
- "windows_i686_gnu 0.42.2",
- "windows_i686_msvc 0.42.2",
- "windows_x86_64_gnu 0.42.2",
- "windows_x86_64_gnullvm 0.42.2",
- "windows_x86_64_msvc 0.42.2",
-]
-
 [[package]]
 name = "windows-sys"
 version = "0.45.0"
@@ -17440,8 +19087,8 @@ dependencies = [
 
 [[package]]
 name = "xcm-procedural"
-version = "10.1.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "Inflector",
  "proc-macro2",
@@ -17451,8 +19098,8 @@ dependencies = [
 
 [[package]]
 name = "xcm-runtime-apis"
-version = "0.4.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "0.1.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "parity-scale-codec",
@@ -17465,8 +19112,8 @@ dependencies = [
 
 [[package]]
 name = "xcm-simulator"
-version = "17.0.0"
-source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.16.2#21d1f7a814df383fd8007bf39750ce4cb0fd56fc"
+version = "7.0.0"
+source = "git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0#e3172c09434c095d444f0300169c0e6111523d73"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -17479,7 +19126,7 @@ dependencies = [
  "scale-info",
  "sp-io",
  "sp-runtime",
- "sp-std",
+ "sp-std 14.0.0 (git+https://github.com/duniter/duniter-polkadot-sdk?branch=duniter-substrate-v1.17.0)",
  "staging-xcm",
  "staging-xcm-builder",
  "staging-xcm-executor",
diff --git a/Cargo.toml b/Cargo.toml
index 5c450f3c364740c06bb71198b556adc8e4158901..54ee0162e19d9448da4c9371a08a143c0219c79a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -105,9 +105,11 @@ simple_logger = { version = "4.3.3", default-features = false }
 bincode = { version = "1.3.3", default-features = false }
 dubp-wot = { version = "0.11.1", default-features = false }
 flate2 = { version = "1.0.28", default-features = false }
+array-bytes = { version = "6.2.2", default-features = false }
+parking_lot = { version = "0.12.1" }
 
 # Subxt
-subxt = { git = 'https://github.com/duniter/subxt', branch = 'subxt-v0.38.0-duniter-substrate-v1.16.2', default-features = false }
+subxt = { git = 'https://github.com/duniter/subxt', branch = 'subxt-v0.38.0-duniter-substrate-v1.17.0', default-features = false }
 
 # local dependencies
 weight-analyzer = { path = "resources/weight_analyzer", default-features = false }
@@ -139,86 +141,90 @@ 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.16.2', default-features = false }
-frame-benchmarking = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-frame-executive = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-frame-support = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-frame-system = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-frame-system-benchmarking = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-frame-system-rpc-runtime-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-frame-try-runtime = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-atomic-swap = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-authority-discovery = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-authorship = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-babe = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-balances = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-collective = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-grandpa = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-im-online = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-multisig = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-preimage = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-proxy = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-scheduler = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-session = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-sudo = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-timestamp = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-transaction-payment = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-transaction-payment-rpc-runtime-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-treasury = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-pallet-utility = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-arithmetic = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-block-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-client-db = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-client-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-consensus-grandpa = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-rpc = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-consensus-grandpa-rpc = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-consensus-babe = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-consensus-babe-rpc = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-blockchain = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-offchain = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-consensus-babe = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-consensus-grandpa = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-core = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-inherents = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-offchain = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-runtime = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-session = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-staking = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-weights = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-transaction-pool = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-version = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-cli = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-service = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-trie = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-authority-discovery = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-genesis-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-keyring = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-consensus = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-core-hashing = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-keystore = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-rpc-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-substrate-wasm-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-io = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-substrate-build-script-utils = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2' }
-node-primitives = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-frame-benchmarking-cli = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-chain-spec = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-consensus = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-consensus-manual-seal = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-executor = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-telemetry = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-transaction-pool = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-basic-authorship = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-network = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-keystore = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-storage = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-timestamp = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-transaction-storage-proof = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sc-transaction-pool-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-sp-state-machine = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
-substrate-frame-rpc-system = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.16.2', default-features = false }
+pallet-transaction-payment-rpc = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+frame-benchmarking = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+frame-metadata-hash-extension = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+frame-executive = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+frame-support = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+frame-system = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+frame-system-benchmarking = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+frame-system-rpc-runtime-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+frame-try-runtime = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-atomic-swap = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-authority-discovery = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-authorship = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-babe = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-balances = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-collective = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-grandpa = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-im-online = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-multisig = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-preimage = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-proxy = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-scheduler = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-session = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-sudo = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-timestamp = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-transaction-payment = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-transaction-payment-rpc-runtime-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-treasury = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+pallet-utility = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-arithmetic = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-block-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-client-db = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-client-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-consensus-grandpa = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-rpc = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-consensus-grandpa-rpc = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-consensus-babe = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-consensus-babe-rpc = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-blockchain = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-offchain = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-consensus-babe = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-consensus-grandpa = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-core = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-inherents = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-offchain = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-runtime = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-session = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-staking = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-weights = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-transaction-pool = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-version = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-cli = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-service = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-trie = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-authority-discovery = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-genesis-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-keyring = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-consensus = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-core-hashing = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-keystore = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-rpc-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+substrate-wasm-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-io = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+substrate-build-script-utils = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0' }
+node-primitives = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+frame-benchmarking-cli = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-chain-spec = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-consensus = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-consensus-manual-seal = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-executor = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-telemetry = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-transaction-pool = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-basic-authorship = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-network = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-network-sync = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-network-test = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-utils = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-keystore = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-storage = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-timestamp = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-transaction-storage-proof = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sc-transaction-pool-api = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+sp-state-machine = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.0', default-features = false }
+substrate-frame-rpc-system = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.17.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
diff --git a/docker/README.md b/docker/README.md
index 0110be191582010114cf4ac6e164a318b8f03405..f346b5cb765a336d47c345b35d8b340feb4e2d96 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -68,6 +68,9 @@ volumes:
 | `DUNITER_DISABLE_PROMETHEUS` | Boolean to disable the Prometheus endpoint on port 9615.                                                                                                                                                                                                                                                                                             | `false`                                                                                     |
 | `DUNITER_DISABLE_TELEMETRY`  | Boolean to disable connecting to the Substrate telemetry server.                                                                                                                                                                                                                                                                                     | `false`                                                                                     |
 | `DUNITER_PRUNING_PROFILE`    | _ `default`<br> _ `archive`: keep all blocks and state blocks<br> \* `light`: keep only last 256 state blocks and last 14400 blocks (one day duration)                                                                                                                                                                                               | `default`                                                                                   |
+| `DUNITER_PUBLIC_RPC`         | The public RPC endpoint to gossip on the network and make available in the apps. | None |
+| `DUNITER_PUBLIC_SQUID`       | The public Squid graphql endpoint to gossip on the network and make available in the apps. | None |
+| `DUNITER_PUBLIC_ENDPOINTS`   | Path to a JSON file containing public endpoints to gossip on the network. The file should use the following format:<br>```{"endpoints": [  { "protocol": "rpc", "address": "wss://gdev.example.com" },  { "protocol": "squid", "address": "gdev.example.com/graphql/v1" }]}``` | None |
 
 ## Other Duniter options
 
diff --git a/docker/docker-entrypoint b/docker/docker-entrypoint
index 3666aad0e0dc0310a7be807203167e5cbad149c1..1e064d757dc364b8319707c9ed7bb51a2f5a3406 100755
--- a/docker/docker-entrypoint
+++ b/docker/docker-entrypoint
@@ -59,6 +59,21 @@ if [ -n "$DUNITER_PUBLIC_ADDR" ]; then
   set -- "$@" --public-addr "$DUNITER_PUBLIC_ADDR"
 fi
 
+# Define public RPC endpoint (gossiped on the network)
+if [ -n "$DUNITER_PUBLIC_RPC" ]; then
+  set -- "$@" --public-rpc "$DUNITER_PUBLIC_RPC"
+fi
+
+# Define public Squid endpoint (gossiped on the network)  
+if [ -n "$DUNITER_PUBLIC_SQUID" ]; then
+  set -- "$@" --public-squid "$DUNITER_PUBLIC_SQUID"
+fi
+
+# Define public endpoints from JSON file (gossiped on the network)
+if [ -n "$DUNITER_PUBLIC_ENDPOINTS" ]; then
+  set -- "$@" --public-endpoints "$DUNITER_PUBLIC_ENDPOINTS"
+fi
+
 # Define listen address (inside docker)
 if [ -n "$DUNITER_LISTEN_ADDR" ]; then
   set -- "$@" --listen-addr "$DUNITER_LISTEN_ADDR"
diff --git a/docs/api/runtime-calls.md b/docs/api/runtime-calls.md
index 5adde95a843e80509d6e673d0b10f95218751734..38dcb37ccf65a78393fa4f00d38ce8506bd2c561 100644
--- a/docs/api/runtime-calls.md
+++ b/docs/api/runtime-calls.md
@@ -12,7 +12,7 @@ Calls are categorized according to the dispatch origin they require:
 
 We only document user calls below.
 
-There are **63** user calls from **17** pallets.
+There are **65** user calls from **17** pallets.
 
 ## Account - 1
 
@@ -20,7 +20,7 @@ There are **63** user calls from **17** pallets.
 
 <details><summary><code>unlink_identity()</code></summary>
 
-Taking 0.0109 % of a block.
+Taking 0.0106 % of a block.
 
 ```rust
 ```
@@ -36,7 +36,7 @@ Unlink the identity associated with the account.
 
 <details><summary><code>transfer_allow_death(dest, value)</code></summary>
 
-Taking 0.0194 % of a block.
+Taking 0.0186 % of a block.
 
 ```rust
 dest: AccountIdLookupOf<T>
@@ -58,7 +58,7 @@ The dispatch origin for this call must be `Signed` by the transactor.
 
 <details><summary><code>transfer_keep_alive(dest, value)</code></summary>
 
-Taking 0.0122 % of a block.
+Taking 0.0119 % of a block.
 
 ```rust
 dest: AccountIdLookupOf<T>
@@ -79,7 +79,7 @@ kill the origin account.
 
 <details><summary><code>transfer_all(dest, keep_alive)</code></summary>
 
-Taking 0.0126 % of a block.
+Taking 0.0122 % of a block.
 
 ```rust
 dest: AccountIdLookupOf<T>
@@ -111,7 +111,7 @@ The dispatch origin of this call must be Signed.
 
 <details><summary><code>create_oneshot_account(dest, value)</code></summary>
 
-Taking 0.0117 % of a block.
+Taking 0.0115 % of a block.
 
 ```rust
 dest: <T::Lookup as StaticLookup>::Source
@@ -132,7 +132,7 @@ Origin account is kept alive.
 
 <details><summary><code>consume_oneshot_account(block_height, dest)</code></summary>
 
-Taking 0.0195 % of a block.
+Taking 0.0182 % of a block.
 
 ```rust
 block_height: BlockNumberFor<T>
@@ -152,7 +152,7 @@ Consume a oneshot account and transfer its balance to an account
 
 <details><summary><code>consume_oneshot_account_with_remaining(block_height, dest, remaining_to, balance)</code></summary>
 
-Taking 0.0265 % of a block.
+Taking 0.0246 % of a block.
 
 ```rust
 block_height: BlockNumberFor<T>
@@ -181,7 +181,7 @@ and the remaining amount to another account.
 
 <details><summary><code>invite_smith(receiver)</code></summary>
 
-Taking 0.024 % of a block.
+Taking 0.0214 % of a block.
 
 ```rust
 receiver: T::IdtyIndex
@@ -196,7 +196,7 @@ Invite a member of the Web of Trust to attempt becoming a Smith.
 
 <details><summary><code>accept_invitation()</code></summary>
 
-Taking 0.0126 % of a block.
+Taking 0.0119 % of a block.
 
 ```rust
 ```
@@ -210,7 +210,7 @@ Accept an invitation to become a Smith (must have been invited first).
 
 <details><summary><code>certify_smith(receiver)</code></summary>
 
-Taking 0.0279 % of a block.
+Taking 0.0255 % of a block.
 
 ```rust
 receiver: T::IdtyIndex
@@ -227,7 +227,7 @@ Certify an invited Smith, which can lead the certified to become a Smith.
 
 <details><summary><code>go_offline()</code></summary>
 
-Taking 0.0172 % of a block.
+Taking 0.0152 % of a block.
 
 ```rust
 ```
@@ -241,7 +241,7 @@ Request to leave the set of validators two sessions later.
 
 <details><summary><code>go_online()</code></summary>
 
-Taking 0.0199 % of a block.
+Taking 0.0172 % of a block.
 
 ```rust
 ```
@@ -255,7 +255,7 @@ Request to join the set of validators two sessions later.
 
 <details><summary><code>set_session_keys(keys)</code></summary>
 
-Taking 0.0256 % of a block.
+Taking 0.0225 % of a block.
 
 ```rust
 keys: T::Keys
@@ -272,7 +272,7 @@ Declare new session keys to replace current ones.
 
 <details><summary><code>note_preimage(bytes)</code></summary>
 
-Taking 0.2845 % of a block.
+Taking 0.2846 % of a block.
 
 ```rust
 bytes: Vec<u8>
@@ -290,7 +290,7 @@ the preimage. Otherwise, a deposit is taken proportional to the size of the prei
 
 <details><summary><code>unnote_preimage(hash)</code></summary>
 
-Taking 0.0181 % of a block.
+Taking 0.0171 % of a block.
 
 ```rust
 hash: T::Hash
@@ -310,7 +310,7 @@ If `len` is provided, then it will be a much cheaper operation.
 
 <details><summary><code>request_preimage(hash)</code></summary>
 
-Taking 0.0128 % of a block.
+Taking 0.0121 % of a block.
 
 ```rust
 hash: T::Hash
@@ -328,7 +328,7 @@ a user may have paid, and take the control of the preimage out of their hands.
 
 <details><summary><code>unrequest_preimage(hash)</code></summary>
 
-Taking 0.018 % of a block.
+Taking 0.0171 % of a block.
 
 ```rust
 hash: T::Hash
@@ -345,7 +345,7 @@ NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`.
 
 <details><summary><code>ensure_updated(hashes)</code></summary>
 
-Taking 18.8992 % of a block.
+Taking 17.5344 % of a block.
 
 ```rust
 hashes: Vec<T::Hash>
@@ -364,7 +364,7 @@ The caller pays no fee if at least 90% of pre-images were successfully updated.
 
 <details><summary><code>execute(proposal, length_bound)</code></summary>
 
-Taking 0.0061 % of a block.
+Taking 0.006 % of a block.
 
 ```rust
 proposal: Box<<T as Config<I>>::Proposal>
@@ -418,7 +418,7 @@ or put up for voting.
 
 <details><summary><code>vote(proposal, index, approve)</code></summary>
 
-Taking 0.0128 % of a block.
+Taking 0.0121 % of a block.
 
 ```rust
 proposal: T::Hash
@@ -480,13 +480,57 @@ proposal.
   - `P1` is the complexity of `proposal` preimage.
   - `P2` is proposal-count (code-bounded)
 
+### kill - 7
+
+<details><summary><code>kill(proposal_hash)</code></summary>
+
+Taking 0.0229 % of a block.
+
+```rust
+proposal_hash: T::Hash
+```
+</details>
+
+
+
+Disapprove the proposal and burn the cost held for storing this proposal.
+
+Parameters:
+- `origin`: must be the `KillOrigin`.
+- `proposal_hash`: The hash of the proposal that should be killed.
+
+Emits `Killed` and `ProposalCostBurned` if any cost was held for a given proposal.
+
+### release_proposal_cost - 8
+
+<details><summary><code>release_proposal_cost(proposal_hash)</code></summary>
+
+Taking 0.0066 % of a block.
+
+```rust
+proposal_hash: T::Hash
+```
+</details>
+
+
+
+Release the cost held for storing a proposal once the given proposal is completed.
+
+If there is no associated cost for the given proposal, this call will have no effect.
+
+Parameters:
+- `origin`: must be `Signed` or `Root`.
+- `proposal_hash`: The hash of the proposal.
+
+Emits `ProposalCostReleased` if any cost held for a given proposal.
+
 ## UniversalDividend - 30
 
 ### claim_uds - 0
 
 <details><summary><code>claim_uds()</code></summary>
 
-Taking 0.0219 % of a block.
+Taking 0.02 % of a block.
 
 ```rust
 ```
@@ -500,7 +544,7 @@ Claim Universal Dividends.
 
 <details><summary><code>transfer_ud(dest, value)</code></summary>
 
-Taking 0.0207 % of a block.
+Taking 0.0194 % of a block.
 
 ```rust
 dest: <T::Lookup as StaticLookup>::Source
@@ -516,7 +560,7 @@ Transfer some liquid free balance to another account, in milliUD.
 
 <details><summary><code>transfer_ud_keep_alive(dest, value)</code></summary>
 
-Taking 0.0134 % of a block.
+Taking 0.0129 % of a block.
 
 ```rust
 dest: <T::Lookup as StaticLookup>::Source
@@ -534,7 +578,7 @@ Transfer some liquid free balance to another account in milliUD and keep the acc
 
 <details><summary><code>create_identity(owner_key)</code></summary>
 
-Taking 0.0843 % of a block.
+Taking 0.0776 % of a block.
 
 ```rust
 owner_key: T::AccountId
@@ -553,7 +597,7 @@ The origin must be allowed to create an identity.
 
 <details><summary><code>confirm_identity(idty_name)</code></summary>
 
-Taking 0.0322 % of a block.
+Taking 0.0298 % of a block.
 
 ```rust
 idty_name: IdtyName
@@ -572,7 +616,7 @@ The identity must have been created using `create_identity` before it can be con
 
 <details><summary><code>change_owner_key(new_key, new_key_sig)</code></summary>
 
-Taking 0.0421 % of a block.
+Taking 0.0388 % of a block.
 
 ```rust
 new_key: T::AccountId
@@ -594,7 +638,7 @@ The origin should be the old identity owner key.
 
 <details><summary><code>revoke_identity(idty_index, revocation_key, revocation_sig)</code></summary>
 
-Taking 0.0392 % of a block.
+Taking 0.0365 % of a block.
 
 ```rust
 idty_index: T::IdtyIndex
@@ -618,7 +662,7 @@ Any signed origin can execute this call.
 
 <details><summary><code>revoke_identity_legacy(revocation_document)</code></summary>
 
-Taking 0.0392 % of a block.
+Taking 0.04 % of a block.
 
 ```rust
 revocation_document: Vec<u8>
@@ -637,7 +681,7 @@ Any signed origin can execute this call.
 
 <details><summary><code>link_account(account_id, payload_sig)</code></summary>
 
-Taking 0.0155 % of a block.
+Taking 0.0144 % of a block.
 
 ```rust
 account_id: T::AccountId
@@ -662,7 +706,7 @@ identity to sign the operation.
 
 <details><summary><code>add_cert(receiver)</code></summary>
 
-Taking 0.0357 % of a block.
+Taking 0.0324 % of a block.
 
 ```rust
 receiver: T::IdtyIndex
@@ -677,7 +721,7 @@ Add a new certification.
 
 <details><summary><code>renew_cert(receiver)</code></summary>
 
-Taking 0.0295 % of a block.
+Taking 0.0266 % of a block.
 
 ```rust
 receiver: T::IdtyIndex
@@ -694,7 +738,7 @@ Renew an existing certification.
 
 <details><summary><code>request_distance_evaluation()</code></summary>
 
-Taking 0.0393 % of a block.
+Taking 0.0351 % of a block.
 
 ```rust
 ```
@@ -712,7 +756,7 @@ evaluation will result in slashing for the caller.
 
 <details><summary><code>request_distance_evaluation_for(target)</code></summary>
 
-Taking 0.0404 % of a block.
+Taking 0.036 % of a block.
 
 ```rust
 target: T::IdtyIndex
@@ -806,7 +850,7 @@ The dispatch origin for this call must be _Signed_.
 
 <details><summary><code>as_multi_threshold_1(other_signatories, call)</code></summary>
 
-Taking 0.0048 % of a block.
+Taking 0.0051 % of a block.
 
 ```rust
 other_signatories: Vec<T::AccountId>
@@ -938,7 +982,7 @@ NOTE: If this is the final approval, you will want to use `as_multi` instead.
 
 <details><summary><code>cancel_as_multi(threshold, other_signatories, timepoint, call_hash)</code></summary>
 
-Taking 0.0121 % of a block.
+Taking 0.0117 % of a block.
 
 ```rust
 threshold: u16
@@ -978,7 +1022,7 @@ transaction for this dispatch.
 
 <details><summary><code>request(randomness_type, salt)</code></summary>
 
-Taking 0.0401 % of a block.
+Taking 0.0367 % of a block.
 
 ```rust
 randomness_type: RandomnessType
@@ -996,7 +1040,7 @@ Request randomness.
 
 <details><summary><code>proxy(real, force_proxy_type, call)</code></summary>
 
-Taking 0.0062 % of a block.
+Taking 0.0061 % of a block.
 
 ```rust
 real: AccountIdLookupOf<T>
@@ -1021,7 +1065,7 @@ Parameters:
 
 <details><summary><code>add_proxy(delegate, proxy_type, delay)</code></summary>
 
-Taking 0.0118 % of a block.
+Taking 0.0114 % of a block.
 
 ```rust
 delegate: AccountIdLookupOf<T>
@@ -1046,7 +1090,7 @@ zero.
 
 <details><summary><code>remove_proxy(delegate, proxy_type, delay)</code></summary>
 
-Taking 0.0118 % of a block.
+Taking 0.0114 % of a block.
 
 ```rust
 delegate: AccountIdLookupOf<T>
@@ -1069,7 +1113,7 @@ Parameters:
 
 <details><summary><code>remove_proxies()</code></summary>
 
-Taking 0.0117 % of a block.
+Taking 0.0113 % of a block.
 
 ```rust
 ```
@@ -1088,7 +1132,7 @@ the unreserved fees will be inaccessible. **All access to this account will be l
 
 <details><summary><code>create_pure(proxy_type, delay, index)</code></summary>
 
-Taking 0.0118 % of a block.
+Taking 0.0114 % of a block.
 
 ```rust
 proxy_type: T::ProxyType
@@ -1122,7 +1166,7 @@ Fails if there are insufficient funds to pay for deposit.
 
 <details><summary><code>kill_pure(spawner, proxy_type, index, height, ext_index)</code></summary>
 
-Taking 0.0117 % of a block.
+Taking 0.0114 % of a block.
 
 ```rust
 spawner: AccountIdLookupOf<T>
@@ -1156,7 +1200,7 @@ account whose `pure` call has corresponding parameters.
 
 <details><summary><code>announce(real, call_hash)</code></summary>
 
-Taking 0.0197 % of a block.
+Taking 0.0185 % of a block.
 
 ```rust
 real: AccountIdLookupOf<T>
@@ -1186,7 +1230,7 @@ Parameters:
 
 <details><summary><code>remove_announcement(real, call_hash)</code></summary>
 
-Taking 0.0182 % of a block.
+Taking 0.0173 % of a block.
 
 ```rust
 real: AccountIdLookupOf<T>
@@ -1211,7 +1255,7 @@ Parameters:
 
 <details><summary><code>reject_announcement(delegate, call_hash)</code></summary>
 
-Taking 0.0182 % of a block.
+Taking 0.0173 % of a block.
 
 ```rust
 delegate: AccountIdLookupOf<T>
@@ -1236,7 +1280,7 @@ Parameters:
 
 <details><summary><code>proxy_announced(delegate, real, force_proxy_type, call)</code></summary>
 
-Taking 0.0198 % of a block.
+Taking 0.0187 % of a block.
 
 ```rust
 delegate: AccountIdLookupOf<T>
@@ -1266,7 +1310,7 @@ Parameters:
 
 <details><summary><code>batch(calls)</code></summary>
 
-Taking 0.1076 % of a block.
+Taking 0.1152 % of a block.
 
 ```rust
 calls: Vec<<T as Config>::RuntimeCall>
@@ -1298,7 +1342,7 @@ event is deposited.
 
 <details><summary><code>as_derivative(index, call)</code></summary>
 
-Taking 0.0046 % of a block.
+Taking 0.0048 % of a block.
 
 ```rust
 index: u16
@@ -1326,7 +1370,7 @@ The dispatch origin for this call must be _Signed_.
 
 <details><summary><code>batch_all(calls)</code></summary>
 
-Taking 0.1148 % of a block.
+Taking 0.123 % of a block.
 
 ```rust
 calls: Vec<<T as Config>::RuntimeCall>
@@ -1353,7 +1397,7 @@ includes bypassing `frame_system::Config::BaseCallFilter`).
 
 <details><summary><code>force_batch(calls)</code></summary>
 
-Taking 0.1074 % of a block.
+Taking 0.1152 % of a block.
 
 ```rust
 calls: Vec<<T as Config>::RuntimeCall>
@@ -1382,7 +1426,7 @@ includes bypassing `frame_system::Config::BaseCallFilter`).
 
 <details><summary><code>spend_local(amount, beneficiary)</code></summary>
 
-Taking 0.0044 % of a block.
+Taking 0.0046 % of a block.
 
 ```rust
 amount: BalanceOf<T, I>
@@ -1449,7 +1493,7 @@ The original deposit will no longer be returned.
 
 <details><summary><code>spend(asset_kind, amount, beneficiary, valid_from)</code></summary>
 
-Taking 0.0044 % of a block.
+Taking 0.0046 % of a block.
 
 ```rust
 asset_kind: Box<T::AssetKind>
@@ -1492,7 +1536,7 @@ Emits [`Event::AssetSpendApproved`] if successful.
 
 <details><summary><code>payout(index)</code></summary>
 
-Taking 0.0057 % of a block.
+Taking 0.0056 % of a block.
 
 ```rust
 index: SpendIndex
@@ -1525,7 +1569,7 @@ Emits [`Event::Paid`] if successful.
 
 <details><summary><code>check_status(index)</code></summary>
 
-Taking 0.0057 % of a block.
+Taking 0.0056 % of a block.
 
 ```rust
 index: SpendIndex
diff --git a/docs/api/runtime-constants.md b/docs/api/runtime-constants.md
new file mode 100644
index 0000000000000000000000000000000000000000..b7810d69b1f50157ba9825032d782592196936d6
--- /dev/null
+++ b/docs/api/runtime-constants.md
@@ -0,0 +1,1280 @@
+# Runtime Constant
+
+There are **69** constants from **35** pallets.
+
+<ul>
+
+<li>System - 0
+<ul>
+
+<li>
+<details>
+<summary>
+<code>BlockWeights</code>
+</summary>
+ Block & extrinsics weights: base values and limits.
+
+```rust
+value: frame_system::limits::BlockWeights({ base_block: { ref_time: 431614000, proof_size: 0 }, max_block: { ref_time: 2000000000000, proof_size: 18446744073709551615 }, per_class: { normal: { base_extrinsic: { ref_time: 108157000, proof_size: 0 }, max_extrinsic: Some ({ ref_time: 1299891843000, proof_size: 11990383647911208550 }), max_total: Some ({ ref_time: 1500000000000, proof_size: 13835058055282163711 }), reserved: Some ({ ref_time: 0, proof_size: 0 }) }, operational: { base_extrinsic: { ref_time: 108157000, proof_size: 0 }, max_extrinsic: Some ({ ref_time: 1799891843000, proof_size: 16602069666338596454 }), max_total: Some ({ ref_time: 2000000000000, proof_size: 18446744073709551615 }), reserved: Some ({ ref_time: 500000000000, proof_size: 4611686018427387904 }) }, mandatory: { base_extrinsic: { ref_time: 108157000, proof_size: 0 }, max_extrinsic: None (), max_total: None (), reserved: None () } } })
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>BlockLength</code>
+</summary>
+ The maximum length of a block (in bytes).
+
+```rust
+value: frame_system::limits::BlockLength({ max: { normal: 3932160, operational: 5242880, mandatory: 5242880 } })
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>BlockHashCount</code>
+</summary>
+ Maximum number of block number to block hash mappings to keep (oldest pruned first).
+
+```rust
+value: U32(2400)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>DbWeight</code>
+</summary>
+ The weight of runtime database operations the runtime can invoke.
+
+```rust
+value: sp_weights::RuntimeDbWeight({ read: 14314000, write: 99642000 })
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Version</code>
+</summary>
+ Get the chain's in-code version.
+
+```rust
+value: sp_version::RuntimeVersion({ spec_name: ("gdev"), impl_name: ("duniter-gdev"), authoring_version: 1, spec_version: 800, impl_version: 1, apis: ((((104, 122, 212, 74, 211, 127, 3, 194), 1), ((203, 202, 37, 227, 159, 20, 35, 135), 2), ((223, 106, 203, 104, 153, 7, 96, 155), 5), ((55, 227, 151, 252, 124, 145, 245, 228), 2), ((64, 254, 58, 212, 1, 248, 149, 154), 6), ((210, 188, 152, 151, 238, 208, 143, 21), 3), ((247, 139, 39, 139, 229, 63, 69, 76), 2), ((171, 60, 5, 114, 41, 31, 235, 139), 1), ((237, 153, 197, 172, 178, 94, 237, 245), 3), ((188, 157, 137, 144, 79, 91, 146, 63), 1), ((55, 200, 187, 19, 80, 169, 162, 168), 4), ((251, 197, 119, 185, 215, 71, 239, 214), 1))), transaction_version: 1, system_version: 1 })
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>SS58Prefix</code>
+</summary>
+ The designated SS58 prefix of this chain.
+
+ This replaces the "ss58Format" property declared in the chain spec. Reason is
+ that the runtime should know about the prefix in order to make use of it as
+ an identifier of the chain.
+
+```rust
+value: U16(42)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Account - 1
+<ul>
+
+</ul>
+</li>
+
+<li>Scheduler - 2
+<ul>
+
+<li>
+<details>
+<summary>
+<code>MaximumWeight</code>
+</summary>
+ The maximum weight that may be scheduled per block for any dispatchables.
+
+```rust
+value: sp_weights::weight_v2::Weight({ ref_time: 1600000000000, proof_size: 14757395258967641292 })
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxScheduledPerBlock</code>
+</summary>
+ The maximum number of scheduled calls in the queue for a single block.
+
+ NOTE:
+ + Dependent pallets' benchmarks might require a higher limit for the setting. Set a
+ higher limit under `runtime-benchmarks` feature.
+
+```rust
+value: U32(50)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Babe - 3
+<ul>
+
+<li>
+<details>
+<summary>
+<code>EpochDuration</code>
+</summary>
+ The amount of time, in slots, that each epoch should last.
+ NOTE: Currently it is not possible to change the epoch duration after
+ the chain has started. Attempting to do so will brick block production.
+
+```rust
+value: U64(30)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ExpectedBlockTime</code>
+</summary>
+ The expected average block time at which BABE should be creating
+ blocks. Since BABE is probabilistic it is not trivial to figure out
+ what the expected average block time should be based on the slot
+ duration and the security parameter `c` (where `1 - c` represents
+ the probability of a slot being empty).
+
+```rust
+value: U64(6000)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxAuthorities</code>
+</summary>
+ Max number of authorities allowed
+
+```rust
+value: U32(32)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxNominators</code>
+</summary>
+ The maximum number of nominators for each validator.
+
+```rust
+value: U32(64)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Timestamp - 4
+<ul>
+
+<li>
+<details>
+<summary>
+<code>MinimumPeriod</code>
+</summary>
+ The minimum period between blocks.
+
+ Be aware that this is different to the *expected* period that the block production
+ apparatus provides. Your chosen consensus system will generally work with this to
+ determine a sensible block time. For example, in the Aura pallet it will be double this
+ period on default settings.
+
+```rust
+value: U64(3000)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Parameters - 5
+<ul>
+
+</ul>
+</li>
+
+<li>Balances - 6
+<ul>
+
+<li>
+<details>
+<summary>
+<code>ExistentialDeposit</code>
+</summary>
+ The minimum amount required to keep an account open. MUST BE GREATER THAN ZERO!
+
+ If you *really* need it to be zero, you can enable the feature `insecure_zero_ed` for
+ this pallet. However, you do so at your own risk: this will open up a major DoS vector.
+ In case you have multiple sources of provider references, you may also get unexpected
+ behaviour if you set this to zero.
+
+ Bottom line: Do yourself a favour and make it at least one!
+
+```rust
+value: U64(100)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxLocks</code>
+</summary>
+ The maximum number of locks that should exist on an account.
+ Not strictly enforced, but used for weight estimation.
+
+ Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`
+
+```rust
+value: U32(50)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxReserves</code>
+</summary>
+ The maximum number of named reserves that can exist on an account.
+
+ Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`
+
+```rust
+value: U32(5)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxFreezes</code>
+</summary>
+ The maximum number of individual freeze locks that can exist on an account at any time.
+
+```rust
+value: U32(0)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>TransactionPayment - 32
+<ul>
+
+<li>
+<details>
+<summary>
+<code>OperationalFeeMultiplier</code>
+</summary>
+ A fee multiplier for `Operational` extrinsics to compute "virtual tip" to boost their
+ `priority`
+
+ This value is multiplied by the `final_fee` to obtain a "virtual tip" that is later
+ added to a tip component in regular `priority` calculations.
+ It means that a `Normal` transaction can front-run a similarly-sized `Operational`
+ extrinsic (with no tip), by including a tip value greater than the virtual tip.
+
+ ```rust,ignore
+ // For `Normal`
+ let priority = priority_calc(tip);
+
+ // For `Operational`
+ let virtual_tip = (inclusion_fee + tip) * OperationalFeeMultiplier;
+ let priority = priority_calc(tip + virtual_tip);
+ ```
+
+ Note that since we use `final_fee` the multiplier applies also to the regular `tip`
+ sent with the transaction. So, not only does the transaction get a priority bump based
+ on the `inclusion_fee`, but we also amplify the impact of tips applied to `Operational`
+ transactions.
+
+```rust
+value: U8(5)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>OneshotAccount - 7
+<ul>
+
+</ul>
+</li>
+
+<li>Quota - 66
+<ul>
+
+<li>
+<details>
+<summary>
+<code>RefundAccount</code>
+</summary>
+ Account used to refund fees.
+
+```rust
+value: sp_core::crypto::AccountId32(((109, 111, 100, 108, 112, 121, 47, 116, 114, 115, 114, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)))
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>SmithMembers - 10
+<ul>
+
+<li>
+<details>
+<summary>
+<code>MaxByIssuer</code>
+</summary>
+ Maximum number of active certifications per issuer.
+
+```rust
+value: U32(8)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MinCertForMembership</code>
+</summary>
+ Minimum number of certifications required to become a Smith.
+
+```rust
+value: U32(2)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>SmithInactivityMaxDuration</code>
+</summary>
+ Maximum duration of inactivity allowed before a Smith is removed.
+
+```rust
+value: U32(48)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>AuthorityMembers - 11
+<ul>
+
+<li>
+<details>
+<summary>
+<code>MaxAuthorities</code>
+</summary>
+ Maximum number of authorities allowed.
+
+```rust
+value: U32(32)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Authorship - 12
+<ul>
+
+</ul>
+</li>
+
+<li>Offences - 13
+<ul>
+
+</ul>
+</li>
+
+<li>Historical - 14
+<ul>
+
+</ul>
+</li>
+
+<li>Session - 15
+<ul>
+
+</ul>
+</li>
+
+<li>Grandpa - 16
+<ul>
+
+<li>
+<details>
+<summary>
+<code>MaxAuthorities</code>
+</summary>
+ Max Authorities in use
+
+```rust
+value: U32(32)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxNominators</code>
+</summary>
+ The maximum number of nominators for each validator.
+
+```rust
+value: U32(64)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxSetIdSessionEntries</code>
+</summary>
+ The maximum number of entries to keep in the set id to session index mapping.
+
+ Since the `SetIdSession` map is only used for validating equivocations this
+ value should relate to the bonding duration of whatever staking system is
+ being used (if any). If equivocation handling is not enabled then this value
+ can be zero.
+
+```rust
+value: U64(1000)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>ImOnline - 17
+<ul>
+
+<li>
+<details>
+<summary>
+<code>UnsignedPriority</code>
+</summary>
+ A configuration for base priority of unsigned transactions.
+
+ This is exposed so that it can be tuned for particular runtime, when
+ multiple pallets send unsigned transactions.
+
+```rust
+value: U64(18446744073709551615)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>AuthorityDiscovery - 18
+<ul>
+
+</ul>
+</li>
+
+<li>Sudo - 20
+<ul>
+
+</ul>
+</li>
+
+<li>UpgradeOrigin - 21
+<ul>
+
+</ul>
+</li>
+
+<li>Preimage - 22
+<ul>
+
+</ul>
+</li>
+
+<li>TechnicalCommittee - 23
+<ul>
+
+<li>
+<details>
+<summary>
+<code>MaxProposalWeight</code>
+</summary>
+ The maximum weight of a dispatch call that can be proposed and executed.
+
+```rust
+value: sp_weights::weight_v2::Weight({ ref_time: 1000000000000, proof_size: 9223372036854775807 })
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>UniversalDividend - 30
+<ul>
+
+<li>
+<details>
+<summary>
+<code>MaxPastReeval</code>
+</summary>
+ Maximum number of past UD revaluations to keep in storage.
+
+```rust
+value: U32(160)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>SquareMoneyGrowthRate</code>
+</summary>
+ Square of the money growth rate per UD reevaluation period.
+
+```rust
+value: sp_arithmetic::per_things::Perbill((2381440))
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>UdCreationPeriod</code>
+</summary>
+ Universal dividend creation period in milliseconds.
+
+```rust
+value: U64(60000)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>UdReevalPeriod</code>
+</summary>
+ Universal dividend reevaluation period in milliseconds.
+
+```rust
+value: U64(1200000)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Wot - 40
+<ul>
+
+<li>
+<details>
+<summary>
+<code>FirstIssuableOn</code>
+</summary>
+ The block number from which the first certification can be issued.
+
+```rust
+value: U32(20)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MinCertForMembership</code>
+</summary>
+ The minimum number of certifications required for membership eligibility.
+
+```rust
+value: U32(2)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MinCertForCreateIdtyRight</code>
+</summary>
+ The minimum number of certifications required to create an identity.
+
+```rust
+value: U32(2)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Identity - 41
+<ul>
+
+<li>
+<details>
+<summary>
+<code>ConfirmPeriod</code>
+</summary>
+ The period during which the owner can confirm the new identity.
+
+```rust
+value: U32(40)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ValidationPeriod</code>
+</summary>
+ The period during which the identity has to be validated to become a member.
+
+```rust
+value: U32(876600)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>AutorevocationPeriod</code>
+</summary>
+ The period before which an identity that lost membership is automatically revoked.
+
+```rust
+value: U32(438300)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>DeletionPeriod</code>
+</summary>
+ The period after which a revoked identity is removed and the keys are freed.
+
+```rust
+value: U32(438300)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ChangeOwnerKeyPeriod</code>
+</summary>
+ The minimum duration between two owner key changes to prevent identity theft.
+
+```rust
+value: U32(100800)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>IdtyCreationPeriod</code>
+</summary>
+ The minimum duration between the creation of two identities by the same creator.
+ Should be greater than or equal to the certification period defined in the certification pallet.
+
+```rust
+value: U32(50)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Membership - 42
+<ul>
+
+<li>
+<details>
+<summary>
+<code>MembershipPeriod</code>
+</summary>
+ Maximum lifespan of a single membership (in number of blocks).
+
+```rust
+value: U32(1000)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MembershipRenewalPeriod</code>
+</summary>
+ Minimum delay to wait before renewing membership, i.e., asking for distance evaluation.
+
+```rust
+value: U32(1000)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Certification - 43
+<ul>
+
+<li>
+<details>
+<summary>
+<code>CertPeriod</code>
+</summary>
+ The minimum duration (in blocks) between two certifications issued by the same issuer.
+
+```rust
+value: U32(15)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxByIssuer</code>
+</summary>
+ The maximum number of active certifications that can be issued by a single issuer.
+
+```rust
+value: U32(10)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MinReceivedCertToBeAbleToIssueCert</code>
+</summary>
+ The minimum number of certifications received that an identity must have
+ to be allowed to issue a certification.
+
+```rust
+value: U32(2)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ValidityPeriod</code>
+</summary>
+ The duration (in blocks) for which a certification remains valid.
+
+```rust
+value: U32(1000)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Distance - 44
+<ul>
+
+<li>
+<details>
+<summary>
+<code>EvaluationPrice</code>
+</summary>
+ The amount reserved during evaluation.
+
+```rust
+value: U64(1000)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>EvaluationPeriod</code>
+</summary>
+ The evaluation period in blocks.
+ Since the evaluation uses 3 pools, the total evaluation time will be 3 * EvaluationPeriod.
+
+```rust
+value: U32(7)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxRefereeDistance</code>
+</summary>
+ The maximum distance used to define a referee's accessibility.
+ This value is not used by the runtime but is needed by the client distance oracle.
+
+```rust
+value: U32(5)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MinAccessibleReferees</code>
+</summary>
+ The minimum ratio of accessible referees required.
+
+```rust
+value: sp_arithmetic::per_things::Perbill((800000000))
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>AtomicSwap - 50
+<ul>
+
+<li>
+<details>
+<summary>
+<code>ProofLimit</code>
+</summary>
+ Limit of proof size.
+
+ Atomic swap is only atomic if once the proof is revealed, both parties can submit the
+ proofs on-chain. If A is the one that generates the proof, then it requires that either:
+ - A's blockchain has the same proof length limit as B's blockchain.
+ - Or A's blockchain has shorter proof length limit as B's blockchain.
+
+ If B sees A is on a blockchain with larger proof length limit, then it should kindly
+ refuse to accept the atomic swap request if A generates the proof, and asks that B
+ generates the proof instead.
+
+```rust
+value: U32(1024)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Multisig - 51
+<ul>
+
+<li>
+<details>
+<summary>
+<code>DepositBase</code>
+</summary>
+ The base amount of currency needed to reserve for creating a multisig execution or to
+ store a dispatch call for later.
+
+ This is held for an additional storage item whose value size is
+ `4 + sizeof((BlockNumber, Balance, AccountId))` bytes and whose key size is
+ `32 + sizeof(AccountId)` bytes.
+
+```rust
+value: U64(100)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>DepositFactor</code>
+</summary>
+ The amount of currency needed per unit threshold when creating a multisig execution.
+
+ This is held for adding 32 bytes more into a pre-existing storage value.
+
+```rust
+value: U64(32)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxSignatories</code>
+</summary>
+ The maximum amount of signatories allowed in the multisig.
+
+```rust
+value: U32(10)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>ProvideRandomness - 52
+<ul>
+
+<li>
+<details>
+<summary>
+<code>MaxRequests</code>
+</summary>
+ Maximum number of not yet filled requests.
+
+```rust
+value: U32(100)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>RequestPrice</code>
+</summary>
+ The price of a request.
+
+```rust
+value: U64(2000)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Proxy - 53
+<ul>
+
+<li>
+<details>
+<summary>
+<code>ProxyDepositBase</code>
+</summary>
+ The base amount of currency needed to reserve for creating a proxy.
+
+ This is held for an additional storage item whose value size is
+ `sizeof(Balance)` bytes and whose key size is `sizeof(AccountId)` bytes.
+
+```rust
+value: U64(108)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ProxyDepositFactor</code>
+</summary>
+ The amount of currency needed per proxy added.
+
+ This is held for adding 32 bytes plus an instance of `ProxyType` more into a
+ pre-existing storage value. Thus, when configuring `ProxyDepositFactor` one should take
+ into account `32 + proxy_type.encode().len()` bytes of data.
+
+```rust
+value: U64(33)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxProxies</code>
+</summary>
+ The maximum amount of proxies allowed for a single account.
+
+```rust
+value: U32(32)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxPending</code>
+</summary>
+ The maximum amount of time-delayed announcements that are allowed to be pending.
+
+```rust
+value: U32(32)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>AnnouncementDepositBase</code>
+</summary>
+ The base amount of currency needed to reserve for creating an announcement.
+
+ This is held when a new storage item holding a `Balance` is created (typically 16
+ bytes).
+
+```rust
+value: U64(108)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>AnnouncementDepositFactor</code>
+</summary>
+ The amount of currency needed per announcement made.
+
+ This is held for adding an `AccountId`, `Hash` and `BlockNumber` (typically 68 bytes)
+ into a pre-existing storage value.
+
+```rust
+value: U64(66)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Utility - 54
+<ul>
+
+<li>
+<details>
+<summary>
+<code>batched_calls_limit</code>
+</summary>
+ The limit on the number of batched calls.
+
+```rust
+value: U32(10922)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Treasury - 55
+<ul>
+
+<li>
+<details>
+<summary>
+<code>SpendPeriod</code>
+</summary>
+ Period between successive spends.
+
+```rust
+value: U32(14400)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Burn</code>
+</summary>
+ Percentage of spare funds (if any) that are burnt per spend period.
+
+```rust
+value: sp_arithmetic::per_things::Permill((0))
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>PalletId</code>
+</summary>
+ The treasury's pallet id, used for deriving its sovereign account ID.
+
+```rust
+value: frame_support::PalletId(((112, 121, 47, 116, 114, 115, 114, 121)))
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MaxApprovals</code>
+</summary>
+ DEPRECATED: associated with `spend_local` call and will be removed in May 2025.
+ Refer to <https://github.com/paritytech/polkadot-sdk/pull/5961> for migration to `spend`.
+
+ The maximum number of approvals that can wait in the spending queue.
+
+ NOTE: This parameter is also used within the Bounties Pallet extension if enabled.
+
+```rust
+value: U32(100)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>PayoutPeriod</code>
+</summary>
+ The period during which an approved treasury spend has to be claimed.
+
+```rust
+value: U32(10)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+</ul>
diff --git a/docs/api/runtime-errors.md b/docs/api/runtime-errors.md
index ead935a5d35710a25df4d3e3b5acf6a9118d329e..6f0de162fa6b4dbb88c05090f34c292f1bdfdaeb 100644
--- a/docs/api/runtime-errors.md
+++ b/docs/api/runtime-errors.md
@@ -1,6 +1,6 @@
 # Runtime errors
 
-There are **191** errors from **35** pallets.
+There are **192** errors from **35** pallets.
 
 <ul>
 <li>System - 0
@@ -778,6 +778,13 @@ The given length bound for the proposal was too low.
 Prime account is not a member
 </details>
 </li>
+<li>
+<details>
+<summary>
+<code>ProposalActive</code> - 11</summary>
+Proposal is still active.
+</details>
+</li>
 </ul>
 </li>
 <li>UniversalDividend - 30
diff --git a/docs/api/runtime-errors.po b/docs/api/runtime-errors.po
index f16ca07c1442240f65e612a00423617d59309782..5438db6c8d8dfe82cb2c57188e06b0707533ac8f 100644
--- a/docs/api/runtime-errors.po
+++ b/docs/api/runtime-errors.po
@@ -198,6 +198,8 @@ msgid "TechnicalCommittee.WrongProposalLength"
 msgstr "The given length bound for the proposal was too low."
 msgid "TechnicalCommittee.PrimeAccountNotMember"
 msgstr "Prime account is not a member"
+msgid "TechnicalCommittee.ProposalActive"
+msgstr "Proposal is still active."
 msgid "UniversalDividend.AccountNotAllowedToClaimUds"
 msgstr "This account is not allowed to claim UDs."
 msgid "Wot.NotEnoughCerts"
diff --git a/docs/api/runtime-events.md b/docs/api/runtime-events.md
index f843ea5eb6e87ef3595de8da477dbeff6ae1920c..527057e9f763b3722a671c7045fc2378cefa6e90 100644
--- a/docs/api/runtime-events.md
+++ b/docs/api/runtime-events.md
@@ -1,6 +1,6 @@
 # Runtime events
 
-There are **136** events from **35** pallets.
+There are **139** events from **35** pallets.
 
 <ul>
 <li>System - 0
@@ -12,7 +12,7 @@ There are **136** events from **35** pallets.
 An extrinsic completed successfully.
 
 ```rust
-dispatch_info: DispatchInfo
+dispatch_info: DispatchEventInfo
 ```
 
 </details>
@@ -25,7 +25,7 @@ An extrinsic failed.
 
 ```rust
 dispatch_error: DispatchError
-dispatch_info: DispatchInfo
+dispatch_info: DispatchEventInfo
 ```
 
 </details>
@@ -1183,6 +1183,44 @@ yes: MemberCount
 no: MemberCount
 ```
 
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Killed(proposal_hash)</code> - 7</summary>
+A proposal was killed.
+
+```rust
+proposal_hash: T::Hash
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ProposalCostBurned(proposal_hash, who)</code> - 8</summary>
+Some cost for storing a proposal was burned.
+
+```rust
+proposal_hash: T::Hash
+who: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ProposalCostReleased(proposal_hash, who)</code> - 9</summary>
+Some cost for storing a proposal was released.
+
+```rust
+proposal_hash: T::Hash
+who: T::AccountId
+```
+
 </details>
 </li>
 </ul>
@@ -1270,12 +1308,11 @@ owner_key: T::AccountId
 <li>
 <details>
 <summary>
-<code>IdtyConfirmed(idty_index, owner_key, name)</code> - 1</summary>
+<code>IdtyConfirmed(idty_index, name)</code> - 1</summary>
 An identity has been confirmed by its owner.
 
 ```rust
 idty_index: T::IdtyIndex
-owner_key: T::AccountId
 name: IdtyName
 ```
 
diff --git a/docs/api/runtime-storages.md b/docs/api/runtime-storages.md
new file mode 100644
index 0000000000000000000000000000000000000000..20561505909477abe8ba8578db750048ae3583cd
--- /dev/null
+++ b/docs/api/runtime-storages.md
@@ -0,0 +1,2359 @@
+# Runtime Storage
+
+There are **139** storages from **35** pallets.
+
+<ul>
+
+<li>System - 0
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Account</code>
+</summary>
+ The full account information for a particular account ID.
+
+```rust
+key: sp_core::crypto::AccountId32
+value: frame_system::AccountInfo<U32, pallet_duniter_account::types::AccountData<U64, U32>>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ExtrinsicCount</code>
+</summary>
+ Total extrinsics count for the current block.
+
+```rust
+value: Option<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>InherentsApplied</code>
+</summary>
+ Whether all inherents have been applied.
+
+```rust
+value: Bool
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>BlockWeight</code>
+</summary>
+ The current weight for the block.
+
+```rust
+value: frame_support::dispatch::PerDispatchClass<sp_weights::weight_v2::Weight>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>AllExtrinsicsLen</code>
+</summary>
+ Total length (in bytes) for all extrinsics put together, for the current block.
+
+```rust
+value: Option<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>BlockHash</code>
+</summary>
+ Map of block numbers to block hashes.
+
+```rust
+key: U32
+value: primitive_types::H256
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ExtrinsicData</code>
+</summary>
+ Extrinsics data for the current block (maps an extrinsic's index to its data).
+
+```rust
+key: U32
+value: Vec<U8>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Number</code>
+</summary>
+ The current block number being processed. Set by `execute_block`.
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ParentHash</code>
+</summary>
+ Hash of the previous block.
+
+```rust
+value: primitive_types::H256
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Digest</code>
+</summary>
+ Digest of the current block, also part of the block header.
+
+```rust
+value: sp_runtime::generic::digest::Digest
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Events</code>
+</summary>
+ Events deposited for the current block.
+
+ NOTE: The item is unbound and should therefore never be read on chain.
+ It could otherwise inflate the PoV size of a block.
+
+ Events have a large in-memory size. Box the events to not go out-of-memory
+ just in case someone still reads them from within the runtime.
+
+```rust
+value: Vec<frame_system::EventRecord<gdev_runtime::RuntimeEvent, primitive_types::H256>>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>EventCount</code>
+</summary>
+ The number of events in the `Events<T>` list.
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>EventTopics</code>
+</summary>
+ Mapping between a topic (represented by T::Hash) and a vector of indexes
+ of events in the `<Events<T>>` list.
+
+ All topic vectors have deterministic storage locations depending on the topic. This
+ allows light-clients to leverage the changes trie storage tracking mechanism and
+ in case of changes fetch the list of events of interest.
+
+ The value has the type `(BlockNumberFor<T>, EventIndex)` because if we used only just
+ the `EventIndex` then in case if the topic has the same contents on the next block
+ no notification will be triggered thus the event might be lost.
+
+```rust
+key: primitive_types::H256
+value: Vec<(U32, U32)>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>LastRuntimeUpgrade</code>
+</summary>
+ Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.
+
+```rust
+value: Option<frame_system::LastRuntimeUpgradeInfo>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>UpgradedToU32RefCount</code>
+</summary>
+ True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.
+
+```rust
+value: Bool
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>UpgradedToTripleRefCount</code>
+</summary>
+ True if we have upgraded so that AccountInfo contains three types of `RefCount`. False
+ (default) if not.
+
+```rust
+value: Bool
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ExecutionPhase</code>
+</summary>
+ The execution phase of the block.
+
+```rust
+value: Option<frame_system::Phase>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>AuthorizedUpgrade</code>
+</summary>
+ `Some` if a code upgrade has been authorized.
+
+```rust
+value: Option<frame_system::CodeUpgradeAuthorization<>>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Account - 1
+<ul>
+
+</ul>
+</li>
+
+<li>Scheduler - 2
+<ul>
+
+<li>
+<details>
+<summary>
+<code>IncompleteSince</code>
+</summary>
+
+
+```rust
+value: Option<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Agenda</code>
+</summary>
+ Items to be executed, indexed by the block number that they should be executed on.
+
+```rust
+key: U32
+value: bounded_collections::bounded_vec::BoundedVec<Option<pallet_scheduler::Scheduled<[U8; 32], frame_support::traits::preimages::Bounded<gdev_runtime::RuntimeCall, sp_runtime::traits::BlakeTwo256>, U32, gdev_runtime::OriginCaller, sp_core::crypto::AccountId32>>, >
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Retries</code>
+</summary>
+ Retry configurations for items to be executed, indexed by task address.
+
+```rust
+key: (U32, U32)
+value: pallet_scheduler::RetryConfig<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Lookup</code>
+</summary>
+ Lookup from a name to the block number and index of the task.
+
+ For v3 -> v4 the previously unbounded identities are Blake2-256 hashed to form the v4
+ identities.
+
+```rust
+key: [U8; 32]
+value: (U32, U32)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Babe - 3
+<ul>
+
+<li>
+<details>
+<summary>
+<code>EpochIndex</code>
+</summary>
+ Current epoch index.
+
+```rust
+value: U64
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Authorities</code>
+</summary>
+ Current epoch authorities.
+
+```rust
+value: bounded_collections::weak_bounded_vec::WeakBoundedVec<(sp_consensus_babe::app::Public, U64), >
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>GenesisSlot</code>
+</summary>
+ The slot at which the first epoch actually started. This is 0
+ until the first block of the chain.
+
+```rust
+value: sp_consensus_slots::Slot
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>CurrentSlot</code>
+</summary>
+ Current slot number.
+
+```rust
+value: sp_consensus_slots::Slot
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Randomness</code>
+</summary>
+ The epoch randomness for the *current* epoch.
+
+ # Security
+
+ This MUST NOT be used for gambling, as it can be influenced by a
+ malicious validator in the short term. It MAY be used in many
+ cryptographic protocols, however, so long as one remembers that this
+ (like everything else on-chain) it is public. For example, it can be
+ used where a number is needed that cannot have been chosen by an
+ adversary, for purposes such as public-coin zero-knowledge proofs.
+
+```rust
+value: [U8; 32]
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>PendingEpochConfigChange</code>
+</summary>
+ Pending epoch configuration change that will be applied when the next epoch is enacted.
+
+```rust
+value: Option<sp_consensus_babe::digests::NextConfigDescriptor>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>NextRandomness</code>
+</summary>
+ Next epoch randomness.
+
+```rust
+value: [U8; 32]
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>NextAuthorities</code>
+</summary>
+ Next epoch authorities.
+
+```rust
+value: bounded_collections::weak_bounded_vec::WeakBoundedVec<(sp_consensus_babe::app::Public, U64), >
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>SegmentIndex</code>
+</summary>
+ Randomness under construction.
+
+ We make a trade-off between storage accesses and list length.
+ We store the under-construction randomness in segments of up to
+ `UNDER_CONSTRUCTION_SEGMENT_LENGTH`.
+
+ Once a segment reaches this length, we begin the next one.
+ We reset all segments and return to `0` at the beginning of every
+ epoch.
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>UnderConstruction</code>
+</summary>
+ TWOX-NOTE: `SegmentIndex` is an increasing integer, so this is okay.
+
+```rust
+key: U32
+value: bounded_collections::bounded_vec::BoundedVec<[U8; 32], >
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Initialized</code>
+</summary>
+ Temporary value (cleared at block finalization) which is `Some`
+ if per-block initialization has already been called for current block.
+
+```rust
+value: Option<Option<sp_consensus_babe::digests::PreDigest>>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>AuthorVrfRandomness</code>
+</summary>
+ This field should always be populated during block processing unless
+ secondary plain slots are enabled (which don't contain a VRF output).
+
+ It is set in `on_finalize`, before it will contain the value from the last block.
+
+```rust
+value: Option<[U8; 32]>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>EpochStart</code>
+</summary>
+ The block numbers when the last and current epoch have started, respectively `N-1` and
+ `N`.
+ NOTE: We track this is in order to annotate the block number when a given pool of
+ entropy was fixed (i.e. it was known to chain observers). Since epochs are defined in
+ slots, which may be skipped, the block numbers may not line up with the slot numbers.
+
+```rust
+value: (U32, U32)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Lateness</code>
+</summary>
+ How late the current block is compared to its parent.
+
+ This entry is populated as part of block execution and is cleaned up
+ on block finalization. Querying this storage entry outside of block
+ execution context should always yield zero.
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>EpochConfig</code>
+</summary>
+ The configuration for the current epoch. Should never be `None` as it is initialized in
+ genesis.
+
+```rust
+value: Option<sp_consensus_babe::BabeEpochConfiguration>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>NextEpochConfig</code>
+</summary>
+ The configuration for the next epoch, `None` if the config will not change
+ (you can fallback to `EpochConfig` instead in that case).
+
+```rust
+value: Option<sp_consensus_babe::BabeEpochConfiguration>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>SkippedEpochs</code>
+</summary>
+ A list of the last 100 skipped epochs and the corresponding session index
+ when the epoch was skipped.
+
+ This is only used for validating equivocation proofs. An equivocation proof
+ must contains a key-ownership proof for a given session, therefore we need a
+ way to tie together sessions and epoch indices, i.e. we need to validate that
+ a validator was the owner of a given key on a given session, and what the
+ active epoch index was during that session.
+
+```rust
+value: bounded_collections::bounded_vec::BoundedVec<(U64, U32), >
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Timestamp - 4
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Now</code>
+</summary>
+ The current time for the current block.
+
+```rust
+value: U64
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>DidUpdate</code>
+</summary>
+ Whether the timestamp has been updated in this block.
+
+ This value is updated to `true` upon successful submission of a timestamp by a node.
+ It is then checked at the end of each block execution in the `on_finalize` hook.
+
+```rust
+value: Bool
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Parameters - 5
+<ul>
+
+<li>
+<details>
+<summary>
+<code>ParametersStorage</code>
+</summary>
+
+
+```rust
+value: pallet_duniter_test_parameters::types::Parameters<U32, U32, U64, U32>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Balances - 6
+<ul>
+
+<li>
+<details>
+<summary>
+<code>TotalIssuance</code>
+</summary>
+ The total units issued in the system.
+
+```rust
+value: U64
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>InactiveIssuance</code>
+</summary>
+ The total units of outstanding deactivated balance in the system.
+
+```rust
+value: U64
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Account</code>
+</summary>
+ The Balances pallet example of storing the balance of an account.
+
+ # Example
+
+ ```nocompile
+  impl pallet_balances::Config for Runtime {
+    type AccountStore = StorageMapShim<Self::Account<Runtime>, frame_system::Provider<Runtime>, AccountId, Self::AccountData<Balance>>
+  }
+ ```
+
+ You can also store the balance of an account in the `System` pallet.
+
+ # Example
+
+ ```nocompile
+  impl pallet_balances::Config for Runtime {
+   type AccountStore = System
+  }
+ ```
+
+ But this comes with tradeoffs, storing account balances in the system pallet stores
+ `frame_system` data alongside the account data contrary to storing account balances in the
+ `Balances` pallet, which uses a `StorageMap` to store balances data only.
+ NOTE: This is only used in the case that this pallet is used to store balances.
+
+```rust
+key: sp_core::crypto::AccountId32
+value: pallet_balances::types::AccountData<U64>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Locks</code>
+</summary>
+ Any liquidity locks on some account balances.
+ NOTE: Should only be accessed when setting, changing and freeing a lock.
+
+ Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`
+
+```rust
+key: sp_core::crypto::AccountId32
+value: bounded_collections::weak_bounded_vec::WeakBoundedVec<pallet_balances::types::BalanceLock<U64>, >
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Reserves</code>
+</summary>
+ Named reserves on some account balances.
+
+ Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`
+
+```rust
+key: sp_core::crypto::AccountId32
+value: bounded_collections::bounded_vec::BoundedVec<pallet_balances::types::ReserveData<[U8; 8], U64>, >
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Holds</code>
+</summary>
+ Holds on account balances.
+
+```rust
+key: sp_core::crypto::AccountId32
+value: bounded_collections::bounded_vec::BoundedVec<frame_support::traits::tokens::misc::IdAmount<gdev_runtime::RuntimeHoldReason, U64>, >
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Freezes</code>
+</summary>
+ Freeze locks on account balances.
+
+```rust
+key: sp_core::crypto::AccountId32
+value: bounded_collections::bounded_vec::BoundedVec<frame_support::traits::tokens::misc::IdAmount<(), U64>, >
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>TransactionPayment - 32
+<ul>
+
+<li>
+<details>
+<summary>
+<code>NextFeeMultiplier</code>
+</summary>
+
+
+```rust
+value: sp_arithmetic::fixed_point::FixedU128
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>StorageVersion</code>
+</summary>
+
+
+```rust
+value: pallet_transaction_payment::Releases
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>OneshotAccount - 7
+<ul>
+
+<li>
+<details>
+<summary>
+<code>OneshotAccounts</code>
+</summary>
+ The balance for each oneshot account.
+
+```rust
+key: sp_core::crypto::AccountId32
+value: U64
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Quota - 66
+<ul>
+
+<li>
+<details>
+<summary>
+<code>IdtyQuota</code>
+</summary>
+ The quota for each identity.
+
+```rust
+key: U32
+value: pallet_quota::pallet::Quota<U32, U64>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>RefundQueue</code>
+</summary>
+ The fees waiting to be refunded.
+
+```rust
+value: bounded_collections::bounded_vec::BoundedVec<pallet_quota::pallet::Refund<sp_core::crypto::AccountId32, U32, U64>, >
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>SmithMembers - 10
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Smiths</code>
+</summary>
+ The Smith metadata for each identity.
+
+```rust
+key: U32
+value: pallet_smith_members::types::SmithMeta<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ExpiresOn</code>
+</summary>
+ The indexes of Smith to remove at a given session.
+
+```rust
+key: U32
+value: Vec<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>CurrentSession</code>
+</summary>
+ The current session index.
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>AuthorityMembers - 11
+<ul>
+
+<li>
+<details>
+<summary>
+<code>IncomingAuthorities</code>
+</summary>
+ The incoming authorities.
+
+```rust
+value: Vec<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>OnlineAuthorities</code>
+</summary>
+ The online authorities.
+
+```rust
+value: Vec<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>OutgoingAuthorities</code>
+</summary>
+ The outgoing authorities.
+
+```rust
+value: Vec<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Members</code>
+</summary>
+ The member data.
+
+```rust
+key: U32
+value: pallet_authority_members::types::MemberData<sp_core::crypto::AccountId32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Blacklist</code>
+</summary>
+ The blacklisted authorities.
+
+```rust
+value: Vec<U32>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Authorship - 12
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Author</code>
+</summary>
+ Author of current block.
+
+```rust
+value: Option<sp_core::crypto::AccountId32>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Offences - 13
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Reports</code>
+</summary>
+ The primary structure that holds all offence records keyed by report identifiers.
+
+```rust
+key: primitive_types::H256
+value: sp_staking::offence::OffenceDetails<sp_core::crypto::AccountId32, (sp_core::crypto::AccountId32, common_runtime::entities::ValidatorFullIdentification)>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ConcurrentReportsIndex</code>
+</summary>
+ A vector of reports of the same kind that happened at the same time slot.
+
+```rust
+key: ([U8; 16], Vec<U8>)
+value: Vec<primitive_types::H256>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Historical - 14
+<ul>
+
+<li>
+<details>
+<summary>
+<code>HistoricalSessions</code>
+</summary>
+ Mapping from historical session indices to session-data root hash and validator count.
+
+```rust
+key: U32
+value: (primitive_types::H256, U32)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>StoredRange</code>
+</summary>
+ The range of historical sessions we store. [first, last)
+
+```rust
+value: Option<(U32, U32)>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Session - 15
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Validators</code>
+</summary>
+ The current set of validators.
+
+```rust
+value: Vec<sp_core::crypto::AccountId32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>CurrentIndex</code>
+</summary>
+ Current index of the session.
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>QueuedChanged</code>
+</summary>
+ True if the underlying economic identities or weighting behind the validators
+ has changed in the queued validator set.
+
+```rust
+value: Bool
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>QueuedKeys</code>
+</summary>
+ The queued keys for the next session. When the next session begins, these keys
+ will be used to determine the validator's session keys.
+
+```rust
+value: Vec<(sp_core::crypto::AccountId32, gdev_runtime::opaque::SessionKeys)>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>DisabledValidators</code>
+</summary>
+ Indices of disabled validators.
+
+ The vec is always kept sorted so that we can find whether a given validator is
+ disabled using binary search. It gets cleared when `on_session_ending` returns
+ a new set of identities.
+
+```rust
+value: Vec<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>NextKeys</code>
+</summary>
+ The next session keys for a validator.
+
+```rust
+key: sp_core::crypto::AccountId32
+value: gdev_runtime::opaque::SessionKeys
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>KeyOwner</code>
+</summary>
+ The owner of a key. The key is the `KeyTypeId` + the encoded key.
+
+```rust
+key: (sp_core::crypto::KeyTypeId, Vec<U8>)
+value: sp_core::crypto::AccountId32
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Grandpa - 16
+<ul>
+
+<li>
+<details>
+<summary>
+<code>State</code>
+</summary>
+ State of the current authority set.
+
+```rust
+value: pallet_grandpa::StoredState<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>PendingChange</code>
+</summary>
+ Pending change: (signaled at, scheduled change).
+
+```rust
+value: Option<pallet_grandpa::StoredPendingChange<U32, >>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>NextForced</code>
+</summary>
+ next block number where we can force a change.
+
+```rust
+value: Option<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Stalled</code>
+</summary>
+ `true` if we are currently stalled.
+
+```rust
+value: Option<(U32, U32)>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>CurrentSetId</code>
+</summary>
+ The number of changes (both in terms of keys and underlying economic responsibilities)
+ in the "set" of Grandpa validators from genesis.
+
+```rust
+value: U64
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>SetIdSession</code>
+</summary>
+ A mapping from grandpa set ID to the index of the *most recent* session for which its
+ members were responsible.
+
+ This is only used for validating equivocation proofs. An equivocation proof must
+ contains a key-ownership proof for a given session, therefore we need a way to tie
+ together sessions and GRANDPA set ids, i.e. we need to validate that a validator
+ was the owner of a given key on a given session, and what the active set ID was
+ during that session.
+
+ TWOX-NOTE: `SetId` is not under user control.
+
+```rust
+key: U64
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Authorities</code>
+</summary>
+ The current list of authorities.
+
+```rust
+value: bounded_collections::weak_bounded_vec::WeakBoundedVec<(sp_consensus_grandpa::app::Public, U64), >
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>ImOnline - 17
+<ul>
+
+<li>
+<details>
+<summary>
+<code>HeartbeatAfter</code>
+</summary>
+ The block number after which it's ok to send heartbeats in the current
+ session.
+
+ At the beginning of each session we set this to a value that should fall
+ roughly in the middle of the session duration. The idea is to first wait for
+ the validators to produce a block in the current session, so that the
+ heartbeat later on will not be necessary.
+
+ This value will only be used as a fallback if we fail to get a proper session
+ progress estimate from `NextSessionRotation`, as those estimates should be
+ more accurate then the value we calculate for `HeartbeatAfter`.
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Keys</code>
+</summary>
+ The current set of keys that may issue a heartbeat.
+
+```rust
+value: bounded_collections::weak_bounded_vec::WeakBoundedVec<pallet_im_online::sr25519::app_sr25519::Public, >
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ReceivedHeartbeats</code>
+</summary>
+ For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`.
+
+```rust
+key: (U32, U32)
+value: Bool
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>AuthoredBlocks</code>
+</summary>
+ For each session index, we keep a mapping of `ValidatorId<T>` to the
+ number of blocks authored by the given authority.
+
+```rust
+key: (U32, sp_core::crypto::AccountId32)
+value: U32
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>AuthorityDiscovery - 18
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Keys</code>
+</summary>
+ Keys of the current authority set.
+
+```rust
+value: bounded_collections::weak_bounded_vec::WeakBoundedVec<sp_authority_discovery::app::Public, >
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>NextKeys</code>
+</summary>
+ Keys of the next authority set.
+
+```rust
+value: bounded_collections::weak_bounded_vec::WeakBoundedVec<sp_authority_discovery::app::Public, >
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Sudo - 20
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Key</code>
+</summary>
+ The `AccountId` of the sudo key.
+
+```rust
+value: Option<sp_core::crypto::AccountId32>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>UpgradeOrigin - 21
+<ul>
+
+</ul>
+</li>
+
+<li>Preimage - 22
+<ul>
+
+<li>
+<details>
+<summary>
+<code>StatusFor</code>
+</summary>
+ The request status of a given hash.
+
+```rust
+key: primitive_types::H256
+value: pallet_preimage::OldRequestStatus<sp_core::crypto::AccountId32, U64>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>RequestStatusFor</code>
+</summary>
+ The request status of a given hash.
+
+```rust
+key: primitive_types::H256
+value: pallet_preimage::RequestStatus<sp_core::crypto::AccountId32, ()>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>PreimageFor</code>
+</summary>
+
+
+```rust
+key: (primitive_types::H256, U32)
+value: bounded_collections::bounded_vec::BoundedVec<U8, >
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>TechnicalCommittee - 23
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Proposals</code>
+</summary>
+ The hashes of the active proposals.
+
+```rust
+value: bounded_collections::bounded_vec::BoundedVec<primitive_types::H256, >
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ProposalOf</code>
+</summary>
+ Actual proposal for a given hash, if it's current.
+
+```rust
+key: primitive_types::H256
+value: gdev_runtime::RuntimeCall
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>CostOf</code>
+</summary>
+ Consideration cost created for publishing and storing a proposal.
+
+ Determined by [Config::Consideration] and may be not present for certain proposals (e.g. if
+ the proposal count at the time of creation was below threshold N).
+
+```rust
+key: primitive_types::H256
+value: (sp_core::crypto::AccountId32, ())
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Voting</code>
+</summary>
+ Votes on a given proposal, if it is ongoing.
+
+```rust
+key: primitive_types::H256
+value: pallet_collective::Votes<sp_core::crypto::AccountId32, U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>ProposalCount</code>
+</summary>
+ Proposals so far.
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Members</code>
+</summary>
+ The current members of the collective. This is stored sorted (just by value).
+
+```rust
+value: Vec<sp_core::crypto::AccountId32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Prime</code>
+</summary>
+ The prime member that helps determine the default vote behavior in case of abstentions.
+
+```rust
+value: Option<sp_core::crypto::AccountId32>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>UniversalDividend - 30
+<ul>
+
+<li>
+<details>
+<summary>
+<code>CurrentUd</code>
+</summary>
+ The current Universal Dividend value.
+
+```rust
+value: U64
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>CurrentUdIndex</code>
+</summary>
+ The current Universal Dividend index.
+
+```rust
+value: U16
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MonetaryMass</code>
+</summary>
+ The total quantity of money created by Universal Dividend, excluding potential money destruction.
+
+```rust
+value: U64
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>NextReeval</code>
+</summary>
+ The next Universal Dividend re-evaluation.
+
+```rust
+value: Option<U64>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>NextUd</code>
+</summary>
+ The next Universal Dividend creation.
+
+```rust
+value: Option<U64>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>PastReevals</code>
+</summary>
+ The past Universal Dividend re-evaluations.
+
+```rust
+value: bounded_collections::bounded_vec::BoundedVec<(U16, U64), >
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Wot - 40
+<ul>
+
+</ul>
+</li>
+
+<li>Identity - 41
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Identities</code>
+</summary>
+ The identity value for each identity.
+
+```rust
+key: U32
+value: pallet_identity::types::IdtyValue<U32, sp_core::crypto::AccountId32, common_runtime::entities::IdtyData>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>CounterForIdentities</code>
+</summary>
+Counter for the related counted storage map
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>IdentityIndexOf</code>
+</summary>
+ The identity associated with each account.
+
+```rust
+key: sp_core::crypto::AccountId32
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>IdentitiesNames</code>
+</summary>
+ The name associated with each identity.
+
+```rust
+key: pallet_identity::types::IdtyName
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>NextIdtyIndex</code>
+</summary>
+ The identity index to assign to the next created identity.
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>IdentityChangeSchedule</code>
+</summary>
+ The identities to remove at a given block.
+
+```rust
+key: U32
+value: Vec<U32>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Membership - 42
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Membership</code>
+</summary>
+ The membership data for each identity.
+
+```rust
+key: U32
+value: sp_membership::MembershipData<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>CounterForMembership</code>
+</summary>
+Counter for the related counted storage map
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>MembershipsExpireOn</code>
+</summary>
+ The identities of memberships to expire at a given block.
+
+```rust
+key: U32
+value: Vec<U32>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Certification - 43
+<ul>
+
+<li>
+<details>
+<summary>
+<code>StorageIdtyCertMeta</code>
+</summary>
+ The certification metadata for each issuer.
+
+```rust
+key: U32
+value: pallet_certification::types::IdtyCertMeta<U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>CertsByReceiver</code>
+</summary>
+ The certifications for each receiver.
+
+```rust
+key: U32
+value: Vec<(U32, U32)>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>CertsRemovableOn</code>
+</summary>
+ The certifications that should expire at a given block.
+
+```rust
+key: U32
+value: Vec<(U32, U32)>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Distance - 44
+<ul>
+
+<li>
+<details>
+<summary>
+<code>EvaluationPool0</code>
+</summary>
+ The first evaluation pool for distance evaluation queuing identities to evaluate for a given
+ evaluator account.
+
+```rust
+value: pallet_distance::types::EvaluationPool<sp_core::crypto::AccountId32, U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>EvaluationPool1</code>
+</summary>
+ The second evaluation pool for distance evaluation queuing identities to evaluate for a given
+ evaluator account.
+
+```rust
+value: pallet_distance::types::EvaluationPool<sp_core::crypto::AccountId32, U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>EvaluationPool2</code>
+</summary>
+ The third evaluation pool for distance evaluation queuing identities to evaluate for a given
+ evaluator account.
+
+```rust
+value: pallet_distance::types::EvaluationPool<sp_core::crypto::AccountId32, U32>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>EvaluationBlock</code>
+</summary>
+ The block at which the distance is evaluated.
+
+```rust
+value: primitive_types::H256
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>PendingEvaluationRequest</code>
+</summary>
+ The pending evaluation requesters.
+
+```rust
+key: U32
+value: sp_core::crypto::AccountId32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>DidUpdate</code>
+</summary>
+ Store if the evaluation was updated in this block.
+
+```rust
+value: Bool
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>CurrentPeriodIndex</code>
+</summary>
+ The current evaluation period index.
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>AtomicSwap - 50
+<ul>
+
+<li>
+<details>
+<summary>
+<code>PendingSwaps</code>
+</summary>
+
+
+```rust
+key: (sp_core::crypto::AccountId32, [U8; 32])
+value: pallet_atomic_swap::PendingSwap<>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Multisig - 51
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Multisigs</code>
+</summary>
+ The set of open multisig operations.
+
+```rust
+key: (sp_core::crypto::AccountId32, [U8; 32])
+value: pallet_multisig::Multisig<U32, U64, sp_core::crypto::AccountId32, >
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>ProvideRandomness - 52
+<ul>
+
+<li>
+<details>
+<summary>
+<code>NexEpochHookIn</code>
+</summary>
+ The number of blocks before the next epoch.
+
+```rust
+value: U8
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>RequestIdProvider</code>
+</summary>
+ The request ID.
+
+```rust
+value: U64
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>RequestsReadyAtNextBlock</code>
+</summary>
+ The requests that will be fulfilled at the next block.
+
+```rust
+value: Vec<pallet_provide_randomness::types::Request>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>RequestsReadyAtEpoch</code>
+</summary>
+ The requests that will be fulfilled at the next epoch.
+
+```rust
+key: U64
+value: Vec<pallet_provide_randomness::types::Request>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>RequestsIds</code>
+</summary>
+ The requests being processed.
+
+```rust
+key: U64
+value: ()
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>CounterForRequestsIds</code>
+</summary>
+Counter for the related counted storage map
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Proxy - 53
+<ul>
+
+<li>
+<details>
+<summary>
+<code>Proxies</code>
+</summary>
+ The set of account proxies. Maps the account which has delegated to the accounts
+ which are being delegated to, together with the amount held on deposit.
+
+```rust
+key: sp_core::crypto::AccountId32
+value: (bounded_collections::bounded_vec::BoundedVec<pallet_proxy::ProxyDefinition<sp_core::crypto::AccountId32, gdev_runtime::ProxyType, U32>, >, U64)
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Announcements</code>
+</summary>
+ The announcements made by the proxy (key).
+
+```rust
+key: sp_core::crypto::AccountId32
+value: (bounded_collections::bounded_vec::BoundedVec<pallet_proxy::Announcement<sp_core::crypto::AccountId32, primitive_types::H256, U32>, >, U64)
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+<li>Utility - 54
+<ul>
+
+</ul>
+</li>
+
+<li>Treasury - 55
+<ul>
+
+<li>
+<details>
+<summary>
+<code>ProposalCount</code>
+</summary>
+ DEPRECATED: associated with `spend_local` call and will be removed in May 2025.
+ Refer to <https://github.com/paritytech/polkadot-sdk/pull/5961> for migration to `spend`.
+
+ Number of proposals that have been made.
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Proposals</code>
+</summary>
+ DEPRECATED: associated with `spend_local` call and will be removed in May 2025.
+ Refer to <https://github.com/paritytech/polkadot-sdk/pull/5961> for migration to `spend`.
+
+ Proposals that have been made.
+
+```rust
+key: U32
+value: pallet_treasury::Proposal<sp_core::crypto::AccountId32, U64>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Deactivated</code>
+</summary>
+ The amount which has been reported as inactive to Currency.
+
+```rust
+value: U64
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Approvals</code>
+</summary>
+ DEPRECATED: associated with `spend_local` call and will be removed in May 2025.
+ Refer to <https://github.com/paritytech/polkadot-sdk/pull/5961> for migration to `spend`.
+
+ Proposal indices that have been approved but not yet awarded.
+
+```rust
+value: bounded_collections::bounded_vec::BoundedVec<U32, >
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>SpendCount</code>
+</summary>
+ The count of spends that have been made.
+
+```rust
+value: U32
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>Spends</code>
+</summary>
+ Spends that have been approved and being processed.
+
+```rust
+key: U32
+value: pallet_treasury::SpendStatus<(), U64, sp_core::crypto::AccountId32, U32, ()>
+```
+
+</details>
+</li>
+
+<li>
+<details>
+<summary>
+<code>LastSpendPeriod</code>
+</summary>
+ The blocknumber for the last triggered spend period.
+
+```rust
+value: Option<U32>
+```
+
+</details>
+</li>
+
+</ul>
+</li>
+
+</ul>
diff --git a/end2end-tests/README.md b/end2end-tests/README.md
index 1205be0dac892ea936b189bf212d5f0c0a81eca7..be19f13fe283fe32ab5e16f8bc65fc17830169f7 100644
--- a/end2end-tests/README.md
+++ b/end2end-tests/README.md
@@ -163,7 +163,7 @@ To work, the integration tests need to have the runtime metadata up to date, her
 them:
 
 ```bash
-subxt metadata -f bytes --version 14 > resources/metadata.scale
+subxt metadata -f bytes > resources/metadata.scale
 ```
 
 If you don't have subxt, install it: `cargo install subxt-cli`
diff --git a/end2end-tests/tests/cucumber_tests.rs b/end2end-tests/tests/cucumber_tests.rs
index 58a532b2d6b1f8bbfe2e59a06123e90528061785..c653027323240ebb88fa38d2d5cbed8e7c7ddb18 100644
--- a/end2end-tests/tests/cucumber_tests.rs
+++ b/end2end-tests/tests/cucumber_tests.rs
@@ -631,7 +631,7 @@ async fn main() {
         .before(move |feature, _rule, scenario, world| {
             let mut genesis_conf_file_path = PathBuf::new();
             genesis_conf_file_path.push("cucumber-genesis");
-            genesis_conf_file_path.push(&format!(
+            genesis_conf_file_path.push(format!(
                 "{}.json",
                 genesis_conf_name(&feature.tags, &scenario.tags)
             ));
diff --git a/node/Cargo.toml b/node/Cargo.toml
index 1d6f3047b3eecfa8aee3366357f98855ce2a570c..1c236f15264aaef6b7a052a61b5960116a487f84 100644
--- a/node/Cargo.toml
+++ b/node/Cargo.toml
@@ -41,8 +41,10 @@ runtime-benchmarks = [
 	"gdev-runtime/runtime-benchmarks",
 	"gtest-runtime/runtime-benchmarks",
 	"pallet-grandpa/runtime-benchmarks",
+	"pallet-oneshot-account/runtime-benchmarks",
 	"pallet-im-online/runtime-benchmarks",
 	"pallet-treasury/runtime-benchmarks",
+	"pallet-transaction-payment/runtime-benchmarks",
 	"sc-client-db/runtime-benchmarks",
 	"sc-service/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
@@ -57,6 +59,7 @@ try-runtime = [
 	"gdev-runtime/try-runtime",
 	"gtest-runtime/try-runtime",
 	"pallet-grandpa/try-runtime",
+	"pallet-oneshot-account/try-runtime",
 	"pallet-im-online/try-runtime",
 	"pallet-transaction-payment/try-runtime",
 	"pallet-treasury/try-runtime",
@@ -79,6 +82,7 @@ std = [
 	"log/std",
 	"num-format/std",
 	"pallet-grandpa/std",
+	"pallet-oneshot-account/std",
 	"pallet-im-online/std",
 	"pallet-transaction-payment-rpc-runtime-api/std",
 	"pallet-transaction-payment/std",
@@ -116,6 +120,7 @@ clap_complete = { workspace = true }
 frame-benchmarking = { workspace = true }
 frame-benchmarking-cli = { workspace = true }
 frame-system = { workspace = true }
+frame-metadata-hash-extension = { workspace = true, default-features = true }
 futures = { workspace = true, features = ["compat"] }
 hex = { workspace = true }
 jsonrpsee = { workspace = true, features = ["server"] }
@@ -125,6 +130,9 @@ num-format = { workspace = true }
 serde = { workspace = true }
 serde_json = { workspace = true }
 serde_yaml = { workspace = true }
+codec = { workspace = true }
+array-bytes = { workspace = true }
+parking_lot = { workspace = true }
 tokio = { workspace = true, features = ["rt-multi-thread"] }
 
 # Local
@@ -134,6 +142,7 @@ gdev-runtime = { workspace = true, optional = true }
 gtest-runtime = { workspace = true, optional = true }
 distance-oracle = { workspace = true, optional = true }
 dc-distance = { workspace = true, optional = true }
+pallet-oneshot-account = { workspace = true, optional = true }
 
 # Substrate
 pallet-grandpa = { workspace = true, default-features = true }
@@ -156,11 +165,13 @@ 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-network-sync = { 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 }
+sc-utils = { workspace = true, default-features = true }
 sp-api = { workspace = true, default-features = true }
 sp-authority-discovery = { workspace = true, default-features = true }
 sp-block-builder = { workspace = true, default-features = true }
@@ -184,6 +195,12 @@ 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 }
 
+[dev-dependencies]
+sc-network-test = { workspace = true, default-features = true }
+async-trait = { version = "0.1.79" }
+env_logger = "0.10.2"
+async-channel = "2.3.1"
+
 [build-dependencies]
 substrate-build-script-utils = { workspace = true, default-features = true }
 
@@ -222,4 +239,4 @@ assets = [
 	{ source = "../resources/debian/duniter-mirror.service", dest = "/usr/lib/systemd/system/duniter-mirror.service", mode = "0644" },
 	{ source = "../resources/debian/duniter-smith.service", dest = "/usr/lib/systemd/system/duniter-smith.service", mode = "0644" },
 	{ source = "../resources/debian/duniter-smith.service", dest = "/usr/lib/systemd/system/distance-oracle.service", mode = "0644" },
-]
+]
\ No newline at end of file
diff --git a/node/src/cli.rs b/node/src/cli.rs
index 4a29ae0c07ff17c392e48fafe8690ac4ee2e81cb..2e21862652144ea628c9eca6aec099d4e195d7d4 100644
--- a/node/src/cli.rs
+++ b/node/src/cli.rs
@@ -19,9 +19,14 @@ pub struct Cli {
     #[clap(subcommand)]
     pub subcommand: Option<Subcommand>,
 
+    /// substrate base options
     #[clap(flatten)]
     pub run: sc_cli::RunCmd,
 
+    /// duniter specific options
+    #[clap(flatten)]
+    pub duniter_options: DuniterConfigExtension,
+
     /// How blocks should be sealed
     ///
     /// Options are "production", "instant", "manual", or timer interval in milliseconds
@@ -29,6 +34,33 @@ pub struct Cli {
     pub sealing: crate::cli::Sealing,
 }
 
+/// add options specific to duniter client
+#[derive(Debug, Default, Clone, clap::Parser)]
+pub struct DuniterConfigExtension {
+    /// Public RPC endpoint to gossip on the network and make available in the apps.
+    #[arg(long)]
+    pub public_rpc: Option<String>,
+
+    /// Public Squid graphql endpoint to gossip on the network and make available in the apps.
+    #[arg(long)]
+    pub public_squid: Option<String>,
+
+    /// Public endpoints from a JSON file, using following format where `protocol` and `address` are
+    /// strings (value is free) :
+    ///
+    /// ```json
+    /// {
+    ///     "endpoints": [
+    ///         { "protocol": "rpc", "address": "wss://gdev.example.com" },
+    ///         { "protocol": "squid", "address": "gdev.example.com/graphql/v1" },
+    ///         { "protocol": "other", "address": "gdev.example.com/other" }
+    ///     ]
+    /// }
+    /// ```
+    #[arg(long, value_name = "JSON_FILE_PATH")]
+    pub public_endpoints: Option<String>,
+}
+
 #[derive(Debug, clap::Subcommand)]
 pub enum Subcommand {
     /// Build a chain specification.
diff --git a/node/src/command.rs b/node/src/command.rs
index 58eabb0144c3414f29873103599e48f952d79252..512706ec9c2aee808226fcdd23d20dfef0c7b8a3 100644
--- a/node/src/command.rs
+++ b/node/src/command.rs
@@ -22,7 +22,7 @@ pub mod utils;
 
 use crate::{
     chain_spec,
-    cli::{Cli, Subcommand},
+    cli::{Cli, DuniterConfigExtension, Subcommand},
     service,
     service::{runtime_executor::Executor, RuntimeType},
 };
@@ -46,10 +46,7 @@ lazy_static! {
 /// Unwraps a [`crate::service::client::Client`] into the concrete runtime client.
 #[cfg(feature = "runtime-benchmarks")]
 macro_rules! unwrap_client {
-    (
-		$client:ident,
-		$code:expr
-	) => {
+    ($client:ident, $code:expr) => {
         match $client.as_ref() {
             crate::service::client::Client::Client($client) => $code,
         }
@@ -335,11 +332,12 @@ pub fn run() -> sc_cli::Result<()> {
                     unwrap_client!(
                         client,
                         cmd.run(
-                            config,
+                            config.chain_spec.name().into(),
                             client.clone(),
                             inherent_data,
                             Vec::new(),
-                            wrapped.as_ref()
+                            wrapped.as_ref(),
+                            false,
                         )
                     )
                 }),
@@ -376,6 +374,7 @@ pub fn run() -> sc_cli::Result<()> {
         }
         None => {
             let runner = cli.create_runner(&cli.run)?;
+            let duniter_options: DuniterConfigExtension = cli.duniter_options;
             runner.run_node_until_exit(|mut config| async move {
                 // Force offchain worker and offchain indexing if we have the role Authority
                 if config.role.is_authority() {
@@ -388,7 +387,7 @@ pub fn run() -> sc_cli::Result<()> {
                         service::runtime_executor::runtime::RuntimeApi,
                         Executor,
                         sc_network::Litep2pNetworkBackend,
-                    >(config, cli.sealing)
+                    >(config, cli.sealing, duniter_options)
                     .map_err(sc_cli::Error::Service)
                 }
             })
diff --git a/node/src/endpoint_gossip/handler.rs b/node/src/endpoint_gossip/handler.rs
new file mode 100644
index 0000000000000000000000000000000000000000..2491298ca85b374fd04247add61db155bf1dfe9e
--- /dev/null
+++ b/node/src/endpoint_gossip/handler.rs
@@ -0,0 +1,267 @@
+use crate::endpoint_gossip::{
+    types::validation_result::DuniterStreamValidationResult, DuniterEndpoints, Peer, Peering,
+    PROPAGATE_TIMEOUT,
+};
+use codec::{Decode, Encode};
+use futures::{stream, FutureExt, Stream, StreamExt};
+use log::debug;
+use sc_network::{
+    service::traits::{NotificationEvent, ValidationResult},
+    utils::interval,
+    NetworkEventStream, NetworkPeers, NetworkStateInfo, NotificationService, ObservedRole, PeerId,
+};
+use sc_utils::mpsc::{tracing_unbounded, TracingUnboundedReceiver, TracingUnboundedSender};
+use sp_api::__private::BlockT;
+use std::{collections::HashMap, marker::PhantomData, pin::Pin};
+
+pub fn build<
+    B: BlockT + 'static,
+    N: NetworkPeers + NetworkEventStream + NetworkStateInfo + Clone,
+>(
+    notification_service: Box<dyn NotificationService>,
+    network: N,
+    rpc_sink: TracingUnboundedSender<DuniterPeeringEvent>,
+    command_rx: Option<TracingUnboundedReceiver<DuniterPeeringCommand>>,
+    endpoints: DuniterEndpoints,
+) -> GossipsHandler<B, N> {
+    let local_peer_id = network.local_peer_id();
+
+    GossipsHandler {
+        b: PhantomData::<B>,
+        notification_service,
+        propagate_timeout: (Box::pin(interval(PROPAGATE_TIMEOUT))
+            as Pin<Box<dyn Stream<Item = ()> + Send>>)
+            .fuse(),
+        network,
+        peers: HashMap::new(),
+        command_rx: command_rx.unwrap_or_else(|| {
+            let (_tx, rx) = tracing_unbounded("mpsc_duniter_peering_rpc_command", 1_000);
+            rx
+        }),
+        self_peering: Peering { endpoints },
+        events_reporter: DuniterEventsReporter {
+            sink: rpc_sink,
+            local_peer_id,
+        },
+    }
+}
+
+#[allow(dead_code)]
+#[derive(Debug, Clone)]
+pub enum DuniterPeeringEvent {
+    StreamOpened(PeerId, ObservedRole),
+    StreamValidation(PeerId, DuniterStreamValidationResult),
+    StreamClosed(PeerId),
+    /// Received gossip from a peer, `bool` indicates whether the gossip was successfully decoded.
+    GossipReceived(PeerId, bool),
+    GoodPeering(PeerId, Peering),
+    AlreadyReceivedPeering(PeerId),
+    SelfPeeringPropagationSuccess(PeerId, Peering),
+    SelfPeeringPropagationFailed(PeerId, Peering, String),
+}
+
+pub enum DuniterPeeringCommand {
+    /// Send a peering to a peer.
+    #[allow(dead_code)] // only used in tests for now, maybe in the future by RPC
+    SendPeering(PeerId, Peering),
+}
+
+struct DuniterEventsReporter {
+    sink: TracingUnboundedSender<DuniterPeeringEvent>,
+    local_peer_id: PeerId,
+}
+
+impl DuniterEventsReporter {
+    /// Report an event for monitoring purposes (logs + unit tests).
+    fn report_event(&self, event: DuniterPeeringEvent) {
+        self.sink.unbounded_send(event.clone())
+            .unwrap_or_else(|e| {
+                log::error!(target: "duniter-libp2p", "[{}] Failed to send notification: {}", self.local_peer_id, e);
+            })
+    }
+}
+
+/// Handler for gossips. Call [`GossipsHandler::run`] to start the processing.
+pub struct GossipsHandler<
+    B: BlockT + 'static,
+    N: NetworkPeers + NetworkEventStream + NetworkStateInfo,
+> {
+    b: PhantomData<B>,
+    /// Interval at which we try to propagate our peering
+    propagate_timeout: stream::Fuse<Pin<Box<dyn Stream<Item = ()> + Send>>>,
+    /// Network service to use to send messages and manage peers.
+    network: N,
+    /// All connected peers and their known peering.
+    peers: HashMap<PeerId, Peer>,
+    /// The interal peering of the node.
+    self_peering: Peering,
+    /// Internal sink to report events.
+    events_reporter: DuniterEventsReporter,
+    /// Receiver for external commands (tests/RPC methods).
+    command_rx: TracingUnboundedReceiver<DuniterPeeringCommand>,
+    /// Handle that is used to communicate with `sc_network::Notifications`.
+    notification_service: Box<dyn NotificationService>,
+}
+
+impl<B, N> GossipsHandler<B, N>
+where
+    B: BlockT + 'static,
+    N: NetworkPeers + NetworkEventStream + NetworkStateInfo,
+{
+    /// Turns the [`TransactionsHandler`] into a future that should run forever and not be
+    /// interrupted.
+    pub async fn run(mut self) {
+        // Share self peering do listeners of current handler
+        self.events_reporter
+            .report_event(DuniterPeeringEvent::GoodPeering(
+                self.network.local_peer_id(),
+                self.self_peering.clone(),
+            ));
+        // Then start the network loop
+        loop {
+            futures::select! {
+                _ = self.propagate_timeout.next() => {
+                    for (peer, peer_data) in self.peers.iter_mut() {
+                        if !peer_data.sent_peering {
+                            match self.notification_service.send_async_notification(peer, self.self_peering.encode()).await {
+                                Ok(_) => {
+                                    peer_data.sent_peering = true;
+                                    self.events_reporter.report_event(DuniterPeeringEvent::SelfPeeringPropagationSuccess(*peer, self.self_peering.clone()));
+                                }
+                                Err(e) => {
+                                    self.events_reporter.report_event(DuniterPeeringEvent::SelfPeeringPropagationFailed(*peer, self.self_peering.clone(), e.to_string()));
+                                }
+                            }
+                        }
+                    }
+                },
+                command = self.command_rx.next().fuse() => {
+                    if let Some(command) = command {
+                        self.handle_command(command).await
+                    }
+                },
+                event = self.notification_service.next_event().fuse() => {
+                    if let Some(event) = event {
+                        self.handle_notification_event(event)
+                    } else {
+                        // `Notifications` has seemingly closed. Closing as well.
+                        return
+                    }
+                }
+            }
+        }
+    }
+
+    fn handle_notification_event(&mut self, event: NotificationEvent) {
+        match event {
+            NotificationEvent::ValidateInboundSubstream {
+                peer,
+                handshake,
+                result_tx,
+                ..
+            } => {
+                // only accept peers whose role can be determined
+                let result = self
+                    .network
+                    .peer_role(peer, handshake)
+                    .map_or(ValidationResult::Reject, |_| ValidationResult::Accept);
+                let duniter_validation = DuniterStreamValidationResult::from(result);
+                self.events_reporter
+                    .report_event(DuniterPeeringEvent::StreamValidation(
+                        peer,
+                        duniter_validation.clone(),
+                    ));
+                let _ = result_tx.send(duniter_validation.into());
+            }
+            NotificationEvent::NotificationStreamOpened {
+                peer, handshake, ..
+            } => {
+                let Some(role) = self.network.peer_role(peer, handshake) else {
+                    debug!(target: "duniter-libp2p", "[{}] role for {peer} couldn't be determined", self.network.local_peer_id());
+                    return;
+                };
+
+                let _was_in = self.peers.insert(
+                    peer,
+                    Peer {
+                        sent_peering: false,
+                        known_peering: None,
+                    },
+                );
+                debug_assert!(_was_in.is_none());
+                self.events_reporter
+                    .report_event(DuniterPeeringEvent::StreamOpened(peer, role));
+            }
+            NotificationEvent::NotificationStreamClosed { peer } => {
+                let _peer = self.peers.remove(&peer);
+                debug_assert!(_peer.is_some());
+                self.events_reporter
+                    .report_event(DuniterPeeringEvent::StreamClosed(peer));
+            }
+            NotificationEvent::NotificationReceived { peer, notification } => {
+                if let Ok(peering) = <Peering as Decode>::decode(&mut notification.as_ref()) {
+                    self.events_reporter
+                        .report_event(DuniterPeeringEvent::GossipReceived(peer, true));
+                    self.on_peering(peer, peering);
+                } else {
+                    self.events_reporter
+                        .report_event(DuniterPeeringEvent::GossipReceived(peer, false));
+                    self.network.report_peer(peer, rep::BAD_PEERING);
+                }
+            }
+        }
+    }
+
+    /// Called when peer sends us new peerings
+    fn on_peering(&mut self, who: PeerId, peering: Peering) {
+        if let Some(ref mut peer) = self.peers.get_mut(&who) {
+            if peer.known_peering.is_some() {
+                // Peering has already been received for this peer. Only one is allowed per connection.
+                self.network.report_peer(who, rep::BAD_PEERING);
+                self.events_reporter
+                    .report_event(DuniterPeeringEvent::AlreadyReceivedPeering(who));
+            } else {
+                peer.known_peering = Some(peering.clone());
+                self.events_reporter
+                    .report_event(DuniterPeeringEvent::GoodPeering(who, peering.clone()));
+                self.network.report_peer(who, rep::GOOD_PEERING);
+            }
+        }
+    }
+
+    async fn handle_command(&mut self, cmd: DuniterPeeringCommand) {
+        match cmd {
+            DuniterPeeringCommand::SendPeering(peer, peering) => {
+                debug!(target: "duniter-libp2p", "[{}]Sending COMMANDED self peering to {}", self.network.local_peer_id(), peer);
+                match self
+                    .notification_service
+                    .send_async_notification(&peer, peering.encode())
+                    .await
+                {
+                    Ok(_) => {
+                        self.events_reporter.report_event(
+                            DuniterPeeringEvent::SelfPeeringPropagationSuccess(peer, peering),
+                        );
+                    }
+                    Err(e) => {
+                        self.events_reporter.report_event(
+                            DuniterPeeringEvent::SelfPeeringPropagationFailed(
+                                peer,
+                                peering,
+                                e.to_string(),
+                            ),
+                        );
+                    }
+                }
+            }
+        };
+    }
+}
+
+mod rep {
+    use sc_network::ReputationChange as Rep;
+    /// Reputation change when a peer sends us an peering that we didn't know about.
+    pub const GOOD_PEERING: Rep = Rep::new(1 << 7, "Good peering");
+    /// Reputation change when a peer sends us a bad peering.
+    pub const BAD_PEERING: Rep = Rep::new(-(1 << 12), "Bad peering");
+}
diff --git a/node/src/endpoint_gossip/mod.rs b/node/src/endpoint_gossip/mod.rs
new file mode 100644
index 0000000000000000000000000000000000000000..7c44f55211c620cdcfc1f45b76b5e874f95a4492
--- /dev/null
+++ b/node/src/endpoint_gossip/mod.rs
@@ -0,0 +1,106 @@
+pub(crate) mod handler;
+pub(crate) mod rpc;
+#[cfg(test)]
+mod tests;
+mod types;
+
+use crate::endpoint_gossip::duniter_peering_protocol_name::NAME;
+use codec::{Decode, Encode};
+use frame_benchmarking::__private::traits::ConstU32;
+use sc_network::{
+    config::{PeerStoreProvider, SetConfig},
+    types::ProtocolName,
+    NetworkBackend, NotificationMetrics, NotificationService, MAX_RESPONSE_SIZE,
+};
+use serde::{Deserialize, Serialize};
+use sp_api::__private::BlockT;
+use sp_core::bounded_vec::BoundedVec;
+use std::{sync::Arc, time};
+
+pub mod well_known_endpoint_types {
+    pub const RPC: &str = "rpc";
+    pub const SQUID: &str = "squid";
+}
+
+pub struct DuniterPeeringParams {
+    /// Handle that is used to communicate with `sc_network::Notifications`.
+    pub notification_service: Box<dyn NotificationService>,
+}
+
+/// Maximum allowed size for a transactions notification.
+pub(crate) const MAX_GOSSIP_SIZE: u64 = MAX_RESPONSE_SIZE;
+
+/// Interval at which we propagate gossips;
+pub(crate) const PROPAGATE_TIMEOUT: time::Duration = time::Duration::from_secs(1);
+
+pub mod duniter_peering_protocol_name {
+
+    pub(crate) const NAME: &str = "duniter-peerings/1";
+}
+
+impl DuniterPeeringParams {
+    /// Create a new instance.
+    pub fn new<
+        Hash: AsRef<[u8]>,
+        Block: BlockT,
+        Net: NetworkBackend<Block, <Block as BlockT>::Hash>,
+    >(
+        genesis_hash: Hash,
+        fork_id: Option<&str>,
+        metrics: NotificationMetrics,
+        peer_store_handle: Arc<dyn PeerStoreProvider>,
+    ) -> (Self, Net::NotificationProtocolConfig) {
+        let genesis_hash = genesis_hash.as_ref();
+        let protocol_name: ProtocolName = if let Some(fork_id) = fork_id {
+            format!(
+                "/{}/{}/{}",
+                array_bytes::bytes2hex("", genesis_hash),
+                fork_id,
+                NAME,
+            )
+        } else {
+            format!("/{}/{}", array_bytes::bytes2hex("", genesis_hash), NAME)
+        }
+        .into();
+        let (config, notification_service) = Net::notification_config(
+            protocol_name.clone(),
+            vec![format!("/{}/{}", array_bytes::bytes2hex("", genesis_hash), NAME).into()],
+            MAX_GOSSIP_SIZE,
+            None,
+            // Default config, allowing some non-reserved nodes to connect
+            SetConfig::default(),
+            metrics,
+            peer_store_handle,
+        );
+
+        (
+            Self {
+                notification_service,
+            },
+            config,
+        )
+    }
+}
+
+/// Peer information
+#[derive(Debug)]
+struct Peer {
+    /// Holds a set of transactions known to this peer.
+    known_peering: Option<Peering>,
+    sent_peering: bool,
+}
+
+#[derive(Encode, Decode, Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
+pub struct DuniterEndpoint {
+    /// The name of the endpoint (e.g. "rpc" or "squid") are well-known names
+    pub protocol: String,
+    /// The endpoint itself (e.g. "squid.example.com/v1/graphql")
+    pub address: String,
+}
+
+pub type DuniterEndpoints = BoundedVec<DuniterEndpoint, ConstU32<10>>;
+
+#[derive(Encode, Decode, Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
+pub struct Peering {
+    pub endpoints: DuniterEndpoints,
+}
diff --git a/node/src/endpoint_gossip/rpc/api.rs b/node/src/endpoint_gossip/rpc/api.rs
new file mode 100644
index 0000000000000000000000000000000000000000..e459c4d25c6958d16d6aefa1c00d2462b191d43b
--- /dev/null
+++ b/node/src/endpoint_gossip/rpc/api.rs
@@ -0,0 +1,38 @@
+//! # Duniter Peering RPC API
+//!
+//! Exposes the `duniter_peerings` RPC method.
+
+use crate::endpoint_gossip::rpc::{data::DuniterPeeringsData, state::DuniterPeeringsState};
+use jsonrpsee::{core::async_trait, proc_macros::rpc, Extensions};
+use sc_consensus_babe_rpc::Error;
+
+/// The exposed RPC methods
+#[rpc(client, server)]
+pub trait DuniterPeeringRpcApi {
+    /// Returns the known peerings list received by network gossips
+    #[method(name = "duniter_peerings", with_extensions)]
+    async fn duniter_peerings(&self) -> Result<Option<DuniterPeeringsData>, Error>;
+}
+
+/// API implementation
+pub struct DuniterPeeringRpcApiImpl {
+    shared_peer_state: DuniterPeeringsState,
+}
+
+impl DuniterPeeringRpcApiImpl {
+    /// Creates a new instance of the Duniter Peering Rpc handler.
+    pub fn new(shared_peer_state: DuniterPeeringsState) -> Self {
+        Self { shared_peer_state }
+    }
+}
+
+#[async_trait]
+impl DuniterPeeringRpcApiServer for DuniterPeeringRpcApiImpl {
+    async fn duniter_peerings(
+        &self,
+        _ext: &Extensions,
+    ) -> Result<Option<DuniterPeeringsData>, Error> {
+        let option = self.shared_peer_state.peer_state();
+        Ok(option)
+    }
+}
diff --git a/node/src/endpoint_gossip/rpc/data.rs b/node/src/endpoint_gossip/rpc/data.rs
new file mode 100644
index 0000000000000000000000000000000000000000..08c86b16c5de9e7baf22df7855a2c22067723ba7
--- /dev/null
+++ b/node/src/endpoint_gossip/rpc/data.rs
@@ -0,0 +1,9 @@
+use crate::endpoint_gossip::rpc::state::PeeringWithId;
+use jsonrpsee::core::Serialize;
+use serde::Deserialize;
+
+#[derive(PartialEq, Eq, Clone, Serialize, Deserialize)]
+#[cfg_attr(test, derive(Debug))]
+pub struct DuniterPeeringsData {
+    pub peerings: Vec<PeeringWithId>,
+}
diff --git a/node/src/endpoint_gossip/rpc/mod.rs b/node/src/endpoint_gossip/rpc/mod.rs
new file mode 100644
index 0000000000000000000000000000000000000000..0b033946efd7e5078d141a6e0fe9265c0fdf2bcf
--- /dev/null
+++ b/node/src/endpoint_gossip/rpc/mod.rs
@@ -0,0 +1,43 @@
+//! # RPC for peering
+//!
+//! This module gathers all known peering documents for connected peers in memory and provides
+//! an RPC interface to query them.
+//!
+//! ## RPC methods
+//!
+//! Currently, only one RPC method is available to query the currently known peerings.
+//! In the future, the RPC interface could add methods to dynamically change the current node's peering
+//! without restarting the node.
+//!
+//! ### `duniter_peerings`
+//!
+//! Returns the known peerings list received by network gossips.
+//!
+//! ```json
+//! {
+//!     "jsonrpc": "2.0",
+//!     "id": 0,
+//!     "result": {
+//!         "peers": [
+//!             {
+//!                 "endpoints": [
+//!                     "/rpc/wss://gdev.example.com",
+//!                     "/squid/https://squid.gdev.gyroi.de/v1/graphql"
+//!                 ]
+//!             },
+//!             {
+//!                 "endpoints": [
+//!                     "/rpc/ws://gdev.example.com:9944"
+//!                 ]
+//!             }
+//!         ]
+//!     }
+//! }
+//! ```
+//!
+pub mod api;
+pub mod data;
+pub mod state;
+
+#[cfg(test)]
+mod tests;
diff --git a/node/src/endpoint_gossip/rpc/state.rs b/node/src/endpoint_gossip/rpc/state.rs
new file mode 100644
index 0000000000000000000000000000000000000000..b9d69c1f419ea203a0b347583e8d318848b6864d
--- /dev/null
+++ b/node/src/endpoint_gossip/rpc/state.rs
@@ -0,0 +1,77 @@
+use crate::endpoint_gossip::{
+    handler::DuniterPeeringEvent, rpc::data::DuniterPeeringsData, DuniterEndpoints,
+};
+use codec::{Decode, Encode};
+use futures::StreamExt;
+use jsonrpsee::core::Serialize;
+use parking_lot::RwLock;
+use sc_utils::mpsc::{tracing_unbounded, TracingUnboundedSender};
+use serde::Deserialize;
+use std::sync::Arc;
+
+/// A struct to hold a peer endpoints along with its id for RPC exposure.
+#[derive(Encode, Decode, Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
+pub struct PeeringWithId {
+    pub peer_id: String,
+    pub endpoints: DuniterEndpoints,
+}
+
+#[derive(Clone)]
+pub struct DuniterPeeringsState {
+    inner: Arc<RwLock<Option<Box<DuniterPeeringsData>>>>,
+}
+
+/// Dummy CRUD operations for the state to be exposed, plus a listening sink to be notified of
+/// network events and automatically insert/remove peers from the state.
+impl DuniterPeeringsState {
+    pub fn empty() -> Self {
+        Self {
+            inner: Arc::new(RwLock::new(Some(Box::new(DuniterPeeringsData {
+                peerings: Vec::new(),
+            })))),
+        }
+    }
+
+    pub fn insert(&self, peering: PeeringWithId) -> &Self {
+        if let Some(vs) = self.inner.write().as_mut() {
+            vs.peerings.push(peering);
+        }
+        self
+    }
+
+    pub fn remove(&self, peer_id: String) -> &Self {
+        if let Some(vs) = self.inner.write().as_mut() {
+            vs.peerings.retain(|p| p.peer_id != peer_id);
+        }
+        self
+    }
+
+    pub fn peer_state(&self) -> Option<DuniterPeeringsData> {
+        self.inner.read().as_ref().map(|vs| vs.as_ref().clone())
+    }
+
+    /// Creates a channel for binding to the network events.
+    pub fn listen(&self) -> TracingUnboundedSender<DuniterPeeringEvent> {
+        let (sink, stream) = tracing_unbounded("mpsc_duniter_peering_rpc_stream", 1_000);
+        let state = self.clone();
+        tokio::spawn(async move {
+            stream
+                .for_each(|event| async {
+                    match event {
+                        DuniterPeeringEvent::GoodPeering(who, peering) => {
+                            state.insert(PeeringWithId {
+                                peer_id: who.to_base58(),
+                                endpoints: peering.endpoints,
+                            });
+                        }
+                        DuniterPeeringEvent::StreamClosed(who) => {
+                            state.remove(who.to_base58());
+                        }
+                        _ => {}
+                    }
+                })
+                .await
+        });
+        sink
+    }
+}
diff --git a/node/src/endpoint_gossip/rpc/tests.rs b/node/src/endpoint_gossip/rpc/tests.rs
new file mode 100644
index 0000000000000000000000000000000000000000..258c5882f37e63c70b876f8dccbc63aac62c3f07
--- /dev/null
+++ b/node/src/endpoint_gossip/rpc/tests.rs
@@ -0,0 +1,64 @@
+use crate::endpoint_gossip::{
+    rpc::{
+        api::{DuniterPeeringRpcApiImpl, DuniterPeeringRpcApiServer},
+        state::{DuniterPeeringsState, PeeringWithId},
+    },
+    well_known_endpoint_types::{RPC, SQUID},
+    DuniterEndpoint, DuniterEndpoints,
+};
+use jsonrpsee::RpcModule;
+
+#[tokio::test]
+async fn empty_peers_rpc_handler() {
+    let rpc = setup_io_handler();
+    let expected_response = r#"{"jsonrpc":"2.0","id":0,"result":{"peerings":[]}}"#.to_string();
+    let request = r#"{"jsonrpc":"2.0","method":"duniter_peerings","params":[],"id":0}"#;
+    let (response, _) = rpc.raw_json_request(request, 1).await.unwrap();
+
+    assert_eq!(expected_response, response);
+}
+
+#[tokio::test]
+async fn expose_known_peers() {
+    let rpc = setup_new_rpc_with_initial_peerings(vec![
+        PeeringWithId {
+            peer_id: "12D3KooWRkDXunbB64VegYPCQaitcgtdtEtbsbd7f19nsS7aMjDp".into(),
+            endpoints: DuniterEndpoints::truncate_from(vec![
+                DuniterEndpoint {
+                    protocol: RPC.into(),
+                    address: "/rpc/wss://gdev.example.com".into(),
+                },
+                DuniterEndpoint {
+                    protocol: SQUID.into(),
+                    address: "/squid/https://squid.gdev.gyroi.de/v1/graphql".into(),
+                },
+            ]),
+        },
+        PeeringWithId {
+            peer_id: "12D3KooWFiUBo3Kjiryvrpz8b3kfNVk7baezhab7SHdfafgY7nmN".into(),
+            endpoints: DuniterEndpoints::truncate_from(vec![DuniterEndpoint {
+                protocol: RPC.into(),
+                address: "/rpc/ws://gdev.example.com:9944".into(),
+            }]),
+        },
+    ]);
+    let expected_response = r#"{"jsonrpc":"2.0","id":0,"result":{"peerings":[{"peer_id":"12D3KooWRkDXunbB64VegYPCQaitcgtdtEtbsbd7f19nsS7aMjDp","endpoints":[{"protocol":"rpc","address":"/rpc/wss://gdev.example.com"},{"protocol":"squid","address":"/squid/https://squid.gdev.gyroi.de/v1/graphql"}]},{"peer_id":"12D3KooWFiUBo3Kjiryvrpz8b3kfNVk7baezhab7SHdfafgY7nmN","endpoints":[{"protocol":"rpc","address":"/rpc/ws://gdev.example.com:9944"}]}]}}"#.to_string();
+    let request = r#"{"jsonrpc":"2.0","method":"duniter_peerings","params":[],"id":0}"#;
+    let (response, _) = rpc.raw_json_request(request, 1).await.unwrap();
+
+    assert_eq!(expected_response, response);
+}
+
+fn setup_io_handler() -> RpcModule<DuniterPeeringRpcApiImpl> {
+    DuniterPeeringRpcApiImpl::new(DuniterPeeringsState::empty()).into_rpc()
+}
+
+fn setup_new_rpc_with_initial_peerings(
+    peers: Vec<PeeringWithId>,
+) -> RpcModule<DuniterPeeringRpcApiImpl> {
+    let state = DuniterPeeringsState::empty();
+    for peer in peers {
+        state.insert(peer);
+    }
+    DuniterPeeringRpcApiImpl::new(state).into_rpc()
+}
diff --git a/node/src/endpoint_gossip/tests.rs b/node/src/endpoint_gossip/tests.rs
new file mode 100644
index 0000000000000000000000000000000000000000..454c0bc6bf1ac5629e91d92bee9a21f14a7bd396
--- /dev/null
+++ b/node/src/endpoint_gossip/tests.rs
@@ -0,0 +1,350 @@
+use crate::{
+    endpoint_gossip,
+    endpoint_gossip::{
+        duniter_peering_protocol_name,
+        handler::{DuniterPeeringCommand, DuniterPeeringEvent},
+        well_known_endpoint_types::RPC,
+        DuniterEndpoint, DuniterEndpoints, Peering,
+    },
+};
+use async_channel::Receiver;
+use futures::{future, stream, FutureExt, StreamExt};
+use log::{debug, warn};
+use parking_lot::Mutex;
+use sc_consensus::{
+    BlockCheckParams, BlockImport, BlockImportParams, BoxJustificationImport, ImportResult,
+    ImportedAux,
+};
+use sc_network::{NetworkStateInfo, ObservedRole, PeerId};
+use sc_network_test::{
+    Block, BlockImportAdapter, FullPeerConfig, PassThroughVerifier, PeersClient, TestNetFactory,
+};
+use sc_utils::mpsc::{tracing_unbounded, TracingUnboundedSender};
+use sp_api::__private::BlockT;
+use sp_consensus::Error as ConsensusError;
+use sp_runtime::traits::Header;
+use std::{future::Future, pin::pin, sync::Arc, task::Poll, time::Duration};
+
+#[tokio::test]
+async fn peering_is_forwarded_and_only_once_per_connection() {
+    let _ = env_logger::try_init();
+    let authorities_count = 3;
+    let full_count = 1;
+    let total_peers = authorities_count + full_count;
+    let mut net = DuniterPeeringTestNet::new(authorities_count, full_count);
+    tokio::spawn(start_network(&mut net, total_peers));
+    let net = Arc::new(Mutex::new(net));
+
+    // make sure the network is ready (each peering is received by all other peers)
+    let wait_for_all_peering_notifications =
+        watch_events_and_wait_for_all_peerings(total_peers, &net);
+    let wait_for = futures::future::join_all(wait_for_all_peering_notifications).map(|_| ());
+    tokio::time::timeout(Duration::from_secs(5), run_until_complete(wait_for, &net))
+        .await
+        .unwrap();
+
+    // rule: only one peering is accepted per connection (disconnecting/restarting allows to change the peering value)
+    let already_received = ensure_only_one_peering_is_accepted(&net);
+    tokio::time::timeout(
+        Duration::from_secs(5),
+        run_until_complete(already_received, &net),
+    )
+    .await
+    .unwrap();
+}
+
+fn ensure_only_one_peering_is_accepted(
+    net: &Arc<Mutex<DuniterPeeringTestNet>>,
+) -> impl Future<Output = ()> {
+    let command_0 = net.lock().peer_commands[0].clone();
+    let peer_id_0 = net.lock().peer_ids[0];
+    let peer_id_1 = net.lock().peer_ids[1];
+    let stream_1 = net.lock().peer_streams[1].clone();
+    let already_received = async move {
+        let mut stream1 = pin!(stream_1);
+        while let Some(event) = stream1.next().await {
+            if let DuniterPeeringEvent::AlreadyReceivedPeering(peer) = event {
+                if peer == peer_id_0 {
+                    // We did receive the peering from peer 0
+                    break;
+                }
+            }
+        }
+    };
+    let already_received = futures::future::join_all(vec![already_received]).map(|_| ());
+    command_0
+        .unbounded_send(DuniterPeeringCommand::SendPeering(
+            peer_id_1,
+            Peering {
+                endpoints: DuniterEndpoints::truncate_from(vec![DuniterEndpoint {
+                    protocol: RPC.into(),
+                    address: "gdev.example.com:9944".into(),
+                }]),
+            },
+        ))
+        .unwrap();
+    already_received
+}
+
+fn watch_events_and_wait_for_all_peerings(
+    total_peers: usize,
+    net: &Arc<Mutex<DuniterPeeringTestNet>>,
+) -> Vec<impl Future<Output = ()> + Sized> {
+    let mut peering_notifications = Vec::new();
+
+    for peer_id in 0..total_peers {
+        let local_peer_id = net.lock().peer_ids[peer_id];
+        let stream = net.lock().peer_streams[peer_id].clone();
+        peering_notifications.push(async move {
+            let mut identified = 0;
+            let mut stream = pin!(stream);
+            while let Some(event) = stream.next().await {
+                debug_event(event.clone(), local_peer_id);
+                if let DuniterPeeringEvent::GoodPeering(peer, _) = event {
+                    debug!(target: "duniter-libp2p", "[{}] Received peering from {}",local_peer_id, peer);
+                    identified += 1;
+                    if identified == (total_peers - 1) {
+                        // all peers identified
+                        break;
+                    }
+                }
+            }
+            warn!("All peers sent their peering");
+        })
+    }
+    peering_notifications
+}
+
+fn debug_event(event: DuniterPeeringEvent, local_peer_id: PeerId) {
+    match event {
+        DuniterPeeringEvent::StreamOpened(peer, role) => {
+            debug!(target: "duniter-libp2p", "[{}] Peer {peer} connected with role {}", local_peer_id, observed_role_to_str(role));
+        }
+        DuniterPeeringEvent::StreamValidation(peer, result) => {
+            debug!(target: "duniter-libp2p", "[{}] Validating inbound substream from {peer} with result {}", local_peer_id, result);
+        }
+        DuniterPeeringEvent::StreamClosed(peer) => {
+            debug!(target: "duniter-libp2p", "[{}] Peer {peer} disconnected", local_peer_id);
+        }
+        DuniterPeeringEvent::GossipReceived(peer, success) => {
+            if success {
+                debug!(target: "duniter-libp2p", "[{}] Received peering message from {peer}", local_peer_id);
+            } else {
+                debug!(target: "duniter-libp2p", "[{}] Failed to receive peering message from {peer}", local_peer_id);
+            }
+        }
+        DuniterPeeringEvent::GoodPeering(peer, _) => {
+            debug!(target: "duniter-libp2p", "[{}] Received peering from {}", local_peer_id, peer);
+        }
+        DuniterPeeringEvent::AlreadyReceivedPeering(peer) => {
+            debug!(target: "duniter-libp2p", "[{}] Already received peering from {}", local_peer_id, peer);
+            panic!("Received peering from the same peer twice");
+        }
+        DuniterPeeringEvent::SelfPeeringPropagationFailed(peer, _peering, e) => {
+            debug!(target: "duniter-libp2p", "[{}] Failed to propagate self peering to {}: {}", local_peer_id, peer, e);
+            panic!("Failed to propagate self peering");
+        }
+        DuniterPeeringEvent::SelfPeeringPropagationSuccess(peer, _peering) => {
+            debug!(target: "duniter-libp2p", "[{}] Successfully propagated self peering to {}", local_peer_id, peer);
+        }
+    }
+}
+
+fn observed_role_to_str(role: ObservedRole) -> &'static str {
+    match role {
+        ObservedRole::Authority => "Authority",
+        ObservedRole::Full => "Full",
+        ObservedRole::Light => "Light",
+    }
+}
+
+// Spawns duniter nodes. Returns a future to spawn on the runtime.
+fn start_network(net: &mut DuniterPeeringTestNet, peers: usize) -> impl Future<Output = ()> {
+    let nodes = stream::FuturesUnordered::new();
+
+    for peer_id in 0..peers {
+        let net_service = net.peers[peer_id].network_service().clone();
+        net.peer_ids.push(net_service.local_peer_id());
+        let notification_service = net.peers[peer_id]
+            .take_notification_service(&format!("/{}", duniter_peering_protocol_name::NAME).into())
+            .unwrap();
+
+        let (rpc_sink, mut stream_unbounded) =
+            tracing_unbounded("mpsc_duniter_gossip_peering_test", 100_000);
+        let (sink_unbounded, stream) = async_channel::unbounded();
+        let (command_tx, command_rx) =
+            tracing_unbounded("mpsc_duniter_gossip_peering_test_command", 100_000);
+
+        // mapping from mpsc TracingUnboundedReceiver to mpmc Receiver
+        tokio::spawn(async move {
+            // forward the event
+            while let Some(command) = stream_unbounded.next().await {
+                sink_unbounded.send(command).await.unwrap();
+            }
+        });
+
+        let handler = endpoint_gossip::handler::build::<Block, _>(
+            notification_service,
+            net_service,
+            rpc_sink,
+            Some(command_rx),
+            DuniterEndpoints::new(),
+        );
+        // To send external commands to the handler (for tests or RPC commands).
+        net.peer_streams.push(stream);
+        net.peer_commands.push(command_tx);
+        let node = handler.run();
+
+        fn assert_send<T: Send>(_: &T) {}
+        assert_send(&node);
+
+        nodes.push(node);
+    }
+
+    nodes.for_each(|_| async move {})
+}
+
+#[derive(Default)]
+struct DuniterPeeringTestNet {
+    // Peers
+    peers: Vec<DuniterPeeringPeer>,
+    // IDs of the peers
+    peer_ids: Vec<PeerId>,
+    // RX of the gossip events
+    peer_streams: Vec<Receiver<DuniterPeeringEvent>>,
+    // TX to drive the handler (for tests or configuration)
+    peer_commands: Vec<TracingUnboundedSender<DuniterPeeringCommand>>,
+}
+
+type DuniterPeeringPeer = sc_network_test::Peer<PeerData, DuniterTestBlockImport>;
+
+impl DuniterPeeringTestNet {
+    fn new(n_authority: usize, n_full: usize) -> Self {
+        let mut net = DuniterPeeringTestNet {
+            peers: Vec::with_capacity(n_authority + n_full),
+            peer_ids: Vec::new(),
+            peer_streams: Vec::new(),
+            peer_commands: Vec::new(),
+        };
+
+        for _ in 0..n_authority {
+            net.add_authority_peer();
+        }
+
+        for _ in 0..n_full {
+            net.add_full_peer();
+        }
+
+        net
+    }
+
+    fn add_authority_peer(&mut self) {
+        self.add_full_peer_with_config(FullPeerConfig {
+            notifications_protocols: vec![
+                format!("/{}", duniter_peering_protocol_name::NAME).into()
+            ],
+            is_authority: true,
+            ..Default::default()
+        })
+    }
+}
+
+#[derive(Default)]
+struct PeerData;
+
+impl TestNetFactory for DuniterPeeringTestNet {
+    type BlockImport = DuniterTestBlockImport;
+    type PeerData = PeerData;
+    type Verifier = PassThroughVerifier;
+
+    fn make_verifier(&self, _client: PeersClient, _: &PeerData) -> Self::Verifier {
+        PassThroughVerifier::new(false) // use non-instant finality.
+    }
+
+    fn peer(&mut self, i: usize) -> &mut DuniterPeeringPeer {
+        &mut self.peers[i]
+    }
+
+    fn peers(&self) -> &Vec<DuniterPeeringPeer> {
+        &self.peers
+    }
+
+    fn peers_mut(&mut self) -> &mut Vec<DuniterPeeringPeer> {
+        &mut self.peers
+    }
+
+    fn mut_peers<F: FnOnce(&mut Vec<DuniterPeeringPeer>)>(&mut self, closure: F) {
+        closure(&mut self.peers);
+    }
+
+    fn make_block_import(
+        &self,
+        _client: PeersClient,
+    ) -> (
+        BlockImportAdapter<Self::BlockImport>,
+        Option<BoxJustificationImport<Block>>,
+        Self::PeerData,
+    ) {
+        (
+            BlockImportAdapter::new(DuniterTestBlockImport),
+            None,
+            PeerData,
+        )
+    }
+
+    fn add_full_peer(&mut self) {
+        self.add_full_peer_with_config(FullPeerConfig {
+            notifications_protocols: vec![
+                format!("/{}", duniter_peering_protocol_name::NAME).into()
+            ],
+            is_authority: false,
+            ..Default::default()
+        })
+    }
+}
+
+async fn run_until_complete(future: impl Future + Unpin, net: &Arc<Mutex<DuniterPeeringTestNet>>) {
+    let drive_to_completion = futures::future::poll_fn(|cx| {
+        net.lock().poll(cx);
+        Poll::<()>::Pending
+    });
+    future::select(future, drive_to_completion).await;
+}
+
+#[derive(Clone)]
+struct DuniterTestBlockImport;
+
+/// Inspired by GrandpaBlockImport
+#[async_trait::async_trait]
+impl<Block: BlockT> BlockImport<Block> for DuniterTestBlockImport {
+    type Error = ConsensusError;
+
+    /// Fake check block, always succeeds.
+    async fn check_block(
+        &self,
+        _block: BlockCheckParams<Block>,
+    ) -> Result<ImportResult, Self::Error> {
+        Ok(ImportResult::Imported(ImportedAux {
+            is_new_best: true,
+            bad_justification: false,
+            clear_justification_requests: false,
+            header_only: false,
+            needs_justification: false,
+        }))
+    }
+
+    /// Fake import block, always succeeds.
+    async fn import_block(
+        &self,
+        block: BlockImportParams<Block>,
+    ) -> Result<ImportResult, Self::Error> {
+        debug!("Importing block #{}", block.header.number());
+        Ok(ImportResult::Imported(ImportedAux {
+            is_new_best: true,
+            bad_justification: false,
+            clear_justification_requests: false,
+            header_only: false,
+            needs_justification: false,
+        }))
+    }
+}
diff --git a/node/src/endpoint_gossip/types/mod.rs b/node/src/endpoint_gossip/types/mod.rs
new file mode 100644
index 0000000000000000000000000000000000000000..a82ab6544898a848c5990b3bba1694059eebeb50
--- /dev/null
+++ b/node/src/endpoint_gossip/types/mod.rs
@@ -0,0 +1 @@
+pub mod validation_result;
diff --git a/node/src/endpoint_gossip/types/validation_result.rs b/node/src/endpoint_gossip/types/validation_result.rs
new file mode 100644
index 0000000000000000000000000000000000000000..0ffcee299b1f3315ad270484304a63e2d06332e8
--- /dev/null
+++ b/node/src/endpoint_gossip/types/validation_result.rs
@@ -0,0 +1,39 @@
+use sc_network::service::traits::ValidationResult;
+use std::fmt::Display;
+
+/// Clonable version of sc_network::service::traits::ValidationResult
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub enum DuniterStreamValidationResult {
+    /// Accept inbound substream.
+    Accept,
+
+    /// Reject inbound substream.
+    Reject,
+}
+
+impl Display for DuniterStreamValidationResult {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+        match self {
+            DuniterStreamValidationResult::Accept => write!(f, "Accept"),
+            DuniterStreamValidationResult::Reject => write!(f, "Reject"),
+        }
+    }
+}
+
+impl From<ValidationResult> for DuniterStreamValidationResult {
+    fn from(result: ValidationResult) -> Self {
+        match result {
+            ValidationResult::Accept => DuniterStreamValidationResult::Accept,
+            ValidationResult::Reject => DuniterStreamValidationResult::Reject,
+        }
+    }
+}
+
+impl From<DuniterStreamValidationResult> for ValidationResult {
+    fn from(result: DuniterStreamValidationResult) -> Self {
+        match result {
+            DuniterStreamValidationResult::Accept => ValidationResult::Accept,
+            DuniterStreamValidationResult::Reject => ValidationResult::Reject,
+        }
+    }
+}
diff --git a/node/src/lib.rs b/node/src/lib.rs
index 2e557430013a21a5918a9ea56e3f4decfc38d470..be194b480d4ef9b256b3be182246855eaf35b082 100644
--- a/node/src/lib.rs
+++ b/node/src/lib.rs
@@ -65,5 +65,6 @@
 pub mod chain_spec;
 pub mod cli;
 pub mod command;
+pub mod endpoint_gossip;
 pub mod rpc;
 pub mod service;
diff --git a/node/src/main.rs b/node/src/main.rs
index 49614a2666558582a3bc3393c6f02046af62c33e..90e8eaff053f330c0560384156f293063b718bd7 100644
--- a/node/src/main.rs
+++ b/node/src/main.rs
@@ -18,11 +18,13 @@
 
 #![warn(missing_docs)]
 
+//mod benchmarking;
 mod chain_spec;
 #[macro_use]
 mod service;
 pub(crate) mod cli;
 mod command;
+mod endpoint_gossip;
 mod rpc;
 
 fn main() -> sc_cli::Result<()> {
diff --git a/node/src/rpc.rs b/node/src/rpc.rs
index f5e6f09b23a70f8f48131f89b7c92ff756a63386..4bda3af5b819cf5029941d512d1eeed5bf8701c6 100644
--- a/node/src/rpc.rs
+++ b/node/src/rpc.rs
@@ -15,12 +15,14 @@
 // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! A collection of node-specific RPC methods.
+//!
 //! Substrate provides the `sc-rpc` crate, which defines the core RPC layer
 //! used by Substrate nodes. This file extends those RPC definitions with
 //! capabilities that are specific to this project's runtime configuration.
 
 #![warn(missing_docs)]
 
+use crate::endpoint_gossip::rpc::{api::DuniterPeeringRpcApiServer, state::DuniterPeeringsState};
 use common_runtime::{AccountId, Balance, Block, BlockNumber, Hash, Index};
 use jsonrpsee::RpcModule;
 use sc_consensus_babe::{BabeApi, BabeWorkerHandle};
@@ -60,6 +62,13 @@ pub struct GrandpaDeps<B> {
     pub finality_provider: Arc<FinalityProofProvider<B, Block>>,
 }
 
+/// Dependencies for DuniterPeering
+#[derive(Clone)]
+pub struct DuniterPeeringRpcModuleDeps {
+    /// The state of the DuniterPeering RPC module which will be exposed.
+    pub state: DuniterPeeringsState,
+}
+
 /// Full client dependencies.
 pub struct FullDeps<C, P, SC, B> {
     /// The client instance to use.
@@ -76,6 +85,8 @@ pub struct FullDeps<C, P, SC, B> {
     pub babe: Option<BabeDeps>,
     /// GRANDPA specific dependencies.
     pub grandpa: GrandpaDeps<B>,
+    /// DuniterPeering specific dependencies.
+    pub duniter_peering: DuniterPeeringRpcModuleDeps,
 }
 
 /// Instantiate all full RPC extensions.
@@ -108,6 +119,7 @@ where
         command_sink_opt,
         babe,
         grandpa,
+        duniter_peering: endpoint_gossip,
     } = deps;
 
     if let Some(babe) = babe {
@@ -139,7 +151,7 @@ where
     )?;
 
     module.merge(System::new(client.clone(), pool).into_rpc())?;
-    module.merge(TransactionPayment::new(client).into_rpc())?;
+    module.merge(TransactionPayment::new(client.clone()).into_rpc())?;
     if let Some(command_sink) = command_sink_opt {
         // We provide the rpc handler with the sending end of the channel to allow the rpc
         // send EngineCommands to the background block authorship task.
@@ -150,6 +162,10 @@ where
     // `YourRpcStruct` should have a reference to a client, which is needed
     // to call into the runtime.
     // `module.merge(YourRpcTrait::into_rpc(YourRpcStruct::new(ReferenceToClient, ...)))?;`
+    module.merge(
+        crate::endpoint_gossip::rpc::api::DuniterPeeringRpcApiImpl::new(endpoint_gossip.state)
+            .into_rpc(),
+    )?;
 
     Ok(module)
 }
diff --git a/node/src/service.rs b/node/src/service.rs
index 3cc5ec6337691057741515fc0a3c1faeb59ea823..35d0a8857734eccdaf4d17f25ef9e96d3fc9c39e 100644
--- a/node/src/service.rs
+++ b/node/src/service.rs
@@ -19,9 +19,18 @@
 pub mod client;
 
 use self::client::{Client, ClientHandle, RuntimeApiCollection};
+use crate::{
+    endpoint_gossip::{
+        rpc::state::DuniterPeeringsState,
+        well_known_endpoint_types::{RPC, SQUID},
+        DuniterEndpoint, DuniterEndpoints, Peering,
+    },
+    rpc::DuniterPeeringRpcModuleDeps,
+};
 use async_io::Timer;
 use common_runtime::Block;
 use futures::{Stream, StreamExt};
+use log::error;
 use sc_client_api::{client::BlockBackend, Backend};
 use sc_consensus_grandpa::{FinalityProofProvider, SharedVoterState};
 use sc_consensus_manual_seal::{run_manual_seal, EngineCommand, ManualSealParams};
@@ -30,10 +39,11 @@ use sc_service::{
     error::Error as ServiceError, Configuration, PartialComponents, TaskManager, WarpSyncConfig,
 };
 use sc_telemetry::{Telemetry, TelemetryWorker};
+use sc_transaction_pool_api::TransactionPool;
 use sp_consensus_babe::inherents::InherentDataProvider;
 use sp_core::H256;
 use sp_runtime::traits::BlakeTwo256;
-use std::{sync::Arc, time::Duration};
+use std::{fs, sync::Arc, time::Duration};
 
 #[cfg(not(feature = "runtime-benchmarks"))]
 type HostFunctions = sp_io::SubstrateHostFunctions;
@@ -118,15 +128,19 @@ pub fn new_chain_ops(
     ),
     ServiceError,
 > {
-    let PartialComponents {
-        client,
-        backend,
-        import_queue,
-        task_manager,
-        ..
-    } = new_partial::<runtime_executor::runtime::RuntimeApi, runtime_executor::Executor>(
+    let (
+        PartialComponents {
+            client,
+            backend,
+            import_queue,
+            task_manager,
+            ..
+        },
+        _duniter_config,
+    ) = new_partial::<runtime_executor::runtime::RuntimeApi, runtime_executor::Executor>(
         config,
         manual_consensus,
+        Default::default(),
     )?;
     Ok((
         Arc::new(Client::Client(client)),
@@ -147,29 +161,33 @@ type FullGrandpaBlockImport<RuntimeApi, Executor> = sc_consensus_grandpa::Grandp
 pub fn new_partial<RuntimeApi, Executor>(
     config: &Configuration,
     consensus_manual: bool,
+    duniter_options: crate::cli::DuniterConfigExtension,
 ) -> Result<
-    sc_service::PartialComponents<
-        FullClient<RuntimeApi, Executor>,
-        FullBackend,
-        FullSelectChain,
-        sc_consensus::DefaultImportQueue<Block>,
-        sc_transaction_pool::FullPool<Block, FullClient<RuntimeApi, Executor>>,
-        (
-            sc_consensus_babe::BabeBlockImport<
-                Block,
-                FullClient<RuntimeApi, Executor>,
-                FullGrandpaBlockImport<RuntimeApi, Executor>,
-            >,
-            sc_consensus_babe::BabeLink<Block>,
-            Option<sc_consensus_babe::BabeWorkerHandle<Block>>,
-            sc_consensus_grandpa::LinkHalf<
-                Block,
-                FullClient<RuntimeApi, Executor>,
-                FullSelectChain,
-            >,
-            Option<Telemetry>,
-        ),
-    >,
+    (
+        sc_service::PartialComponents<
+            FullClient<RuntimeApi, Executor>,
+            FullBackend,
+            FullSelectChain,
+            sc_consensus::DefaultImportQueue<Block>,
+            sc_transaction_pool::TransactionPoolWrapper<Block, FullClient<RuntimeApi, Executor>>,
+            (
+                sc_consensus_babe::BabeBlockImport<
+                    Block,
+                    FullClient<RuntimeApi, Executor>,
+                    FullGrandpaBlockImport<RuntimeApi, Executor>,
+                >,
+                sc_consensus_babe::BabeLink<Block>,
+                Option<sc_consensus_babe::BabeWorkerHandle<Block>>,
+                sc_consensus_grandpa::LinkHalf<
+                    Block,
+                    FullClient<RuntimeApi, Executor>,
+                    FullSelectChain,
+                >,
+                Option<Telemetry>,
+            ),
+        >,
+        crate::cli::DuniterConfigExtension,
+    ),
     ServiceError,
 >
 where
@@ -214,12 +232,15 @@ where
 
     let select_chain = sc_consensus::LongestChain::new(backend.clone());
 
-    let transaction_pool = sc_transaction_pool::BasicPool::new_full(
-        config.transaction_pool.clone(),
-        config.role.is_authority().into(),
-        config.prometheus_registry(),
-        task_manager.spawn_essential_handle(),
-        client.clone(),
+    let transaction_pool = Arc::from(
+        sc_transaction_pool::Builder::new(
+            task_manager.spawn_essential_handle(),
+            client.clone(),
+            config.role.is_authority().into(),
+        )
+        .with_options(config.transaction_pool.clone())
+        .with_prometheus(config.prometheus_registry())
+        .build(),
     );
 
     let client_ = client.clone();
@@ -277,22 +298,25 @@ where
         (queue, Some(handle))
     };
 
-    Ok(sc_service::PartialComponents {
-        client,
-        backend,
-        task_manager,
-        import_queue,
-        keystore_container,
-        select_chain,
-        transaction_pool,
-        other: (
-            babe_block_import,
-            babe_link,
-            babe_worker_handle,
-            grandpa_link,
-            telemetry,
-        ),
-    })
+    Ok((
+        sc_service::PartialComponents {
+            client,
+            backend,
+            task_manager,
+            import_queue,
+            keystore_container,
+            select_chain,
+            transaction_pool,
+            other: (
+                babe_block_import,
+                babe_link,
+                babe_worker_handle,
+                grandpa_link,
+                telemetry,
+            ),
+        },
+        duniter_options,
+    ))
 }
 
 /// Builds a new service for a full client.
@@ -303,6 +327,7 @@ pub fn new_full<
 >(
     config: Configuration,
     sealing: crate::cli::Sealing,
+    duniter_options: crate::cli::DuniterConfigExtension,
 ) -> Result<TaskManager, ServiceError>
 where
     RuntimeApi: sp_api::ConstructRuntimeApi<Block, FullClient<RuntimeApi, Executor>>
@@ -313,26 +338,32 @@ where
     Executor: sc_executor::NativeExecutionDispatch + 'static,
     Executor: sc_executor::sp_wasm_interface::HostFunctions + 'static,
 {
-    let sc_service::PartialComponents {
-        client,
-        backend,
-        mut task_manager,
-        import_queue,
-        keystore_container,
-        select_chain,
-        transaction_pool,
-        other: (block_import, babe_link, babe_worker_handle, grandpa_link, mut telemetry),
-    } = new_partial::<RuntimeApi, Executor>(&config, sealing.is_manual_consensus())?;
-
-    let grandpa_protocol_name = sc_consensus_grandpa::protocol_standard_name(
-        &client
-            .block_hash(0)
-            .ok()
-            .flatten()
-            .expect("Genesis block exists; qed"),
-        &config.chain_spec,
-    );
+    let (
+        sc_service::PartialComponents {
+            client,
+            backend,
+            mut task_manager,
+            import_queue,
+            keystore_container,
+            select_chain,
+            transaction_pool,
+            other: (block_import, babe_link, babe_worker_handle, grandpa_link, mut telemetry),
+        },
+        duniter_options,
+    ) = new_partial::<RuntimeApi, Executor>(
+        &config,
+        sealing.is_manual_consensus(),
+        duniter_options,
+    )?;
 
+    // genesis hash used in protocol names
+    let genesis_hash = client
+        .block_hash(0)
+        .ok()
+        .flatten()
+        .expect("Genesis block exists; qed");
+
+    // shared network config
     let mut net_config = sc_network::config::FullNetworkConfiguration::<
         Block,
         <Block as sp_runtime::traits::Block>::Hash,
@@ -340,20 +371,35 @@ where
     >::new(&config.network, config.prometheus_registry().cloned());
     let metrics = N::register_notification_metrics(config.prometheus_registry());
     let peer_store_handle = net_config.peer_store_handle();
+
+    // grandpa network config
+    let grandpa_protocol_name =
+        sc_consensus_grandpa::protocol_standard_name(&genesis_hash, &config.chain_spec);
     let (grandpa_protocol_config, grandpa_notification_service) =
         sc_consensus_grandpa::grandpa_peers_set_config::<_, N>(
             grandpa_protocol_name.clone(),
             metrics.clone(),
-            peer_store_handle,
+            peer_store_handle.clone(),
         );
     net_config.add_notification_protocol(grandpa_protocol_config);
 
+    let (duniter_peering_params, duniter_peering_config) =
+        crate::endpoint_gossip::DuniterPeeringParams::new::<_, Block, N>(
+            genesis_hash,
+            config.chain_spec.fork_id(),
+            metrics.clone(),
+            Arc::clone(&peer_store_handle),
+        );
+    net_config.add_notification_protocol(duniter_peering_config);
+
+    // warp sync network provider
     let warp_sync = Arc::new(sc_consensus_grandpa::warp_proof::NetworkProvider::new(
         backend.clone(),
         grandpa_link.shared_authority_set().clone(),
         Vec::default(),
     ));
 
+    // build network service from params
     let (network, system_rpc_tx, tx_handler_controller, network_starter, sync_service) =
         sc_service::build_network(sc_service::BuildNetworkParams {
             config: &config,
@@ -368,6 +414,7 @@ where
             metrics,
         })?;
 
+    // aliases
     let role = config.role;
     let force_authoring = config.force_authoring;
     let backoff_authoring_blocks: Option<()> = None;
@@ -394,7 +441,7 @@ where
                 is_validator: role.is_authority(),
                 enable_http_requests: false,
                 custom_extensions: move |_| vec![],
-            })
+            })?
             .run(client.clone(), task_manager.spawn_handle())
             .boxed(),
         );
@@ -424,16 +471,14 @@ where
                     crate::cli::Sealing::Instant => {
                         Box::new(
                             // This bit cribbed from the implementation of instant seal.
-                            transaction_pool
-                                .pool()
-                                .validated_pool()
-                                .import_notification_stream()
-                                .map(|_| EngineCommand::SealNewBlock {
+                            transaction_pool.import_notification_stream().map(|_| {
+                                EngineCommand::SealNewBlock {
                                     create_empty: false,
                                     finalize: false,
                                     parent_hash: None,
                                     sender: None,
-                                }),
+                                }
+                            }),
                         )
                     }
                     crate::cli::Sealing::Manual => {
@@ -578,6 +623,7 @@ where
     let shared_voter_state = SharedVoterState::empty();
     let finality_proof_provider =
         FinalityProofProvider::new_for_service(backend.clone(), Some(shared_authority_set.clone()));
+    let shared_duniter_peerings_state = DuniterPeeringsState::empty();
 
     let rpc_extensions_builder = {
         let client = client.clone();
@@ -589,6 +635,7 @@ where
             keystore: keystore.clone(),
         });
         let rpc_setup = shared_voter_state.clone();
+        let state_clone = shared_duniter_peerings_state.clone();
 
         Box::new(
             move |subscription_task_executor: SubscriptionTaskExecutor| {
@@ -599,6 +646,9 @@ where
                     subscription_executor: subscription_task_executor.clone(),
                     finality_provider: finality_proof_provider.clone(),
                 };
+                let endpoint_gossip_deps = DuniterPeeringRpcModuleDeps {
+                    state: state_clone.clone(),
+                };
 
                 let deps = crate::rpc::FullDeps {
                     client: client.clone(),
@@ -606,6 +656,7 @@ where
                     select_chain: select_chain.clone(),
                     babe: babe_deps.clone(),
                     grandpa: grandpa_deps,
+                    duniter_peering: endpoint_gossip_deps,
                     command_sink_opt: command_sink_opt.clone(),
                 };
 
@@ -658,8 +709,8 @@ where
         let grandpa_config = sc_consensus_grandpa::GrandpaParams {
             config: grandpa_config,
             link: grandpa_link,
-            sync: sync_service,
-            network,
+            sync: sync_service.clone(),
+            network: network.clone(),
             voting_rule: sc_consensus_grandpa::VotingRulesBuilder::default().build(),
             prometheus_registry,
             shared_voter_state,
@@ -679,6 +730,53 @@ where
         );
     }
 
+    // Get the endpoint list from file first
+    let mut duniter_endpoints: DuniterEndpoints = match duniter_options.public_endpoints {
+        None => DuniterEndpoints::truncate_from(vec![]),
+        Some(path) => fs::read_to_string(path)
+            .map(|s| {
+                serde_json::from_str::<Peering>(&s).expect("Failed to parse Duniter endpoints")
+            })
+            .map(|p| p.endpoints)
+            .expect("Failed to read Duniter endpoints"),
+    };
+    // Then add through the specific options
+    if let Some(rpc_endoint) = duniter_options.public_rpc {
+        if duniter_endpoints
+            .try_push(DuniterEndpoint {
+                protocol: RPC.into(),
+                address: rpc_endoint,
+            })
+            .is_err()
+        {
+            error!("Could not add RPC endpoint, too much endpoints already");
+        }
+    }
+    if let Some(squid_endoint) = duniter_options.public_squid {
+        if duniter_endpoints
+            .try_push(DuniterEndpoint {
+                protocol: SQUID.into(),
+                address: squid_endoint,
+            })
+            .is_err()
+        {
+            error!("Could not add SQUID endpoint, too much endpoints already");
+        }
+    }
+
+    task_manager.spawn_handle().spawn_blocking(
+        "duniter-endpoint-gossip-handler",
+        Some("networking"),
+        crate::endpoint_gossip::handler::build::<Block, _>(
+            duniter_peering_params.notification_service,
+            network.clone(),
+            shared_duniter_peerings_state.listen(),
+            None, // We don't send command for now
+            duniter_endpoints,
+        )
+        .run(),
+    );
+
     network_starter.start_network();
 
     log::info!("***** Duniter has fully started *****");
diff --git a/node/src/service/client.rs b/node/src/service/client.rs
index 34fbea16a7e4ae512759761d3a9a7d5359865873..3ff70a9caa8601df212a6bc0749aa113cbcf9a10 100644
--- a/node/src/service/client.rs
+++ b/node/src/service/client.rs
@@ -16,8 +16,8 @@
 
 use common_runtime::{AccountId, Balance, Block, BlockNumber, Hash, Header, Index};
 use sc_client_api::{
-    AuxStore, Backend as BackendT, BlockchainEvents, KeysIter, MerkleValue, PairsIter,
-    UsageProvider,
+    AuxStore, Backend as BackendT, BlockBackend, BlockchainEvents, KeysIter, MerkleValue,
+    PairsIter, UsageProvider,
 };
 use sp_api::{CallApiAt, ProvideRuntimeApi};
 use sp_blockchain::{HeaderBackend, HeaderMetadata};
@@ -26,7 +26,7 @@ use sp_core::{Encode, Pair};
 use sp_runtime::{
     generic::SignedBlock,
     traits::{BlakeTwo256, Block as BlockT},
-    Justifications,
+    Justifications, SaturatedConversion,
 };
 use sp_storage::{ChildInfo, StorageData, StorageKey};
 use std::sync::Arc;
@@ -322,36 +322,39 @@ impl BenchmarkCallSigner<super::runtime_executor::runtime::RuntimeCall, sp_core:
         genesis: sp_core::H256,
         acc: sp_core::sr25519::Pair,
     ) -> sp_runtime::OpaqueExtrinsic {
-        // use runtime;
-
-        let extra: super::runtime_executor::runtime::SignedExtra = (
+        let tx_ext: super::runtime_executor::runtime::TxExtension = (
             frame_system::CheckNonZeroSender::<super::runtime_executor::runtime::Runtime>::new(),
             frame_system::CheckSpecVersion::<super::runtime_executor::runtime::Runtime>::new(),
             frame_system::CheckTxVersion::<super::runtime_executor::runtime::Runtime>::new(),
             frame_system::CheckGenesis::<super::runtime_executor::runtime::Runtime>::new(),
-            frame_system::CheckMortality::<super::runtime_executor::runtime::Runtime>::from(
+            frame_system::CheckEra::<super::runtime_executor::runtime::Runtime>::from(
                 sp_runtime::generic::Era::mortal(period, current_block),
             ),
-            frame_system::CheckNonce::<super::runtime_executor::runtime::Runtime>::from(nonce)
-                .into(),
+            pallet_oneshot_account::CheckNonce::<super::runtime_executor::runtime::Runtime>::from(
+                frame_system::CheckNonce::<super::runtime_executor::runtime::Runtime>::from(nonce),
+            ),
             frame_system::CheckWeight::<super::runtime_executor::runtime::Runtime>::new(),
             pallet_transaction_payment::ChargeTransactionPayment::<
                 super::runtime_executor::runtime::Runtime,
             >::from(0),
+            frame_metadata_hash_extension::CheckMetadataHash::<
+                super::runtime_executor::runtime::Runtime,
+            >::new(false),
         );
 
         let payload = sp_runtime::generic::SignedPayload::from_raw(
             call.clone(),
-            extra.clone(),
+            tx_ext.clone(),
             (
                 (),
                 super::runtime_executor::runtime::VERSION.spec_version,
                 super::runtime_executor::runtime::VERSION.transaction_version,
                 genesis,
-                genesis,
+                self.chain_info().best_hash,
                 (),
                 (),
                 (),
+                None,
             ),
         );
 
@@ -360,7 +363,7 @@ impl BenchmarkCallSigner<super::runtime_executor::runtime::RuntimeCall, sp_core:
             call,
             sp_runtime::AccountId32::from(acc.public()).into(),
             common_runtime::Signature::Sr25519(signature),
-            extra,
+            tx_ext,
         )
         .into()
     }
@@ -377,16 +380,17 @@ impl frame_benchmarking_cli::ExtrinsicBuilder for Client {
 
     fn build(&self, nonce: u32) -> std::result::Result<sp_runtime::OpaqueExtrinsic, &'static str> {
         with_client! {
-            self, client, {
-                let call = super::runtime_executor::runtime::RuntimeCall::System(super::runtime_executor::runtime::SystemCall::remark { remark: vec![] });
-                let signer = sp_keyring::Sr25519Keyring::Bob.pair();
+                    self, client, {
+                        let call = super::runtime_executor::runtime::RuntimeCall::System(super::runtime_executor::runtime::SystemCall::remark { remark: vec![] });
+                        let signer = sp_keyring::Sr25519Keyring::Bob.pair();
 
-                let period = super::runtime_executor::runtime::BlockHashCount::get().checked_next_power_of_two().map(|c| c / 2).unwrap_or(2) as u64;
-                let genesis = client.usage_info().chain.best_hash;
+                        let period = super::runtime_executor::runtime::BlockHashCount::get().checked_next_power_of_two().map(|c| c / 2).unwrap_or(2) as u64;
+                        let genesis = client.block_hash(0).ok().flatten().expect("Genesis block exists; qed");
+        let best_block = client.chain_info().best_number;
 
-                Ok(client.sign_call(call, nonce, 0, period, genesis, signer))
-            }
-        }
+                        Ok(client.sign_call(call, nonce, best_block.saturated_into(), period, genesis, signer))
+                    }
+                }
     }
 }
 
diff --git a/pallets/authority-members/src/lib.rs b/pallets/authority-members/src/lib.rs
index f4118ee3aed9eb692ef20fecf8cd7dbd22cc3cff..b69c0d72993f568c507dbad2b5f9e773eb791f8b 100644
--- a/pallets/authority-members/src/lib.rs
+++ b/pallets/authority-members/src/lib.rs
@@ -68,6 +68,7 @@ use frame_support::traits::Get;
 use scale_info::prelude::{collections::BTreeMap, vec, vec::Vec};
 use sp_runtime::traits::{Convert, IsMember};
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
diff --git a/pallets/authority-members/src/mock.rs b/pallets/authority-members/src/mock.rs
index 8afd17edf1855d4cae6591f65a5dd05f63635ddf..1a582ef73b4a31082c1fc11bd90f28012920d8f5 100644
--- a/pallets/authority-members/src/mock.rs
+++ b/pallets/authority-members/src/mock.rs
@@ -16,7 +16,7 @@
 
 use super::*;
 use crate::{self as pallet_authority_members};
-use frame_support::{pallet_prelude::*, parameter_types, traits::Everything};
+use frame_support::{derive_impl, pallet_prelude::*, parameter_types, traits::Everything};
 use frame_system as system;
 use pallet_offences::{traits::OnOffenceHandler, SlashStrategy};
 use pallet_session::ShouldEndSession;
@@ -60,36 +60,22 @@ parameter_types! {
     pub const SS58Prefix: u8 = 42;
 }
 
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
 impl system::Config for Test {
-    type AccountData = ();
     type AccountId = AccountId;
     type BaseCallFilter = Everything;
     type Block = Block;
     type BlockHashCount = BlockHashCount;
-    type BlockLength = ();
-    type BlockWeights = ();
-    type DbWeight = ();
     type Hash = H256;
     type Hashing = BlakeTwo256;
     type Lookup = IdentityLookup<Self::AccountId>;
     type MaxConsumers = frame_support::traits::ConstU32<16>;
-    type MultiBlockMigrator = ();
     type Nonce = u64;
-    type OnKilledAccount = ();
-    type OnNewAccount = ();
-    type OnSetCode = ();
     type PalletInfo = PalletInfo;
-    type PostInherents = ();
-    type PostTransactions = ();
-    type PreInherents = ();
     type RuntimeCall = RuntimeCall;
     type RuntimeEvent = RuntimeEvent;
     type RuntimeOrigin = RuntimeOrigin;
-    type RuntimeTask = ();
     type SS58Prefix = SS58Prefix;
-    type SingleBlockMigrations = ();
-    type SystemWeightInfo = ();
-    type Version = ();
 }
 
 pub struct TestSessionHandler;
diff --git a/pallets/certification/src/lib.rs b/pallets/certification/src/lib.rs
index 204c8cb08d70bb44323b8eaa53df92db2ff69154..c8301d22138ed72937bbfcceaaf3f31a10a830b0 100644
--- a/pallets/certification/src/lib.rs
+++ b/pallets/certification/src/lib.rs
@@ -49,6 +49,7 @@ use frame_support::{pallet_prelude::*, traits::StorageVersion};
 use scale_info::prelude::{collections::BTreeMap, fmt::Debug, vec::Vec};
 use sp_runtime::traits::AtLeast32BitUnsigned;
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
diff --git a/pallets/certification/src/mock.rs b/pallets/certification/src/mock.rs
index 7f24b214bb241c170a08a26e714ff77ebe621f6a..5f89fa5301d7df1bcbba9fdd5d91e66192e91d66 100644
--- a/pallets/certification/src/mock.rs
+++ b/pallets/certification/src/mock.rs
@@ -16,7 +16,7 @@
 
 use crate::{self as pallet_certification};
 use frame_support::{
-    parameter_types,
+    derive_impl, parameter_types,
     traits::{Everything, OnFinalize, OnInitialize},
 };
 use frame_system as system;
@@ -43,36 +43,22 @@ parameter_types! {
     pub const SS58Prefix: u8 = 42;
 }
 
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
 impl system::Config for Test {
-    type AccountData = ();
     type AccountId = AccountId;
     type BaseCallFilter = Everything;
     type Block = Block;
     type BlockHashCount = BlockHashCount;
-    type BlockLength = ();
-    type BlockWeights = ();
-    type DbWeight = ();
     type Hash = H256;
     type Hashing = BlakeTwo256;
     type Lookup = IdentityLookup<Self::AccountId>;
     type MaxConsumers = frame_support::traits::ConstU32<16>;
-    type MultiBlockMigrator = ();
     type Nonce = u64;
-    type OnKilledAccount = ();
-    type OnNewAccount = ();
-    type OnSetCode = ();
     type PalletInfo = PalletInfo;
-    type PostInherents = ();
-    type PostTransactions = ();
-    type PreInherents = ();
     type RuntimeCall = RuntimeCall;
     type RuntimeEvent = RuntimeEvent;
     type RuntimeOrigin = RuntimeOrigin;
-    type RuntimeTask = ();
     type SS58Prefix = SS58Prefix;
-    type SingleBlockMigrations = ();
-    type SystemWeightInfo = ();
-    type Version = ();
 }
 
 parameter_types! {
diff --git a/pallets/distance/src/lib.rs b/pallets/distance/src/lib.rs
index 738ee59099fe5be6207f839093888f244d316760..497aa8a9c3a90e754e6c8d24fc72c3d1f710f6ce 100644
--- a/pallets/distance/src/lib.rs
+++ b/pallets/distance/src/lib.rs
@@ -103,6 +103,7 @@ pub const MAX_EVALUATIONS_PER_SESSION: u32 = 1_300; // See https://git.duniter.o
 /// Maximum number of evaluators in an evaluation period.
 pub const MAX_EVALUATORS_PER_SESSION: u32 = 100;
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet()]
 pub mod pallet {
     use super::*;
diff --git a/pallets/distance/src/mock.rs b/pallets/distance/src/mock.rs
index 5198424e0f7f4970210adef99c0355edf93bda3a..e804df741245c2fc738b79305e15f226033c2333 100644
--- a/pallets/distance/src/mock.rs
+++ b/pallets/distance/src/mock.rs
@@ -17,7 +17,7 @@
 use crate::{self as pallet_distance};
 use core::marker::PhantomData;
 use frame_support::{
-    parameter_types,
+    derive_impl, parameter_types,
     traits::{Everything, OnFinalize, OnInitialize},
 };
 use frame_system as system;
@@ -66,36 +66,23 @@ parameter_types! {
     pub const SS58Prefix: u8 = 42;
 }
 
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
 impl system::Config for Test {
     type AccountData = AccountData<u64>;
     type AccountId = AccountId;
     type BaseCallFilter = Everything;
     type Block = Block;
     type BlockHashCount = BlockHashCount;
-    type BlockLength = ();
-    type BlockWeights = ();
-    type DbWeight = ();
     type Hash = H256;
     type Hashing = BlakeTwo256;
     type Lookup = IdentityLookup<Self::AccountId>;
     type MaxConsumers = frame_support::traits::ConstU32<16>;
-    type MultiBlockMigrator = ();
     type Nonce = u64;
-    type OnKilledAccount = ();
-    type OnNewAccount = ();
-    type OnSetCode = ();
     type PalletInfo = PalletInfo;
-    type PostInherents = ();
-    type PostTransactions = ();
-    type PreInherents = ();
     type RuntimeCall = RuntimeCall;
     type RuntimeEvent = RuntimeEvent;
     type RuntimeOrigin = RuntimeOrigin;
-    type RuntimeTask = ();
     type SS58Prefix = SS58Prefix;
-    type SingleBlockMigrations = ();
-    type SystemWeightInfo = ();
-    type Version = ();
 }
 
 pub struct TestSessionHandler;
@@ -199,6 +186,7 @@ parameter_types! {
 impl pallet_balances::Config for Test {
     type AccountStore = System;
     type Balance = Balance;
+    type DoneSlashHandler = ();
     type DustRemoval = ();
     type ExistentialDeposit = ExistentialDeposit;
     type FreezeIdentifier = ();
diff --git a/pallets/duniter-account/Cargo.toml b/pallets/duniter-account/Cargo.toml
index 6f5d79aff488c6f3244065502027c639fdd92aff..ed9a58d1782f7e2f8b14b8479bd0d2505550d819 100644
--- a/pallets/duniter-account/Cargo.toml
+++ b/pallets/duniter-account/Cargo.toml
@@ -17,6 +17,7 @@ runtime-benchmarks = [
 	"pallet-balances/runtime-benchmarks",
 	"pallet-identity/runtime-benchmarks",
 	"pallet-quota/runtime-benchmarks",
+	"pallet-transaction-payment/runtime-benchmarks",
 	"pallet-treasury/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 ]
diff --git a/pallets/duniter-account/src/lib.rs b/pallets/duniter-account/src/lib.rs
index ddd56e0addf284638668be629f5a1b5e7e077374..82fb57f09fd8ec0cc1e9fd27a1cc847cab7b2dee 100644
--- a/pallets/duniter-account/src/lib.rs
+++ b/pallets/duniter-account/src/lib.rs
@@ -61,6 +61,7 @@ use scale_info::prelude::{
 };
 use sp_runtime::traits::{DispatchInfoOf, PostDispatchInfoOf, Saturating};
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
@@ -320,6 +321,16 @@ where
     type Balance = BalanceOf<T>;
     type LiquidityInfo = Option<Credit<T::AccountId, T::Currency>>;
 
+    fn can_withdraw_fee(
+        who: &T::AccountId,
+        call: &T::RuntimeCall,
+        dispatch_info: &DispatchInfoOf<T::RuntimeCall>,
+        fee: Self::Balance,
+        tip: Self::Balance,
+    ) -> Result<(), TransactionValidityError> {
+        T::InnerOnChargeTransaction::can_withdraw_fee(who, call, dispatch_info, fee, tip)
+    }
+
     fn withdraw_fee(
         who: &T::AccountId,
         call: &T::RuntimeCall,
@@ -355,6 +366,16 @@ where
         }
         Ok(())
     }
+
+    #[cfg(feature = "runtime-benchmarks")]
+    fn endow_account(who: &T::AccountId, amount: Self::Balance) {
+        T::InnerOnChargeTransaction::endow_account(who, amount);
+    }
+
+    #[cfg(feature = "runtime-benchmarks")]
+    fn minimum_balance() -> Self::Balance {
+        T::InnerOnChargeTransaction::minimum_balance()
+    }
 }
 
 /// Implementation of the CheckAccountWorthiness trait for the Pallet.
diff --git a/pallets/duniter-test-parameters/src/lib.rs b/pallets/duniter-test-parameters/src/lib.rs
index 346a8823035c4707e5f209f865bcdd05122f08f7..b2bbc8bcc6ca2ae60c792609aabc92ed081da438 100644
--- a/pallets/duniter-test-parameters/src/lib.rs
+++ b/pallets/duniter-test-parameters/src/lib.rs
@@ -66,6 +66,7 @@ pub mod types {
     }
 }
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
diff --git a/pallets/duniter-wot/src/lib.rs b/pallets/duniter-wot/src/lib.rs
index 1a560bdf699808f4c7ee7d1da2f4c7189ec600e2..d05504a249d53d4b7b8485925a509da1ebbdcf46 100644
--- a/pallets/duniter-wot/src/lib.rs
+++ b/pallets/duniter-wot/src/lib.rs
@@ -61,6 +61,7 @@ use pallet_membership::MembershipRemovalReason;
 
 type IdtyIndex = u32;
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
diff --git a/pallets/duniter-wot/src/mock.rs b/pallets/duniter-wot/src/mock.rs
index ddb4bf63f64b807a7a40abe2aa40a9d91a43ad57..a3c550632f5febae809a1bf20cff4c28f75eb579 100644
--- a/pallets/duniter-wot/src/mock.rs
+++ b/pallets/duniter-wot/src/mock.rs
@@ -16,7 +16,7 @@
 
 use super::*;
 use crate::{self as pallet_duniter_wot};
-use frame_support::{parameter_types, traits::Everything};
+use frame_support::{derive_impl, parameter_types, traits::Everything};
 use frame_system as system;
 use sp_core::H256;
 use sp_runtime::{
@@ -47,36 +47,22 @@ parameter_types! {
     pub const SS58Prefix: u8 = 42;
 }
 
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
 impl system::Config for Test {
-    type AccountData = ();
     type AccountId = AccountId;
     type BaseCallFilter = Everything;
     type Block = Block;
     type BlockHashCount = BlockHashCount;
-    type BlockLength = ();
-    type BlockWeights = ();
-    type DbWeight = ();
     type Hash = H256;
     type Hashing = BlakeTwo256;
     type Lookup = IdentityLookup<Self::AccountId>;
     type MaxConsumers = frame_support::traits::ConstU32<16>;
-    type MultiBlockMigrator = ();
     type Nonce = u64;
-    type OnKilledAccount = ();
-    type OnNewAccount = ();
-    type OnSetCode = ();
     type PalletInfo = PalletInfo;
-    type PostInherents = ();
-    type PostTransactions = ();
-    type PreInherents = ();
     type RuntimeCall = RuntimeCall;
     type RuntimeEvent = RuntimeEvent;
     type RuntimeOrigin = RuntimeOrigin;
-    type RuntimeTask = ();
     type SS58Prefix = SS58Prefix;
-    type SingleBlockMigrations = ();
-    type SystemWeightInfo = ();
-    type Version = ();
 }
 
 // DuniterWot
diff --git a/pallets/duniter-wot/src/tests.rs b/pallets/duniter-wot/src/tests.rs
index c82be351435b92b532ec752ca1c30f08459d6678..a6baf65e2791e2803458c1df65d126966f8b7167 100644
--- a/pallets/duniter-wot/src/tests.rs
+++ b/pallets/duniter-wot/src/tests.rs
@@ -168,7 +168,6 @@ fn test_confirm_idty_ok() {
         System::assert_has_event(RuntimeEvent::Identity(
             pallet_identity::Event::IdtyConfirmed {
                 idty_index: 6,
-                owner_key: 6,
                 name: IdtyName::from("Ferdie"),
             },
         ));
diff --git a/pallets/identity/src/benchmarking.rs b/pallets/identity/src/benchmarking.rs
index 831b724292df6b14a98468f82f3a6da285c12fd4..2fa17b2741d534e0c694593d31e61852a88d2b7c 100644
--- a/pallets/identity/src/benchmarking.rs
+++ b/pallets/identity/src/benchmarking.rs
@@ -22,7 +22,7 @@ use codec::Encode;
 use frame_benchmarking::{account, v2::*};
 use frame_support::traits::OnInitialize;
 use frame_system::{pallet_prelude::BlockNumberFor, RawOrigin};
-use sp_core::Get;
+use sp_core::{crypto::Ss58Codec, Get};
 use sp_io::crypto::{sr25519_generate, sr25519_sign};
 use sp_runtime::{AccountId32, MultiSigner};
 
@@ -160,7 +160,6 @@ mod benchmarks {
         assert_has_event::<T>(
             Event::<T>::IdtyConfirmed {
                 idty_index: idty_index.unwrap(),
-                owner_key,
                 name: IdtyName("new_identity".into()),
             }
             .into(),
@@ -510,6 +509,56 @@ mod benchmarks {
         Ok(())
     }
 
+    #[benchmark]
+    fn revoke_identity_legacy() -> Result<(), BenchmarkError> {
+        let caller_index = T::IdtyIndex::from(1u32);
+        let caller: T::AccountId = Identities::<T>::get(caller_index).unwrap().owner_key;
+
+        let idty_index: T::IdtyIndex = 102.into();
+        let owner_key: T::AccountId =
+            AccountId32::from_ss58check("5H2nLXGku46iztpqdRwsCAiP6vHZbShhKmSV4yyufQgEUFvV")
+                .unwrap()
+                .into();
+        let next_scheduled = BlockNumberFor::<T>::zero();
+        let value = IdtyValue {
+            data: Default::default(),
+            next_creatable_identity_on: BlockNumberFor::<T>::zero(),
+            old_owner_key: None,
+            owner_key: owner_key.clone(),
+            next_scheduled,
+            status: IdtyStatus::Member,
+        };
+        let name = "Charlie";
+        let idty_name = IdtyName(name.into());
+        frame_system::Pallet::<T>::inc_sufficients(&owner_key);
+        <Identities<T>>::insert(idty_index, value);
+        IdentityChangeSchedule::<T>::append(next_scheduled, idty_index);
+        IdentityIndexOf::<T>::insert(owner_key.clone(), idty_index);
+        <IdentitiesNames<T>>::insert(idty_name.clone(), idty_index);
+
+        let document = r"Version: 10
+Type: Revocation
+Currency: g1
+Issuer: Fnf2xaxYdQpB4kU45DMLQ9Ey4bd6DtoebKJajRkLBUXm
+IdtyUniqueID: Charlie
+IdtyTimestamp: 42-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+IdtySignature: 7KUagcMiQw05rwbkBsRrnNqPRHu/Y5ukCLoAEpb/1tXAQsSNf2gRi1h5PWIGs9y/vHnFXvF5epKsOjA6X75vDg==
+CfiG4xhcWS+/DgxY0xFIyOA9TVr4Im3XEXcCApNgXC+Ns9jy2yrNoC3NF8MCD63cZ8QTRfrr4Iv6n3leYCCcDQ==
+";
+
+        #[extrinsic_call]
+        _(RawOrigin::Signed(caller), document.into());
+
+        assert_has_event::<T>(
+            Event::<T>::IdtyRevoked {
+                idty_index,
+                reason: RevocationReason::User,
+            }
+            .into(),
+        );
+        Ok(())
+    }
+
     impl_benchmark_test_suite!(
         Pallet,
         // Create genesis identity Alice to test benchmark in mock
diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs
index 266d4aa99ef5c5139f35c25e1c3ba6a461272b40..64f47fe83edbed60889149f263e66a6cd14f6afd 100644
--- a/pallets/identity/src/lib.rs
+++ b/pallets/identity/src/lib.rs
@@ -83,6 +83,7 @@ pub const REVOCATION_PAYLOAD_PREFIX: [u8; 4] = [b'r', b'e', b'v', b'o'];
 // link = link (identity with account)
 pub const LINK_IDTY_PAYLOAD_PREFIX: [u8; 4] = [b'l', b'i', b'n', b'k'];
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
@@ -303,7 +304,6 @@ pub mod pallet {
         /// An identity has been confirmed by its owner.
         IdtyConfirmed {
             idty_index: T::IdtyIndex,
-            owner_key: T::AccountId,
             name: IdtyName,
         },
         /// An identity has been validated.
@@ -424,7 +424,6 @@ pub mod pallet {
             <IdentitiesNames<T>>::insert(idty_name.clone(), idty_index);
             Self::deposit_event(Event::IdtyConfirmed {
                 idty_index,
-                owner_key: who,
                 name: idty_name,
             });
             Ok(().into())
diff --git a/pallets/identity/src/mock.rs b/pallets/identity/src/mock.rs
index 92380ce2cc3d7cb54fd2bf45fa2c941de787608b..70758bc813260c41b9175e9e2225338b89c35c9f 100644
--- a/pallets/identity/src/mock.rs
+++ b/pallets/identity/src/mock.rs
@@ -17,7 +17,7 @@
 use super::*;
 use crate::{self as pallet_identity};
 use frame_support::{
-    parameter_types,
+    derive_impl, parameter_types,
     traits::{Everything, OnFinalize, OnInitialize},
 };
 use frame_system as system;
@@ -54,36 +54,22 @@ parameter_types! {
     pub const SS58Prefix: u8 = 42;
 }
 
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
 impl system::Config for Test {
-    type AccountData = ();
     type AccountId = AccountId;
     type BaseCallFilter = Everything;
     type Block = Block;
     type BlockHashCount = BlockHashCount;
-    type BlockLength = ();
-    type BlockWeights = ();
-    type DbWeight = ();
     type Hash = H256;
     type Hashing = BlakeTwo256;
     type Lookup = IdentityLookup<Self::AccountId>;
     type MaxConsumers = frame_support::traits::ConstU32<16>;
-    type MultiBlockMigrator = ();
     type Nonce = u64;
-    type OnKilledAccount = ();
-    type OnNewAccount = ();
-    type OnSetCode = ();
     type PalletInfo = PalletInfo;
-    type PostInherents = ();
-    type PostTransactions = ();
-    type PreInherents = ();
     type RuntimeCall = RuntimeCall;
     type RuntimeEvent = RuntimeEvent;
     type RuntimeOrigin = RuntimeOrigin;
-    type RuntimeTask = ();
     type SS58Prefix = SS58Prefix;
-    type SingleBlockMigrations = ();
-    type SystemWeightInfo = ();
-    type Version = ();
 }
 
 parameter_types! {
diff --git a/pallets/identity/src/weights.rs b/pallets/identity/src/weights.rs
index f72819c3717da2372c724ff703a9bcc4eb23b4f6..b0441d0403e24036c7018b0ae1134d6c171afeb7 100644
--- a/pallets/identity/src/weights.rs
+++ b/pallets/identity/src/weights.rs
@@ -85,17 +85,6 @@ impl WeightInfo for () {
             .saturating_add(RocksDbWeight::get().writes(6))
     }
 
-    fn revoke_identity_legacy() -> Weight {
-        // Proof Size summary in bytes:
-        //  Measured:  `778`
-        //  Estimated: `6718`
-        // Minimum execution time: 829_174_000 picoseconds.
-        Weight::from_parts(869_308_000, 0)
-            .saturating_add(Weight::from_parts(0, 6718))
-            .saturating_add(RocksDbWeight::get().reads(6))
-            .saturating_add(RocksDbWeight::get().writes(6))
-    }
-
     fn prune_item_identities_names(i: u32) -> Weight {
         // Proof Size summary in bytes:
         //  Measured:  `0`
@@ -159,6 +148,17 @@ impl WeightInfo for () {
             .saturating_add(RocksDbWeight::get().writes(20))
     }
 
+    fn revoke_identity_legacy() -> Weight {
+        // Proof Size summary in bytes:
+        //  Measured:  `1525`
+        //  Estimated: `7465`
+        // Minimum execution time: 2_204_911_000 picoseconds.
+        Weight::from_parts(2_225_493_000, 0)
+            .saturating_add(Weight::from_parts(0, 7465))
+            .saturating_add(RocksDbWeight::get().reads(17))
+            .saturating_add(RocksDbWeight::get().writes(20))
+    }
+
     fn do_remove_identity_noop() -> Weight {
         // Proof Size summary in bytes:
         //  Measured:  `269`
diff --git a/pallets/membership/src/lib.rs b/pallets/membership/src/lib.rs
index 0a096b0a309bbcd093bf5caaac3c3ddfa82e7987..ffbd6b8798af9898a06d95cc8ec8bca2159e8ffd 100644
--- a/pallets/membership/src/lib.rs
+++ b/pallets/membership/src/lib.rs
@@ -69,6 +69,7 @@ pub enum MembershipRemovalReason {
     System,
 }
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
diff --git a/pallets/membership/src/mock.rs b/pallets/membership/src/mock.rs
index 6269ed615639f46c57dde4fd3dc6e882d67eade1..208e663f592cdac83d58025aeaff8c7ba3aa193d 100644
--- a/pallets/membership/src/mock.rs
+++ b/pallets/membership/src/mock.rs
@@ -16,7 +16,7 @@
 
 use crate::{self as pallet_membership};
 use frame_support::{
-    parameter_types,
+    derive_impl, parameter_types,
     traits::{Everything, OnFinalize, OnInitialize},
 };
 use frame_system as system;
@@ -44,36 +44,22 @@ parameter_types! {
     pub const SS58Prefix: u8 = 42;
 }
 
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
 impl system::Config for Test {
-    type AccountData = ();
     type AccountId = AccountId;
     type BaseCallFilter = Everything;
     type Block = Block;
     type BlockHashCount = BlockHashCount;
-    type BlockLength = ();
-    type BlockWeights = ();
-    type DbWeight = ();
     type Hash = H256;
     type Hashing = BlakeTwo256;
     type Lookup = IdentityLookup<Self::AccountId>;
     type MaxConsumers = frame_support::traits::ConstU32<16>;
-    type MultiBlockMigrator = ();
     type Nonce = u64;
-    type OnKilledAccount = ();
-    type OnNewAccount = ();
-    type OnSetCode = ();
     type PalletInfo = PalletInfo;
-    type PostInherents = ();
-    type PostTransactions = ();
-    type PreInherents = ();
     type RuntimeCall = RuntimeCall;
     type RuntimeEvent = RuntimeEvent;
     type RuntimeOrigin = RuntimeOrigin;
-    type RuntimeTask = ();
     type SS58Prefix = SS58Prefix;
-    type SingleBlockMigrations = ();
-    type SystemWeightInfo = ();
-    type Version = ();
 }
 
 parameter_types! {
diff --git a/pallets/offences/src/lib.rs b/pallets/offences/src/lib.rs
index 8b2d32cc4ef802160ec069dfcfe4a8a182248d2b..ab9c03ca6328656c8146785baa6e134035a8d31f 100644
--- a/pallets/offences/src/lib.rs
+++ b/pallets/offences/src/lib.rs
@@ -65,6 +65,7 @@ pub enum SlashStrategy {
     Blacklist,
 }
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
diff --git a/pallets/offences/src/mock.rs b/pallets/offences/src/mock.rs
index 49611fb08cf700cc869405c661efd08c23547321..ac5db8b17026efa949fec2a2aa12e85ea161fd85 100644
--- a/pallets/offences/src/mock.rs
+++ b/pallets/offences/src/mock.rs
@@ -17,7 +17,7 @@
 use crate::{self as pallet_offences, Config, SlashStrategy};
 use codec::Encode;
 use frame_support::{
-    parameter_types,
+    derive_impl, parameter_types,
     traits::{ConstU32, ConstU64},
     weights::{constants::RocksDbWeight, Weight},
 };
@@ -59,36 +59,22 @@ frame_support::construct_runtime!(
     }
 );
 
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
 impl frame_system::Config for Runtime {
-    type AccountData = ();
     type AccountId = u64;
     type BaseCallFilter = frame_support::traits::Everything;
     type Block = Block;
     type BlockHashCount = ConstU64<250>;
-    type BlockLength = ();
-    type BlockWeights = ();
     type DbWeight = RocksDbWeight;
     type Hash = H256;
     type Hashing = BlakeTwo256;
     type Lookup = IdentityLookup<Self::AccountId>;
     type MaxConsumers = ConstU32<16>;
-    type MultiBlockMigrator = ();
     type Nonce = u64;
-    type OnKilledAccount = ();
-    type OnNewAccount = ();
-    type OnSetCode = ();
     type PalletInfo = PalletInfo;
-    type PostInherents = ();
-    type PostTransactions = ();
-    type PreInherents = ();
     type RuntimeCall = RuntimeCall;
     type RuntimeEvent = RuntimeEvent;
     type RuntimeOrigin = RuntimeOrigin;
-    type RuntimeTask = ();
-    type SS58Prefix = ();
-    type SingleBlockMigrations = ();
-    type SystemWeightInfo = ();
-    type Version = ();
 }
 
 impl Config for Runtime {
diff --git a/pallets/oneshot-account/Cargo.toml b/pallets/oneshot-account/Cargo.toml
index b0e9dda3671e62905ecd063ef737684daa3985f1..433a825bcd54b88aef28a827e23e49b09f0a8b46 100644
--- a/pallets/oneshot-account/Cargo.toml
+++ b/pallets/oneshot-account/Cargo.toml
@@ -15,6 +15,7 @@ runtime-benchmarks = [
 	"frame-support/runtime-benchmarks",
 	"frame-system/runtime-benchmarks",
 	"pallet-balances/runtime-benchmarks",
+	"pallet-transaction-payment/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 ]
 try-runtime = [
diff --git a/pallets/oneshot-account/src/check_nonce.rs b/pallets/oneshot-account/src/check_nonce.rs
index 3d792e53b130a94d77800ad806b6d6fa2dc35e77..63968eddb7a09e457fd8223e8c52358bba070e23 100644
--- a/pallets/oneshot-account/src/check_nonce.rs
+++ b/pallets/oneshot-account/src/check_nonce.rs
@@ -17,15 +17,19 @@
 use crate::Config;
 
 use codec::{Decode, Encode};
-use frame_support::{dispatch::DispatchInfo, traits::IsSubType};
+use frame_support::{dispatch::DispatchInfo, pallet_prelude::Weight, traits::IsSubType};
 //use frame_system::Config;
 use scale_info::{
     prelude::fmt::{Debug, Formatter},
     TypeInfo,
 };
 use sp_runtime::{
-    traits::{DispatchInfoOf, Dispatchable, SignedExtension},
-    transaction_validity::{TransactionValidity, TransactionValidityError},
+    traits::{
+        AsSystemOriginSigner, DispatchInfoOf, Dispatchable, PostDispatchInfoOf,
+        TransactionExtension, ValidateResult,
+    },
+    transaction_validity::{TransactionSource, TransactionValidityError},
+    DispatchResult,
 };
 
 /// Wrapper around `frame_system::CheckNonce<T>`.
@@ -51,46 +55,71 @@ impl<T: Config> Debug for CheckNonce<T> {
     }
 }
 
-impl<T: Config + TypeInfo> SignedExtension for CheckNonce<T>
+impl<T: Config + TypeInfo> TransactionExtension<T::RuntimeCall> for CheckNonce<T>
 where
-    T::RuntimeCall: Dispatchable<Info = DispatchInfo> + IsSubType<crate::Call<T>>,
+    T::RuntimeCall: Dispatchable<Info = DispatchInfo>,
+    <T::RuntimeCall as Dispatchable>::RuntimeOrigin: AsSystemOriginSigner<T::AccountId> + Clone,
+    T::RuntimeCall: IsSubType<crate::Call<T>>,
 {
-    type AccountId = <T as frame_system::Config>::AccountId;
-    type AdditionalSigned = ();
-    type Call = <T as frame_system::Config>::RuntimeCall;
-    type Pre = ();
+    type Implicit = ();
+    type Pre = <frame_system::CheckNonce<T> as TransactionExtension<T::RuntimeCall>>::Pre;
+    type Val = <frame_system::CheckNonce<T> as TransactionExtension<T::RuntimeCall>>::Val;
 
     const IDENTIFIER: &'static str = "CheckNonce";
 
-    fn additional_signed(&self) -> Result<(), TransactionValidityError> {
-        self.0.additional_signed()
+    fn validate(
+        &self,
+        origin: <T as frame_system::Config>::RuntimeOrigin,
+        call: &T::RuntimeCall,
+        info: &DispatchInfoOf<T::RuntimeCall>,
+        len: usize,
+        self_implicit: Self::Implicit,
+        inherited_implication: &impl Encode,
+        source: TransactionSource,
+    ) -> ValidateResult<Self::Val, T::RuntimeCall> {
+        self.0.validate(
+            origin,
+            call,
+            info,
+            len,
+            self_implicit,
+            inherited_implication,
+            source,
+        )
     }
 
-    fn pre_dispatch(
+    fn weight(&self, origin: &T::RuntimeCall) -> Weight {
+        self.0.weight(origin)
+    }
+
+    fn prepare(
         self,
-        who: &Self::AccountId,
-        call: &Self::Call,
-        info: &DispatchInfoOf<Self::Call>,
+        val: Self::Val,
+        origin: &T::RuntimeOrigin,
+        call: &T::RuntimeCall,
+        info: &DispatchInfoOf<T::RuntimeCall>,
         len: usize,
-    ) -> Result<(), TransactionValidityError> {
+    ) -> Result<Self::Pre, TransactionValidityError> {
         if let Some(
             crate::Call::consume_oneshot_account { .. }
             | crate::Call::consume_oneshot_account_with_remaining { .. },
         ) = call.is_sub_type()
         {
-            Ok(())
+            Ok(Self::Pre::NonceChecked)
         } else {
-            self.0.pre_dispatch(who, call, info, len)
+            self.0.prepare(val, origin, call, info, len)
         }
     }
 
-    fn validate(
-        &self,
-        who: &Self::AccountId,
-        call: &Self::Call,
-        info: &DispatchInfoOf<Self::Call>,
+    fn post_dispatch_details(
+        pre: Self::Pre,
+        info: &DispatchInfo,
+        post_info: &PostDispatchInfoOf<T::RuntimeCall>,
         len: usize,
-    ) -> TransactionValidity {
-        self.0.validate(who, call, info, len)
+        result: &DispatchResult,
+    ) -> Result<Weight, TransactionValidityError> {
+        <frame_system::CheckNonce<T> as TransactionExtension<T::RuntimeCall>>::post_dispatch_details(
+            pre, info, post_info, len, result,
+        )
     }
 }
diff --git a/pallets/oneshot-account/src/lib.rs b/pallets/oneshot-account/src/lib.rs
index 42adac55a8fce9bd6cb629c506c2b6424c2d6980..1b6735fb13a47bf971441e40eb1a2ac1b0f823ae 100644
--- a/pallets/oneshot-account/src/lib.rs
+++ b/pallets/oneshot-account/src/lib.rs
@@ -48,6 +48,7 @@ use sp_runtime::traits::{DispatchInfoOf, PostDispatchInfoOf, Saturating, StaticL
 type AccountIdOf<T> = <T as frame_system::Config>::AccountId;
 type BalanceOf<T> = <<T as Config>::Currency as fungible::Inspect<AccountIdOf<T>>>::Balance;
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
@@ -136,7 +137,7 @@ pub mod pallet {
         ///
         /// Origin account is kept alive.
         #[pallet::call_index(0)]
-        #[pallet::weight(T::WeightInfo::create_oneshot_account())]
+        #[pallet::weight(<T as pallet::Config>::WeightInfo::create_oneshot_account())]
         pub fn create_oneshot_account(
             origin: OriginFor<T>,
             dest: <T::Lookup as StaticLookup>::Source,
@@ -177,7 +178,7 @@ pub mod pallet {
         /// - `dest`: The destination account.
         /// - `dest_is_oneshot`: If set to `true`, then a oneshot account is created at `dest`. Else, `dest` has to be an existing account.
         #[pallet::call_index(1)]
-        #[pallet::weight(T::WeightInfo::consume_oneshot_account())]
+        #[pallet::weight(<T as pallet::Config>::WeightInfo::consume_oneshot_account())]
         pub fn consume_oneshot_account(
             origin: OriginFor<T>,
             block_height: BlockNumberFor<T>,
@@ -237,7 +238,7 @@ pub mod pallet {
         /// - `dest2_is_oneshot`: If set to `true`, then a oneshot account is created at `dest2`. Else, `dest2` has to be an existing account.
         /// - `balance1`: The amount transfered to `dest`, the leftover being transfered to `dest2`.
         #[pallet::call_index(2)]
-        #[pallet::weight(T::WeightInfo::consume_oneshot_account_with_remaining())]
+        #[pallet::weight(<T as pallet::Config>::WeightInfo::consume_oneshot_account_with_remaining())]
         pub fn consume_oneshot_account_with_remaining(
             origin: OriginFor<T>,
             block_height: BlockNumberFor<T>,
@@ -339,6 +340,16 @@ where
     type Balance = BalanceOf<T>;
     type LiquidityInfo = Option<Credit<T::AccountId, T::Currency>>;
 
+    fn can_withdraw_fee(
+        who: &T::AccountId,
+        call: &T::RuntimeCall,
+        dispatch_info: &DispatchInfoOf<T::RuntimeCall>,
+        fee: Self::Balance,
+        tip: Self::Balance,
+    ) -> Result<(), TransactionValidityError> {
+        T::InnerOnChargeTransaction::can_withdraw_fee(who, call, dispatch_info, fee, tip)
+    }
+
     fn withdraw_fee(
         who: &T::AccountId,
         call: &T::RuntimeCall,
@@ -390,4 +401,14 @@ where
             already_withdrawn,
         )
     }
+
+    #[cfg(feature = "runtime-benchmarks")]
+    fn endow_account(who: &T::AccountId, amount: Self::Balance) {
+        T::InnerOnChargeTransaction::endow_account(who, amount);
+    }
+
+    #[cfg(feature = "runtime-benchmarks")]
+    fn minimum_balance() -> Self::Balance {
+        T::InnerOnChargeTransaction::minimum_balance()
+    }
 }
diff --git a/pallets/oneshot-account/src/mock.rs b/pallets/oneshot-account/src/mock.rs
index d742e3343b77c85bf0e3bf445879494d1a200195..aa75a55686043da319764ecae086a252e18e2fd4 100644
--- a/pallets/oneshot-account/src/mock.rs
+++ b/pallets/oneshot-account/src/mock.rs
@@ -15,7 +15,7 @@
 // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 use crate::{self as pallet_oneshot_account};
-use frame_support::{parameter_types, traits::Everything, weights::IdentityFee};
+use frame_support::{derive_impl, parameter_types, traits::Everything, weights::IdentityFee};
 use frame_system as system;
 use pallet_transaction_payment::FungibleAdapter;
 use sp_core::{ConstU32, H256};
@@ -43,36 +43,23 @@ parameter_types! {
     pub const SS58Prefix: u8 = 42;
 }
 
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
 impl system::Config for Test {
     type AccountData = pallet_balances::AccountData<Balance>;
     type AccountId = u64;
     type BaseCallFilter = Everything;
     type Block = Block;
     type BlockHashCount = BlockHashCount;
-    type BlockLength = ();
-    type BlockWeights = ();
-    type DbWeight = ();
     type Hash = H256;
     type Hashing = BlakeTwo256;
     type Lookup = IdentityLookup<Self::AccountId>;
     type MaxConsumers = frame_support::traits::ConstU32<16>;
-    type MultiBlockMigrator = ();
     type Nonce = u64;
-    type OnKilledAccount = ();
-    type OnNewAccount = ();
-    type OnSetCode = ();
     type PalletInfo = PalletInfo;
-    type PostInherents = ();
-    type PostTransactions = ();
-    type PreInherents = ();
     type RuntimeCall = RuntimeCall;
     type RuntimeEvent = RuntimeEvent;
     type RuntimeOrigin = RuntimeOrigin;
-    type RuntimeTask = ();
     type SS58Prefix = SS58Prefix;
-    type SingleBlockMigrations = ();
-    type SystemWeightInfo = ();
-    type Version = ();
 }
 
 parameter_types! {
@@ -83,6 +70,7 @@ parameter_types! {
 impl pallet_balances::Config for Test {
     type AccountStore = System;
     type Balance = Balance;
+    type DoneSlashHandler = ();
     type DustRemoval = ();
     type ExistentialDeposit = ExistentialDeposit;
     type FreezeIdentifier = ();
@@ -101,6 +89,7 @@ impl pallet_transaction_payment::Config for Test {
     type OnChargeTransaction = OneshotAccount;
     type OperationalFeeMultiplier = frame_support::traits::ConstU8<5>;
     type RuntimeEvent = RuntimeEvent;
+    type WeightInfo = ();
     type WeightToFee = IdentityFee<u64>;
 }
 impl pallet_oneshot_account::Config for Test {
diff --git a/pallets/provide-randomness/src/lib.rs b/pallets/provide-randomness/src/lib.rs
index 20dcfa91bd1b8a06a31f1df75c6b2d0499283ad2..1534f1e950315955ad5db7778359342a9dcbd811 100644
--- a/pallets/provide-randomness/src/lib.rs
+++ b/pallets/provide-randomness/src/lib.rs
@@ -53,6 +53,7 @@ impl OnFilledRandomness for () {
     }
 }
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
diff --git a/pallets/quota/src/lib.rs b/pallets/quota/src/lib.rs
index 67340ef670a1d12c7294dbde1f93111e4bffa3e1..9ea7aa21050c7cadcde0a1c40275b0a6dfa3bb03 100644
--- a/pallets/quota/src/lib.rs
+++ b/pallets/quota/src/lib.rs
@@ -59,6 +59,7 @@ use scale_info::prelude::vec::Vec;
 use sp_runtime::traits::Zero;
 pub use weights::WeightInfo;
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
diff --git a/pallets/quota/src/mock.rs b/pallets/quota/src/mock.rs
index a21f3b85c552e77c4ff63397e2ebf5b60be8e812..f39b053dfe4c1f565549dd401b54bf52d8b0a1de 100644
--- a/pallets/quota/src/mock.rs
+++ b/pallets/quota/src/mock.rs
@@ -19,7 +19,7 @@
 use super::*;
 pub use crate::pallet as pallet_quota;
 use frame_support::{
-    parameter_types,
+    derive_impl, parameter_types,
     traits::{Everything, OnFinalize, OnInitialize},
 };
 use frame_system as system;
@@ -75,36 +75,24 @@ parameter_types! {
     pub const BlockHashCount: u64 = 250;
     pub const SS58Prefix: u8 = 42;
 }
+
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
 impl system::Config for Test {
     type AccountData = pallet_balances::AccountData<Balance>;
     type AccountId = AccountId;
     type BaseCallFilter = Everything;
     type Block = Block;
     type BlockHashCount = BlockHashCount;
-    type BlockLength = ();
-    type BlockWeights = ();
-    type DbWeight = ();
     type Hash = H256;
     type Hashing = BlakeTwo256;
     type Lookup = IdentityLookup<Self::AccountId>;
     type MaxConsumers = frame_support::traits::ConstU32<16>;
-    type MultiBlockMigrator = ();
     type Nonce = u64;
-    type OnKilledAccount = ();
-    type OnNewAccount = ();
-    type OnSetCode = ();
     type PalletInfo = PalletInfo;
-    type PostInherents = ();
-    type PostTransactions = ();
-    type PreInherents = ();
     type RuntimeCall = RuntimeCall;
     type RuntimeEvent = RuntimeEvent;
     type RuntimeOrigin = RuntimeOrigin;
-    type RuntimeTask = ();
     type SS58Prefix = SS58Prefix;
-    type SingleBlockMigrations = ();
-    type SystemWeightInfo = ();
-    type Version = ();
 }
 
 // BALANCES //
@@ -115,6 +103,7 @@ parameter_types! {
 impl pallet_balances::Config for Test {
     type AccountStore = System;
     type Balance = Balance;
+    type DoneSlashHandler = ();
     type DustRemoval = ();
     type ExistentialDeposit = ExistentialDeposit;
     type FreezeIdentifier = ();
diff --git a/pallets/smith-members/src/lib.rs b/pallets/smith-members/src/lib.rs
index e7c48962a8d187dd46348e21b72b1c86623375c6..d9246b0cc506c6f644cacd2048aef11a6d6d104c 100644
--- a/pallets/smith-members/src/lib.rs
+++ b/pallets/smith-members/src/lib.rs
@@ -96,6 +96,7 @@ pub enum SmithStatus {
     Excluded,
 }
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
diff --git a/pallets/smith-members/src/mock.rs b/pallets/smith-members/src/mock.rs
index 27ecfe8854e244347001eaa979a30823d2146b8d..388f7114775dc8c47bc4bd67b5b3a38eb0db11f6 100644
--- a/pallets/smith-members/src/mock.rs
+++ b/pallets/smith-members/src/mock.rs
@@ -16,6 +16,7 @@
 
 use crate::{self as pallet_smith_members};
 use frame_support::{
+    derive_impl,
     pallet_prelude::Hooks,
     parameter_types,
     traits::{ConstU32, ConstU64},
@@ -41,36 +42,22 @@ frame_support::construct_runtime!(
     }
 );
 
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
 impl frame_system::Config for Runtime {
-    type AccountData = ();
     type AccountId = u64;
     type BaseCallFilter = frame_support::traits::Everything;
     type Block = Block;
     type BlockHashCount = ConstU64<250>;
-    type BlockLength = ();
-    type BlockWeights = ();
     type DbWeight = RocksDbWeight;
     type Hash = H256;
     type Hashing = BlakeTwo256;
     type Lookup = IdentityLookup<Self::AccountId>;
     type MaxConsumers = ConstU32<16>;
-    type MultiBlockMigrator = ();
     type Nonce = u64;
-    type OnKilledAccount = ();
-    type OnNewAccount = ();
-    type OnSetCode = ();
     type PalletInfo = PalletInfo;
-    type PostInherents = ();
-    type PostTransactions = ();
-    type PreInherents = ();
     type RuntimeCall = RuntimeCall;
     type RuntimeEvent = RuntimeEvent;
     type RuntimeOrigin = RuntimeOrigin;
-    type RuntimeTask = ();
-    type SS58Prefix = ();
-    type SingleBlockMigrations = ();
-    type SystemWeightInfo = ();
-    type Version = ();
 }
 
 pub struct EveryoneExceptIdZero;
diff --git a/pallets/universal-dividend/src/lib.rs b/pallets/universal-dividend/src/lib.rs
index 6fda9a68c9621cb34358ede9a3cc138b7eb58905..c0a0347259c0461dfcf81b8e414dd84231e3dd4c 100644
--- a/pallets/universal-dividend/src/lib.rs
+++ b/pallets/universal-dividend/src/lib.rs
@@ -56,6 +56,7 @@ use sp_arithmetic::{
 };
 use sp_runtime::traits::{Get, MaybeSerializeDeserialize, StaticLookup};
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
diff --git a/pallets/universal-dividend/src/mock.rs b/pallets/universal-dividend/src/mock.rs
index 233ec61e7aa9e8c538c362a05036e56b6eec9835..077f6694b9194278130274fc96e31c9f10a9958d 100644
--- a/pallets/universal-dividend/src/mock.rs
+++ b/pallets/universal-dividend/src/mock.rs
@@ -17,7 +17,7 @@
 use super::*;
 use crate::{self as pallet_universal_dividend};
 use frame_support::{
-    parameter_types,
+    derive_impl, parameter_types,
     traits::{Everything, OnFinalize, OnInitialize},
 };
 use frame_system as system;
@@ -48,36 +48,23 @@ parameter_types! {
     pub const SS58Prefix: u8 = 42;
 }
 
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
 impl system::Config for Test {
     type AccountData = pallet_balances::AccountData<Balance>;
     type AccountId = u32;
     type BaseCallFilter = Everything;
     type Block = Block;
     type BlockHashCount = BlockHashCount;
-    type BlockLength = ();
-    type BlockWeights = ();
-    type DbWeight = ();
     type Hash = H256;
     type Hashing = BlakeTwo256;
     type Lookup = IdentityLookup<Self::AccountId>;
     type MaxConsumers = frame_support::traits::ConstU32<16>;
-    type MultiBlockMigrator = ();
     type Nonce = u64;
-    type OnKilledAccount = ();
-    type OnNewAccount = ();
-    type OnSetCode = ();
     type PalletInfo = PalletInfo;
-    type PostInherents = ();
-    type PostTransactions = ();
-    type PreInherents = ();
     type RuntimeCall = RuntimeCall;
     type RuntimeEvent = RuntimeEvent;
     type RuntimeOrigin = RuntimeOrigin;
-    type RuntimeTask = ();
     type SS58Prefix = SS58Prefix;
-    type SingleBlockMigrations = ();
-    type SystemWeightInfo = ();
-    type Version = ();
 }
 
 parameter_types! {
@@ -99,6 +86,7 @@ parameter_types! {
 impl pallet_balances::Config for Test {
     type AccountStore = System;
     type Balance = Balance;
+    type DoneSlashHandler = ();
     type DustRemoval = ();
     type ExistentialDeposit = ExistentialDeposit;
     type FreezeIdentifier = ();
diff --git a/pallets/upgrade-origin/src/lib.rs b/pallets/upgrade-origin/src/lib.rs
index d98c21f84b3f2870ff4ecff6f91d84c923881a3f..20fb15f451898efb9c9940f9d7cc54c506ece885 100644
--- a/pallets/upgrade-origin/src/lib.rs
+++ b/pallets/upgrade-origin/src/lib.rs
@@ -30,6 +30,7 @@ use frame_support::{
 use scale_info::prelude::boxed::Box;
 use sp_runtime::traits::Dispatchable;
 
+#[allow(unreachable_patterns)]
 #[frame_support::pallet]
 pub mod pallet {
     use super::*;
@@ -86,7 +87,7 @@ pub mod pallet {
 			let dispatch_info = call.get_dispatch_info();
 			(
 				T::WeightInfo::dispatch_as_root()
-					.saturating_add(dispatch_info.weight),
+					.saturating_add(dispatch_info.call_weight).saturating_add(dispatch_info.extension_weight),
 				dispatch_info.class,
 			)
 		})]
diff --git a/resources/metadata.scale b/resources/metadata.scale
index f76383179f1a2dbc51e879bbe3eea26780becb12..430bae89f08fbcf6bcf656bfc6f26516d767119b 100644
Binary files a/resources/metadata.scale and b/resources/metadata.scale differ
diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml
index 3bce7226e7e879e37e1718482350df827cfe9228..4cc54a0c17d3c70ae0f8c8528499b16400092a14 100644
--- a/runtime/common/Cargo.toml
+++ b/runtime/common/Cargo.toml
@@ -31,6 +31,7 @@ runtime-benchmarks = [
 	"pallet-quota/runtime-benchmarks",
 	"pallet-smith-members/runtime-benchmarks",
 	"pallet-timestamp/runtime-benchmarks",
+	"pallet-transaction-payment/runtime-benchmarks",
 	"pallet-treasury/runtime-benchmarks",
 	"pallet-universal-dividend/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
diff --git a/runtime/common/src/apis.rs b/runtime/common/src/apis.rs
index 77ed9caec2e507cce00ccd178b249e170f7dfc29..3c8c346a0b744aa51262e8fa812f4801bd317a63 100644
--- a/runtime/common/src/apis.rs
+++ b/runtime/common/src/apis.rs
@@ -14,304 +14,304 @@
 // 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/>.
 
+// This file is not formatted automatically due to the nested macro definition.
+// It can be formatted by commenting out the last line, the first five lines,
+// and then running `rustfmt` on `runtime/common/src/apis.rs`.
 #[macro_export]
 macro_rules! runtime_apis {
-    {$($custom:tt)*} => {
+    ($($custom:tt)*) => {
         impl_runtime_apis! {
             $($custom)*
 
-            impl sp_authority_discovery::AuthorityDiscoveryApi<Block> for Runtime {
-                fn authorities() -> Vec<sp_authority_discovery::AuthorityId> {
-                    AuthorityDiscovery::authorities()
-                }
-            }
-
-            impl sp_consensus_babe::BabeApi<Block> for Runtime {
-                fn configuration() -> sp_consensus_babe::BabeConfiguration {
-                    // The choice of `c` parameter (where `1 - c` represents the
-                    // probability of a slot being empty), is done in accordance to the
-                    // slot duration and expected target block time, for safely
-                    // resisting network delays of maximum two seconds.
-                    // <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
-                    use frame_support::traits::Get as _;
-                    sp_consensus_babe::BabeConfiguration {
-                        slot_duration: Babe::slot_duration(),
-                        epoch_length: EpochDuration::get(),
-                        c: BABE_GENESIS_EPOCH_CONFIG.c,
-                        authorities: Babe::authorities().to_vec(),
-                        randomness: Babe::randomness(),
-                        allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots,
-                    }
-                }
-
-                fn current_epoch_start() -> sp_consensus_babe::Slot {
-                    Babe::current_epoch_start()
-                }
-
-                fn current_epoch() -> sp_consensus_babe::Epoch {
-                    Babe::current_epoch()
-                }
-
-                fn next_epoch() -> sp_consensus_babe::Epoch {
-                    Babe::next_epoch()
-                }
-
-                fn generate_key_ownership_proof(
-                    _slot: sp_consensus_babe::Slot,
-                    authority_id: sp_consensus_babe::AuthorityId,
-                ) -> Option<sp_consensus_babe::OpaqueKeyOwnershipProof> {
-                    use codec::Encode;
-
-                    Historical::prove((sp_consensus_babe::KEY_TYPE, authority_id))
-                        .map(|p| p.encode())
-                        .map(sp_consensus_babe::OpaqueKeyOwnershipProof::new)
-                }
-
-                fn submit_report_equivocation_unsigned_extrinsic(
-                    equivocation_proof: sp_consensus_babe::EquivocationProof<<Block as BlockT>::Header>,
-                    key_owner_proof: sp_consensus_babe::OpaqueKeyOwnershipProof,
-                ) -> Option<()> {
-                    let key_owner_proof = key_owner_proof.decode()?;
-
-                    Babe::submit_unsigned_equivocation_report(
-                        equivocation_proof,
-                        key_owner_proof,
-                    )
-                }
-            }
-
-            impl sp_api::Core<Block> for Runtime {
-                fn version() -> RuntimeVersion {
-                    VERSION
-                }
-
-                fn execute_block(block: Block) {
-                    Executive::execute_block(block)
-                }
-
-                fn initialize_block(header: &<Block as BlockT>::Header) -> sp_runtime::ExtrinsicInclusionMode {
-                    Executive::initialize_block(header)
-                }
-            }
-
-            impl sp_api::Metadata<Block> for Runtime {
-                fn metadata() -> OpaqueMetadata {
-                    OpaqueMetadata::new(Runtime::metadata().into())
-                }
-		fn metadata_at_version(version: u32) -> Option<OpaqueMetadata> {
-			Runtime::metadata_at_version(version)
-		}
-		fn metadata_versions() -> Vec<u32> {
-			Runtime::metadata_versions()
-		}
-            }
-
-            impl sp_block_builder::BlockBuilder<Block> for Runtime {
-                fn apply_extrinsic(extrinsic: <Block as BlockT>::Extrinsic) -> ApplyExtrinsicResult {
-                    Executive::apply_extrinsic(extrinsic)
-                }
-
-                fn finalize_block() -> <Block as BlockT>::Header {
-                    Executive::finalize_block()
-                }
-
-                fn inherent_extrinsics(
-                    data: sp_inherents::InherentData,
-                ) -> Vec<<Block as BlockT>::Extrinsic> {
-                    data.create_extrinsics()
-                }
-
-                fn check_inherents(
-                    block: Block,
-                    data: sp_inherents::InherentData,
-                ) -> sp_inherents::CheckInherentsResult {
-                    data.check_extrinsics(&block)
-                }
-            }
-
-            impl sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> for Runtime {
-                fn validate_transaction(
-                    source: TransactionSource,
-                    tx: <Block as BlockT>::Extrinsic,
-                    block_hash: <Block as BlockT>::Hash,
-                ) -> TransactionValidity {
-                    // Filtered calls should not enter the tx pool.
-                    if !<Runtime as frame_system::Config>::BaseCallFilter::contains(&tx.function)
-                    {
-                        return sp_runtime::transaction_validity::InvalidTransaction::Call.into();
-                    }
-                    Executive::validate_transaction(source, tx, block_hash)
-                }
-            }
-
-            impl sp_offchain::OffchainWorkerApi<Block> for Runtime {
-                fn offchain_worker(header: &<Block as BlockT>::Header) {
-                    Executive::offchain_worker(header)
-                }
-            }
-
-            impl sp_session::SessionKeys<Block> for Runtime {
-                fn decode_session_keys(
-                    encoded: Vec<u8>,
-                ) -> Option<Vec<(Vec<u8>, KeyTypeId)>> {
-                    opaque::SessionKeys::decode_into_raw_public_keys(&encoded)
-                }
-
-                fn generate_session_keys(seed: Option<Vec<u8>>) -> Vec<u8> {
-                    opaque::SessionKeys::generate(seed)
-                }
-            }
-
-            impl fg_primitives::GrandpaApi<Block> for Runtime {
-                fn grandpa_authorities() -> GrandpaAuthorityList {
-                    Grandpa::grandpa_authorities()
-                }
-
-                fn current_set_id() -> fg_primitives::SetId {
-                    Grandpa::current_set_id()
-                }
-
-                fn submit_report_equivocation_unsigned_extrinsic(
-                    _equivocation_proof: fg_primitives::EquivocationProof<
-                        <Block as BlockT>::Hash,
-                        NumberFor<Block>,
-                    >,
-                    _key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof,
-                ) -> Option<()> {
-                    None
-                }
-
-                fn generate_key_ownership_proof(
-                    _set_id: fg_primitives::SetId,
-                    _authority_id: GrandpaId,
-                ) -> Option<fg_primitives::OpaqueKeyOwnershipProof> {
-                    // NOTE: this is the only implementation possible since we've
-                    // defined our key owner proof type as a bottom type (i.e. a type
-                    // with no values).
-                    None
-                }
-            }
-
-            impl frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Index> for Runtime {
-                fn account_nonce(account: AccountId) -> Index {
-                    System::account_nonce(account)
-                }
-            }
-
-            impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
-            for Runtime {
-                fn query_info(
-                    uxt: <Block as BlockT>::Extrinsic,
-                    len: u32,
-                ) -> pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo<Balance> {
-                    TransactionPayment::query_info(uxt, len)
-                }
-
-                fn query_fee_details(
-                    uxt: <Block as BlockT>::Extrinsic,
-                    len: u32,
-                ) -> pallet_transaction_payment::FeeDetails<Balance> {
-                    TransactionPayment::query_fee_details(uxt, len)
-                }
-		fn query_weight_to_fee(weight: Weight) -> Balance {
-			TransactionPayment::weight_to_fee(weight)
-		}
-		fn query_length_to_fee(length: u32) -> Balance {
-			TransactionPayment::length_to_fee(length)
-		}
-            }
-	impl sp_genesis_builder::GenesisBuilder<Block> for Runtime {
-		fn build_state(config: Vec<u8>) -> sp_genesis_builder::Result {
-			frame_support::genesis_builder_helper::build_state::<RuntimeGenesisConfig>(config)
-		}
-
-		fn get_preset(id: &Option<sp_genesis_builder::PresetId>) -> Option<Vec<u8>> {
-			frame_support::genesis_builder_helper::get_preset::<RuntimeGenesisConfig>(id, |_| None)
-		}
-
-		fn preset_names() -> Vec<sp_genesis_builder::PresetId> {
-			vec![]
-		}
-	}
-
-            #[cfg(feature = "try-runtime")]
-            impl frame_try_runtime::TryRuntime<Block> for Runtime {
-                fn on_runtime_upgrade(checks: frame_try_runtime::UpgradeCheckSelect) -> (Weight, Weight) {
-                    let weight = Executive::try_runtime_upgrade(checks).unwrap();
-					(weight, BlockWeights::get().max_block)
-                }
-
-                fn execute_block(
-                    block: Block,
-                    state_root_check: bool,
-					signature_check: bool,
-                    select: frame_try_runtime::TryStateSelect,
-                ) -> Weight {
-                    Executive::try_execute_block(block, state_root_check, signature_check, select).expect("execute-block failed")
-                }
-            }
-
-            #[cfg(feature = "runtime-benchmarks")]
-			impl frame_benchmarking::Benchmark<Block> for Runtime {
-				fn benchmark_metadata(extra: bool) -> (
-					Vec<frame_benchmarking::BenchmarkList>,
-					Vec<frame_support::traits::StorageInfo>,
-				) {
-					use frame_benchmarking::{list_benchmark, Benchmarking, BenchmarkList};
-					use frame_support::traits::StorageInfoTrait;
-
-                    use pallet_session_benchmarking::Pallet as SessionBench;
-					use frame_system_benchmarking::Pallet as SystemBench;
-					use frame_benchmarking::baseline::Pallet as Baseline;
-
-					let mut list = Vec::<BenchmarkList>::new();
-                    list_benchmarks!(list, extra);
-
-					let storage_info = AllPalletsWithSystem::storage_info();
-					return (list, storage_info)
-				}
-
-				fn dispatch_benchmark(
-					config: frame_benchmarking::BenchmarkConfig
-				) -> Result<
-					Vec<frame_benchmarking::BenchmarkBatch>,
-					sp_runtime::RuntimeString,
-				> {
-					use frame_benchmarking::{Benchmarking, BenchmarkBatch};
-use frame_support::traits::TrackedStorageKey;
-use frame_support::traits::WhitelistedStorageKeys;
-                    use pallet_session_benchmarking::Pallet as SessionBench;
-					use frame_system_benchmarking::Pallet as SystemBench;
-					use frame_benchmarking::baseline::Pallet as Baseline;
-
-					impl pallet_session_benchmarking::Config for Runtime {}
-					impl frame_system_benchmarking::Config for Runtime {}
-					impl frame_benchmarking::baseline::Config for Runtime {}
-
-					/*let whitelist: Vec<TrackedStorageKey> = vec![
-						// Block Number
-						hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(),
-						// Total Issuance
-						hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(),
-						// Execution Phase
-						hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(),
-						// Event Count
-						hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(),
-						// System Events
-						hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(),
-						// Treasury Account
-						hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da95ecffd7b6c0f78751baa9d281e0bfa3a6d6f646c70792f74727372790000000000000000000000000000000000000000").to_vec().into(),
-					];*/
-
-let whitelist: Vec<TrackedStorageKey> = AllPalletsWithSystem::whitelisted_storage_keys();
-					let mut batches = Vec::<BenchmarkBatch>::new();
-					let params = (&config, &whitelist);
-                    add_benchmarks!(params, batches);
-
-					if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }
-					Ok(batches)
-				}
-			}
+impl sp_authority_discovery::AuthorityDiscoveryApi<Block> for Runtime {
+    fn authorities() -> Vec<sp_authority_discovery::AuthorityId> {
+        AuthorityDiscovery::authorities()
+    }
+}
+
+impl sp_consensus_babe::BabeApi<Block> for Runtime {
+    fn configuration() -> sp_consensus_babe::BabeConfiguration {
+        // The choice of `c` parameter (where `1 - c` represents the
+        // probability of a slot being empty), is done in accordance to the
+        // slot duration and expected target block time, for safely
+        // resisting network delays of maximum two seconds.
+        // <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
+        use frame_support::traits::Get as _;
+        sp_consensus_babe::BabeConfiguration {
+            slot_duration: Babe::slot_duration(),
+            epoch_length: EpochDuration::get(),
+            c: BABE_GENESIS_EPOCH_CONFIG.c,
+            authorities: Babe::authorities().to_vec(),
+            randomness: Babe::randomness(),
+            allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots,
+        }
+    }
+
+    fn current_epoch_start() -> sp_consensus_babe::Slot {
+        Babe::current_epoch_start()
+    }
+
+    fn current_epoch() -> sp_consensus_babe::Epoch {
+        Babe::current_epoch()
+    }
+
+    fn next_epoch() -> sp_consensus_babe::Epoch {
+        Babe::next_epoch()
+    }
+
+    fn generate_key_ownership_proof(
+        _slot: sp_consensus_babe::Slot,
+        authority_id: sp_consensus_babe::AuthorityId,
+    ) -> Option<sp_consensus_babe::OpaqueKeyOwnershipProof> {
+        use codec::Encode;
+
+        Historical::prove((sp_consensus_babe::KEY_TYPE, authority_id))
+            .map(|p| p.encode())
+            .map(sp_consensus_babe::OpaqueKeyOwnershipProof::new)
+    }
+
+    fn submit_report_equivocation_unsigned_extrinsic(
+        equivocation_proof: sp_consensus_babe::EquivocationProof<<Block as BlockT>::Header>,
+        key_owner_proof: sp_consensus_babe::OpaqueKeyOwnershipProof,
+    ) -> Option<()> {
+        let key_owner_proof = key_owner_proof.decode()?;
+
+        Babe::submit_unsigned_equivocation_report(equivocation_proof, key_owner_proof)
+    }
+}
+
+impl sp_api::Core<Block> for Runtime {
+    fn version() -> RuntimeVersion {
+        VERSION
+    }
+
+    fn execute_block(block: Block) {
+        Executive::execute_block(block)
+    }
+
+    fn initialize_block(header: &<Block as BlockT>::Header) -> sp_runtime::ExtrinsicInclusionMode {
+        Executive::initialize_block(header)
+    }
+}
+
+impl sp_api::Metadata<Block> for Runtime {
+    fn metadata() -> OpaqueMetadata {
+        OpaqueMetadata::new(Runtime::metadata().into())
+    }
+
+    fn metadata_at_version(version: u32) -> Option<OpaqueMetadata> {
+        Runtime::metadata_at_version(version)
+    }
+
+    fn metadata_versions() -> Vec<u32> {
+        Runtime::metadata_versions()
+    }
+}
+
+impl sp_block_builder::BlockBuilder<Block> for Runtime {
+    fn apply_extrinsic(extrinsic: <Block as BlockT>::Extrinsic) -> ApplyExtrinsicResult {
+        Executive::apply_extrinsic(extrinsic)
+    }
+
+    fn finalize_block() -> <Block as BlockT>::Header {
+        Executive::finalize_block()
+    }
+
+    fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<<Block as BlockT>::Extrinsic> {
+        data.create_extrinsics()
+    }
+
+    fn check_inherents(
+        block: Block,
+        data: sp_inherents::InherentData,
+    ) -> sp_inherents::CheckInherentsResult {
+        data.check_extrinsics(&block)
+    }
+}
+
+impl sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> for Runtime {
+    fn validate_transaction(
+        source: TransactionSource,
+        tx: <Block as BlockT>::Extrinsic,
+        block_hash: <Block as BlockT>::Hash,
+    ) -> TransactionValidity {
+        // Filtered calls should not enter the tx pool.
+        if !<Runtime as frame_system::Config>::BaseCallFilter::contains(&tx.function) {
+            return sp_runtime::transaction_validity::InvalidTransaction::Call.into();
+        }
+        Executive::validate_transaction(source, tx, block_hash)
+    }
+}
+
+impl sp_offchain::OffchainWorkerApi<Block> for Runtime {
+    fn offchain_worker(header: &<Block as BlockT>::Header) {
+        Executive::offchain_worker(header)
+    }
+}
+
+impl sp_session::SessionKeys<Block> for Runtime {
+    fn decode_session_keys(encoded: Vec<u8>) -> Option<Vec<(Vec<u8>, KeyTypeId)>> {
+        opaque::SessionKeys::decode_into_raw_public_keys(&encoded)
+    }
+
+    fn generate_session_keys(seed: Option<Vec<u8>>) -> Vec<u8> {
+        opaque::SessionKeys::generate(seed)
+    }
+}
+
+impl fg_primitives::GrandpaApi<Block> for Runtime {
+    fn grandpa_authorities() -> GrandpaAuthorityList {
+        Grandpa::grandpa_authorities()
+    }
+
+    fn current_set_id() -> fg_primitives::SetId {
+        Grandpa::current_set_id()
+    }
+
+    fn submit_report_equivocation_unsigned_extrinsic(
+        _equivocation_proof: fg_primitives::EquivocationProof<
+            <Block as BlockT>::Hash,
+            NumberFor<Block>,
+        >,
+        _key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof,
+    ) -> Option<()> {
+        None
+    }
+
+    fn generate_key_ownership_proof(
+        _set_id: fg_primitives::SetId,
+        _authority_id: GrandpaId,
+    ) -> Option<fg_primitives::OpaqueKeyOwnershipProof> {
+        // NOTE: this is the only implementation possible since we've
+        // defined our key owner proof type as a bottom type (i.e. a type
+        // with no values).
+        None
+    }
+}
+
+impl frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Index> for Runtime {
+    fn account_nonce(account: AccountId) -> Index {
+        System::account_nonce(account)
+    }
+}
+
+impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance> for Runtime {
+    fn query_info(
+        uxt: <Block as BlockT>::Extrinsic,
+        len: u32,
+    ) -> pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo<Balance> {
+        TransactionPayment::query_info(uxt, len)
+    }
+
+    fn query_fee_details(
+        uxt: <Block as BlockT>::Extrinsic,
+        len: u32,
+    ) -> pallet_transaction_payment::FeeDetails<Balance> {
+        TransactionPayment::query_fee_details(uxt, len)
+    }
+
+    fn query_weight_to_fee(weight: Weight) -> Balance {
+        TransactionPayment::weight_to_fee(weight)
+    }
+
+    fn query_length_to_fee(length: u32) -> Balance {
+        TransactionPayment::length_to_fee(length)
+    }
+}
+impl sp_genesis_builder::GenesisBuilder<Block> for Runtime {
+    fn build_state(config: Vec<u8>) -> sp_genesis_builder::Result {
+        frame_support::genesis_builder_helper::build_state::<RuntimeGenesisConfig>(config)
+    }
+
+    fn get_preset(id: &Option<sp_genesis_builder::PresetId>) -> Option<Vec<u8>> {
+        frame_support::genesis_builder_helper::get_preset::<RuntimeGenesisConfig>(id, |_| None)
+    }
+
+    fn preset_names() -> Vec<sp_genesis_builder::PresetId> {
+        vec![]
+    }
+}
+
+#[cfg(feature = "try-runtime")]
+impl frame_try_runtime::TryRuntime<Block> for Runtime {
+    fn on_runtime_upgrade(checks: frame_try_runtime::UpgradeCheckSelect) -> (Weight, Weight) {
+        let weight = Executive::try_runtime_upgrade(checks).unwrap();
+        (weight, BlockWeights::get().max_block)
+    }
+
+    fn execute_block(
+        block: Block,
+        state_root_check: bool,
+        signature_check: bool,
+        select: frame_try_runtime::TryStateSelect,
+    ) -> Weight {
+        Executive::try_execute_block(block, state_root_check, signature_check, select)
+            .expect("execute-block failed")
+    }
+}
+
+#[cfg(feature = "runtime-benchmarks")]
+impl frame_benchmarking::Benchmark<Block> for Runtime {
+    fn benchmark_metadata(
+        extra: bool,
+    ) -> (
+        Vec<frame_benchmarking::BenchmarkList>,
+        Vec<frame_support::traits::StorageInfo>,
+    ) {
+        use frame_benchmarking::{list_benchmark, BenchmarkList, Benchmarking};
+        use frame_support::traits::StorageInfoTrait;
+
+        use frame_benchmarking::baseline::Pallet as Baseline;
+        use frame_system_benchmarking::{
+            extensions::Pallet as SystemExtensionsBench, Pallet as SystemBench,
+        };
+        use pallet_session_benchmarking::Pallet as SessionBench;
+
+        let mut list = Vec::<BenchmarkList>::new();
+        list_benchmarks!(list, extra);
+
+        let storage_info = AllPalletsWithSystem::storage_info();
+        return (list, storage_info);
+    }
+
+    fn dispatch_benchmark(
+        config: frame_benchmarking::BenchmarkConfig,
+    ) -> Result<Vec<frame_benchmarking::BenchmarkBatch>, scale_info::prelude::string::String> {
+        use frame_benchmarking::{baseline::Pallet as Baseline, BenchmarkBatch, Benchmarking};
+        use frame_support::traits::{TrackedStorageKey, WhitelistedStorageKeys};
+        use frame_system_benchmarking::{
+            extensions::Pallet as SystemExtensionsBench, Pallet as SystemBench,
+        };
+        use pallet_session_benchmarking::Pallet as SessionBench;
+
+        impl pallet_session_benchmarking::Config for Runtime {}
+        impl frame_system_benchmarking::Config for Runtime {}
+        impl frame_benchmarking::baseline::Config for Runtime {}
+
+        /*let whitelist: Vec<TrackedStorageKey> = vec![
+        // Block Number
+        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(),
+        // Total Issuance
+        hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(),
+        // Execution Phase
+        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(),
+        // Event Count
+        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(),
+        // System Events
+        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(),
+        // Treasury Account
+        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da95ecffd7b6c0f78751baa9d281e0bfa3a6d6f646c70792f74727372790000000000000000000000000000000000000000").to_vec().into(),
+        ];*/
+
+        let whitelist: Vec<TrackedStorageKey> = AllPalletsWithSystem::whitelisted_storage_keys();
+        let mut batches = Vec::<BenchmarkBatch>::new();
+        let params = (&config, &whitelist);
+        add_benchmarks!(params, batches);
+
+        if batches.is_empty() {
+            return Err("Benchmark not found for this pallet.".into());
         }
-    };
+        Ok(batches)
+    }
 }
+}};}
diff --git a/runtime/common/src/benchmarks.rs b/runtime/common/src/benchmarks.rs
new file mode 100644
index 0000000000000000000000000000000000000000..a4a5cee903ba2bb4a37abcc043e05f7b6c4820c4
--- /dev/null
+++ b/runtime/common/src/benchmarks.rs
@@ -0,0 +1,62 @@
+// 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(feature = "runtime-benchmarks")]
+
+#[macro_export]
+macro_rules! benchmarks_config {
+    () => {
+        #[macro_use]
+        extern crate frame_benchmarking;
+        pub use pallet_collective::RawOrigin;
+
+        type WorstOrigin = RawOrigin<AccountId, TechnicalCommitteeInstance>;
+
+        mod benches {
+            define_benchmarks!(
+                [pallet_certification, Certification]
+                [pallet_distance, Distance]
+                [pallet_oneshot_account, OneshotAccount]
+                [pallet_universal_dividend, UniversalDividend]
+                [pallet_provide_randomness, ProvideRandomness]
+                [pallet_upgrade_origin, UpgradeOrigin]
+                [pallet_duniter_account, Account]
+                [pallet_quota, Quota]
+                [pallet_identity, Identity]
+                [pallet_membership, Membership]
+                [pallet_smith_members, SmithMembers]
+                [pallet_authority_members, AuthorityMembers]
+                // Substrate
+                [frame_system_extensions, SystemExtensionsBench::<Runtime>]
+                [pallet_balances, Balances]
+                [frame_benchmarking::baseline, Baseline::<Runtime>]
+                [pallet_collective, TechnicalCommittee]
+                [pallet_session, SessionBench::<Runtime>]
+                [pallet_im_online, ImOnline]
+                [pallet_sudo, Sudo]
+                [pallet_multisig, Multisig]
+                [pallet_preimage, Preimage]
+                [pallet_proxy, Proxy]
+                [pallet_scheduler, Scheduler]
+                [frame_system, SystemBench::<Runtime>]
+                [pallet_timestamp, Timestamp]
+                [pallet_transaction_payment, TransactionPayment]
+                [pallet_treasury, Treasury]
+                [pallet_utility, Utility]
+            );
+        }
+    };
+}
diff --git a/runtime/common/src/constants.rs b/runtime/common/src/constants.rs
index a9f31004c1b2ad447e3976056f11505aecd91d06..851dc98ad0a4b6b5234d6210e1eccab8a08db6ec 100644
--- a/runtime/common/src/constants.rs
+++ b/runtime/common/src/constants.rs
@@ -18,11 +18,10 @@ use crate::{Balance, BlockNumber};
 use sp_runtime::Perbill;
 
 /// 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
-/// up by `pallet_babe` to implement `fn slot_duration()`.
-///
-/// Change this to adjust the block time.
+// 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
+// up by `pallet_babe` to implement `fn slot_duration()`.
+// Change this to adjust the block time.
 pub const MILLISECS_PER_BLOCK: u64 = 6000;
 pub const SECS_PER_BLOCK: u64 = MILLISECS_PER_BLOCK / 1_000;
 
@@ -41,7 +40,7 @@ pub const YEARS: BlockNumber = (SECS_PER_YEAR / SECS_PER_BLOCK) as BlockNumber;
 // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks.
 pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4);
 
-/// The BABE epoch configuration at genesis.
+// The BABE epoch configuration at genesis.
 pub const BABE_GENESIS_EPOCH_CONFIG: sp_consensus_babe::BabeEpochConfiguration =
     sp_consensus_babe::BabeEpochConfiguration {
         c: PRIMARY_PROBABILITY,
diff --git a/runtime/common/src/handlers.rs b/runtime/common/src/handlers.rs
index 46c61afa63fcd8048d97f2398656b5f754d85262..078bb6d7c28e01178db82b17c0e42c7ca0c2a315 100644
--- a/runtime/common/src/handlers.rs
+++ b/runtime/common/src/handlers.rs
@@ -95,6 +95,7 @@ impl<
 }
 
 /// Runtime handler for OnRemoveMembership, calling all implementations of
+///
 /// OnRemoveMembership and implementing logic at the runtime level.
 /// As the weight accounting is not trivial in this handler, the weight is
 /// done at the handler level.
diff --git a/runtime/common/src/lib.rs b/runtime/common/src/lib.rs
index e4fac0aa6e84cb9e85410ec6029bb20b166b3751..ea2971856503eb90b59c48a6467a8e9cab1c9ca1 100644
--- a/runtime/common/src/lib.rs
+++ b/runtime/common/src/lib.rs
@@ -17,10 +17,12 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 
 mod apis;
+mod benchmarks;
 pub mod constants;
 pub mod entities;
 pub mod fees;
 pub mod handlers;
+mod offchain;
 mod pallets_config;
 pub mod providers;
 
diff --git a/runtime/common/src/offchain.rs b/runtime/common/src/offchain.rs
new file mode 100644
index 0000000000000000000000000000000000000000..aa857c51b1743a619560bb9d745c451b804bb06d
--- /dev/null
+++ b/runtime/common/src/offchain.rs
@@ -0,0 +1,48 @@
+// 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/>.
+
+#[macro_export]
+macro_rules! offchain_config {
+    () => {
+        impl<LocalCall> frame_system::offchain::CreateTransaction<LocalCall> for Runtime
+        where
+            RuntimeCall: From<LocalCall>,
+        {
+            type Extension = TxExtension;
+
+            fn create_transaction(call: RuntimeCall, extension: TxExtension) -> UncheckedExtrinsic {
+                generic::UncheckedExtrinsic::new_transaction(call, extension)
+            }
+        }
+
+        impl<LocalCall> frame_system::offchain::CreateInherent<LocalCall> for Runtime
+        where
+            RuntimeCall: From<LocalCall>,
+        {
+            fn create_inherent(call: RuntimeCall) -> UncheckedExtrinsic {
+                generic::UncheckedExtrinsic::new_bare(call)
+            }
+        }
+
+        impl<LocalCall> frame_system::offchain::CreateTransactionBase<LocalCall> for Runtime
+        where
+            RuntimeCall: From<LocalCall>,
+        {
+            type Extrinsic = UncheckedExtrinsic;
+            type RuntimeCall = RuntimeCall;
+        }
+    };
+}
diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs
index a84ad432bfb93be73e97684dec87b905391b3474..d7b785dea2fba478f403128e061a5792ef483610 100644
--- a/runtime/common/src/pallets_config.rs
+++ b/runtime/common/src/pallets_config.rs
@@ -40,6 +40,8 @@ macro_rules! pallets_config {
             type BlockWeights = BlockWeights;
             /// The weight of database operations that the runtime can invoke.
             type DbWeight = DbWeight;
+            /// The weight of transaction extensions.
+            type ExtensionsWeightInfo = weights::frame_system_extensions::WeightInfo<Runtime>;
             /// The type for hashing blocks and tries.
             type Hash = Hash;
             /// The hashing algorithm used.
@@ -154,6 +156,7 @@ macro_rules! pallets_config {
         impl pallet_balances::Config for Runtime {
             type AccountStore = Account;
             type Balance = Balance;
+            type DoneSlashHandler = ();
             type DustRemoval = HandleFees<TreasuryAccount, Balances>;
             type ExistentialDeposit = ExistentialDeposit;
             type FreezeIdentifier = ();
@@ -179,6 +182,7 @@ macro_rules! pallets_config {
             type OnChargeTransaction = OneshotAccount;
             type OperationalFeeMultiplier = frame_support::traits::ConstU8<5>;
             type RuntimeEvent = RuntimeEvent;
+            type WeightInfo = weights::pallet_transaction_payment::WeightInfo<Runtime>;
             type WeightToFee = common_runtime::fees::WeightToFeeImpl<Balance, Self, Target>;
         }
         impl pallet_oneshot_account::Config for Runtime {
@@ -382,6 +386,7 @@ macro_rules! pallets_config {
             type BenchmarkHelper = ();
             type Beneficiary = AccountId;
             type BeneficiaryLookup = AccountIdLookup<AccountId, ()>;
+            type BlockNumberProvider = System;
             type Burn = Burn;
             type BurnDestination = ();
             type Currency = Balances;
@@ -528,10 +533,13 @@ macro_rules! pallets_config {
             pub MaxWeight: Weight = Perbill::from_percent(50) * BlockWeights::get().max_block;
         }
         impl pallet_collective::Config<Instance2> for Runtime {
+            type Consideration = ();
             #[cfg(not(feature = "runtime-benchmarks"))]
             type DefaultVote = TechnicalCommitteeDefaultVote;
             #[cfg(feature = "runtime-benchmarks")]
             type DefaultVote = pallet_collective::PrimeDefaultVote;
+            type DisapproveOrigin = EnsureRoot<Self::AccountId>;
+            type KillOrigin = EnsureRoot<Self::AccountId>;
             type MaxMembers = frame_support::pallet_prelude::ConstU32<100>;
             type MaxProposalWeight = MaxWeight;
             type MaxProposals = frame_support::pallet_prelude::ConstU32<20>;
diff --git a/runtime/g1/Cargo.toml b/runtime/g1/Cargo.toml
index 61b21bbb3c7808acc997dadb625ac4345ca79bb7..ae48e927ca669c81e8433a28f1c725480bfec39f 100644
--- a/runtime/g1/Cargo.toml
+++ b/runtime/g1/Cargo.toml
@@ -11,9 +11,18 @@ version.workspace = true
 [package.metadata.docs.rs]
 targets = ["x86_64-unknown-linux-gnu"]
 
+
 [features]
 default = ["std"]
 constant-fees = ["common-runtime/constant-fees"]
+# Enable the metadata hash generation.
+#
+# This is hidden behind a feature because it increases the compile time.
+# The wasm binary needs to be compiled twice, once to fetch the metadata,
+# generate the metadata hash and then a second time with the
+# `RUNTIME_METADATA_HASH` environment variable set for the `CheckMetadataHash`
+# extension.
+metadata-hash = ["substrate-wasm-builder/metadata-hash"]
 runtime-benchmarks = [
 	"common-runtime/runtime-benchmarks",
 	"frame-benchmarking/runtime-benchmarks",
@@ -44,6 +53,7 @@ runtime-benchmarks = [
 	"pallet-smith-members/runtime-benchmarks",
 	"pallet-sudo/runtime-benchmarks",
 	"pallet-timestamp/runtime-benchmarks",
+	"pallet-transaction-payment/runtime-benchmarks",
 	"pallet-treasury/runtime-benchmarks",
 	"pallet-universal-dividend/runtime-benchmarks",
 	"pallet-upgrade-origin/runtime-benchmarks",
@@ -181,6 +191,7 @@ frame-system-benchmarking = { workspace = true }
 frame-system = { workspace = true }
 frame-system-rpc-runtime-api = { workspace = true }
 frame-try-runtime = { workspace = true, optional = true }
+frame-metadata-hash-extension = { workspace = true }
 hex-literal = { workspace = true, optional = true }
 log = { workspace = true }
 pallet-atomic-swap = { workspace = true }
diff --git a/runtime/g1/build.rs b/runtime/g1/build.rs
index b31efa2f039949719cab9bfdcb170c98d4cb542f..e3d20b117f08a80cf32543cc2c9e3d9feed79246 100644
--- a/runtime/g1/build.rs
+++ b/runtime/g1/build.rs
@@ -17,10 +17,12 @@
 fn main() {
     #[cfg(feature = "std")]
     {
-        substrate_wasm_builder::WasmBuilder::new()
-            .with_current_project()
-            .export_heap_base()
-            .import_memory()
+        #[cfg(not(feature = "metadata-hash"))]
+        substrate_wasm_builder::WasmBuilder::init_with_defaults().build();
+
+        #[cfg(feature = "metadata-hash")]
+        substrate_wasm_builder::WasmBuilder::init_with_defaults()
+            .enable_metadata_hash("Ğ", 2)
             .build();
     }
 }
diff --git a/runtime/g1/src/lib.rs b/runtime/g1/src/lib.rs
index 8dccda2f1d873a1b5e7b754f712e7b69b7cf16b1..91f34c21df1664591257fa1dd9621130864d8b4a 100644
--- a/runtime/g1/src/lib.rs
+++ b/runtime/g1/src/lib.rs
@@ -22,10 +22,6 @@
 #[cfg(feature = "std")]
 include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
 
-#[cfg(feature = "runtime-benchmarks")]
-#[macro_use]
-extern crate frame_benchmarking;
-
 pub mod parameters;
 pub mod weights;
 
@@ -39,8 +35,6 @@ use frame_support::{traits::Contains, PalletId};
 pub use frame_system::Call as SystemCall;
 use frame_system::EnsureRoot;
 pub use pallet_balances::Call as BalancesCall;
-#[cfg(feature = "runtime-benchmarks")]
-pub use pallet_collective::RawOrigin;
 use pallet_grandpa::{
     fg_primitives, AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList,
 };
@@ -56,10 +50,10 @@ use sp_core::OpaqueMetadata;
 #[cfg(any(feature = "std", test))]
 pub use sp_runtime::BuildStorage;
 use sp_runtime::{
-    create_runtime_str, generic, impl_opaque_keys,
+    generic, impl_opaque_keys,
     traits::{AccountIdLookup, BlakeTwo256, Block as BlockT, NumberFor, OpaqueKeys},
     transaction_validity::{TransactionSource, TransactionValidity},
-    ApplyExtrinsicResult, Perquintill,
+    ApplyExtrinsicResult, Cow, Perquintill,
 };
 pub use sp_runtime::{KeyTypeId, Perbill, Permill};
 #[cfg(feature = "std")]
@@ -79,14 +73,12 @@ pub use frame_support::{
     StorageValue,
 };
 
-common_runtime::declare_session_keys! {}
-
 // To learn more about runtime versioning and what each of the following value means:
 //   https://substrate.dev/docs/en/knowledgebase/runtime/upgrades#runtime-versioning
 #[sp_version::runtime_version]
 pub const VERSION: RuntimeVersion = RuntimeVersion {
-    spec_name: create_runtime_str!("g1"),
-    impl_name: create_runtime_str!("duniter-g1"),
+    spec_name: Cow::Borrowed("g1"),
+    impl_name: Cow::Borrowed("duniter-g1"),
     authoring_version: 1,
     // The version of the runtime specification. A full node will not attempt to use its native
     //   runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`,
@@ -97,7 +89,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
     impl_version: 1,
     apis: RUNTIME_API_VERSIONS,
     transaction_version: 1,
-    state_version: 1,
+    system_version: 1,
 };
 
 /// The version information used to identify this runtime when compiled natively.
@@ -113,9 +105,9 @@ pub fn native_version() -> NativeVersion {
 pub type Block = sp_runtime::generic::Block<Header, UncheckedExtrinsic>;
 /// Unchecked extrinsic type as expected by this runtime.
 pub type UncheckedExtrinsic =
-    generic::UncheckedExtrinsic<Address, RuntimeCall, Signature, SignedExtra>;
-/// The SignedExtension to the basic transaction logic.
-pub type SignedExtra = (
+    generic::UncheckedExtrinsic<Address, RuntimeCall, Signature, TxExtension>;
+/// The `TransactionExtension` to the basic transaction logic.
+pub type TxExtension = (
     frame_system::CheckNonZeroSender<Runtime>,
     frame_system::CheckSpecVersion<Runtime>,
     frame_system::CheckTxVersion<Runtime>,
@@ -124,6 +116,7 @@ pub type SignedExtra = (
     pallet_oneshot_account::CheckNonce<Runtime>,
     frame_system::CheckWeight<Runtime>,
     pallet_transaction_payment::ChargeTransactionPayment<Runtime>,
+    frame_metadata_hash_extension::CheckMetadataHash<Runtime>,
 );
 /// Executive: handles dispatch to the various modules.
 pub type Executive = frame_executive::Executive<
@@ -136,38 +129,6 @@ pub type Executive = frame_executive::Executive<
 
 pub type TechnicalCommitteeInstance = Instance2;
 
-#[cfg(feature = "runtime-benchmarks")]
-mod benches {
-    define_benchmarks!(
-        [pallet_certification, Certification]
-        [pallet_distance, Distance]
-        [pallet_oneshot_account, OneshotAccount]
-        [pallet_universal_dividend, UniversalDividend]
-        [pallet_provide_randomness, ProvideRandomness]
-        [pallet_upgrade_origin, UpgradeOrigin]
-        [pallet_duniter_account, Account]
-        [pallet_identity, Identity]
-        [pallet_membership, Membership]
-        [pallet_smith_members, SmithMembers]
-        [pallet_authority_members, AuthorityMembers]
-        // Substrate
-        [pallet_balances, Balances]
-        [frame_benchmarking::baseline, Baseline::<Runtime>]
-        [pallet_collective, TechnicalCommittee]
-        [pallet_sudo, Sudo]
-        [pallet_session, SessionBench::<Runtime>]
-        [pallet_im_online, ImOnline]
-        [pallet_multisig, Multisig]
-        [pallet_preimage, Preimage]
-        [pallet_proxy, Proxy]
-        [pallet_scheduler, Scheduler]
-        [frame_system, SystemBench::<Runtime>]
-        [pallet_timestamp, Timestamp]
-        [pallet_treasury, Treasury]
-        [pallet_utility, Utility]
-    );
-}
-
 pub struct BaseCallFilter;
 impl Contains<RuntimeCall> for BaseCallFilter {
     fn contains(call: &RuntimeCall) -> bool {
@@ -228,11 +189,6 @@ impl frame_support::traits::InstanceFilter<RuntimeCall> for ProxyType {
     }
 }
 
-#[cfg(feature = "runtime-benchmarks")]
-type WorstOrigin = RawOrigin<AccountId, TechnicalCommitteeInstance>;
-// Configure pallets to include in runtime.
-common_runtime::pallets_config!();
-
 // Create the runtime by composing the pallets that were previously configured.
 construct_runtime!(
     pub enum Runtime
@@ -289,22 +245,11 @@ construct_runtime!(
     }
 );
 
-impl<C> frame_system::offchain::SendTransactionTypes<C> for Runtime
-where
-    RuntimeCall: From<C>,
-{
-    type Extrinsic = UncheckedExtrinsic;
-    type OverarchingCall = RuntimeCall;
-}
-
 // All of our runtimes share most of their Runtime API implementations.
 // We use a macro to implement this common part and add runtime-specific additional implementations.
-// This macro expands to :
-// ```
-// impl_runtime_apis! {
-//     // All impl blocks shared between all runtimes.
-//
-//     // Specific impls provided to the `runtime_apis!` macro.
-// }
-// ```
+common_runtime::pallets_config!();
+common_runtime::declare_session_keys! {}
+#[cfg(feature = "runtime-benchmarks")]
+common_runtime::benchmarks_config!();
+common_runtime::offchain_config! {}
 common_runtime::runtime_apis! {}
diff --git a/runtime/g1/src/weights.rs b/runtime/g1/src/weights.rs
index 1bf51bdbb063859c33197a6251bf767ba1311442..8371a5d27816ee03cb0042f5a34957c28ebf570c 100644
--- a/runtime/g1/src/weights.rs
+++ b/runtime/g1/src/weights.rs
@@ -20,6 +20,8 @@
 #![allow(clippy::unnecessary_cast)]
 #![allow(unused_doc_comments)]
 
+pub mod frame_system_extensions;
+pub mod pallet_transaction_payment;
 pub mod block_weights;
 pub mod extrinsic_weights;
 pub mod frame_system;
diff --git a/runtime/g1/src/weights/block_weights.rs b/runtime/g1/src/weights/block_weights.rs
index dbe74e93346746f29dec02d0428b30540401949c..3feae7908be11fb2defb38a1705b3ceb5217030f 100644
--- a/runtime/g1/src/weights/block_weights.rs
+++ b/runtime/g1/src/weights/block_weights.rs
@@ -1,6 +1,6 @@
 
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14 (Y/M/D)
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22 (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`
@@ -22,21 +22,21 @@ use sp_core::parameter_types;
 use sp_weights::{constants::WEIGHT_REF_TIME_PER_NANOS, Weight};
 
 parameter_types! {
-	/// Time to execute an empty block.
+	/// Weight of executing an empty block.
 	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
 	///
 	/// Stats nanoseconds:
-	///   Min, Max: 118_657, 202_413
-	///   Average:  131_010
-	///   Median:   127_750
-	///   Std-Dev:  10272.54
+	///   Min, Max: 125_923, 217_836
+	///   Average:  139_166
+	///   Median:   136_303
+	///   Std-Dev:  12539.66
 	///
 	/// Percentiles nanoseconds:
-	///   99th: 167_754
-	///   95th: 141_223
-	///   75th: 133_515
+	///   99th: 185_772
+	///   95th: 169_501
+	///   75th: 138_599
 	pub const BlockExecutionWeight: Weight =
-		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(131_010), 0);
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(139_166), 0);
 }
 
 #[cfg(test)]
diff --git a/runtime/g1/src/weights/extrinsic_weights.rs b/runtime/g1/src/weights/extrinsic_weights.rs
index 1e6b17d1244f4c6edcc83573d237d716880cbd59..cba0c458f320b705c038748629c8552028b26ccc 100644
--- a/runtime/g1/src/weights/extrinsic_weights.rs
+++ b/runtime/g1/src/weights/extrinsic_weights.rs
@@ -1,6 +1,6 @@
 
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14 (Y/M/D)
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22 (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`
@@ -22,21 +22,21 @@ 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`.
+	/// Weight of executing a NO-OP extrinsic, for example `System::remark`.
 	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
 	///
 	/// Stats nanoseconds:
-	///   Min, Max: 88_059, 93_981
-	///   Average:  88_294
-	///   Median:   88_233
-	///   Std-Dev:  578.38
+	///   Min, Max: 98_996, 121_920
+	///   Average:  102_226
+	///   Median:   102_046
+	///   Std-Dev:  3295.79
 	///
 	/// Percentiles nanoseconds:
-	///   99th: 88_574
-	///   95th: 88_428
-	///   75th: 88_275
+	///   99th: 112_599
+	///   95th: 107_527
+	///   75th: 103_245
 	pub const ExtrinsicBaseWeight: Weight =
-		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(88_294), 0);
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(102_226), 0);
 }
 
 #[cfg(test)]
diff --git a/runtime/g1/src/weights/frame_benchmarking_baseline.rs b/runtime/g1/src/weights/frame_benchmarking_baseline.rs
index 8a918a809797592e1640a6c0a4c7303639b5c6c0..6155282d263d031bd53c2f3bf76fca289408ffe1 100644
--- a/runtime/g1/src/weights/frame_benchmarking_baseline.rs
+++ b/runtime/g1/src/weights/frame_benchmarking_baseline.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `frame_benchmarking::baseline`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 98_000 picoseconds.
-		Weight::from_parts(126_869, 0)
+		// Minimum execution time: 83_000 picoseconds.
+		Weight::from_parts(124_492, 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: 98_000 picoseconds.
-		Weight::from_parts(127_293, 0)
+		// Minimum execution time: 83_000 picoseconds.
+		Weight::from_parts(125_005, 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: 100_000 picoseconds.
-		Weight::from_parts(130_804, 0)
+		// Minimum execution time: 85_000 picoseconds.
+		Weight::from_parts(126_717, 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: 98_000 picoseconds.
-		Weight::from_parts(125_049, 0)
+		// Minimum execution time: 84_000 picoseconds.
+		Weight::from_parts(135_458, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	fn hashing() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 20_335_062_000 picoseconds.
-		Weight::from_parts(20_372_537_000, 0)
+		// Minimum execution time: 19_567_598_000 picoseconds.
+		Weight::from_parts(19_638_329_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 100]`.
@@ -96,10 +96,10 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 108_000 picoseconds.
-		Weight::from_parts(26_639_536, 0)
+		// Minimum execution time: 95_000 picoseconds.
+		Weight::from_parts(24_280_304, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 11_426
-			.saturating_add(Weight::from_parts(31_161_299, 0).saturating_mul(i.into()))
+			// Standard Error: 14_286
+			.saturating_add(Weight::from_parts(35_898_884, 0).saturating_mul(i.into()))
 	}
 }
diff --git a/runtime/g1/src/weights/frame_system.rs b/runtime/g1/src/weights/frame_system.rs
index 7f78b58c0533a0fc6035f5c6c8ff340b7b29c932..aa8c74e1bd71ee1210ae774424ca9ae23dc2b4c0 100644
--- a/runtime/g1/src/weights/frame_system.rs
+++ b/runtime/g1/src/weights/frame_system.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `frame_system`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -52,50 +52,44 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_773_000 picoseconds.
-		Weight::from_parts(1_904_000, 0)
+		// Minimum execution time: 1_948_000 picoseconds.
+		Weight::from_parts(728_929, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 0
-			.saturating_add(Weight::from_parts(258, 0).saturating_mul(b.into()))
+			.saturating_add(Weight::from_parts(256, 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_939_000 picoseconds.
-		Weight::from_parts(5_174_000, 0)
+		// Minimum execution time: 5_097_000 picoseconds.
+		Weight::from_parts(5_194_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 0
-			.saturating_add(Weight::from_parts(1_035, 0).saturating_mul(b.into()))
+			.saturating_add(Weight::from_parts(1_036, 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: 3_132_000 picoseconds.
-		Weight::from_parts(3_669_000, 0)
-			.saturating_add(Weight::from_parts(0, 1485))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(2))
+		//  Estimated: `0`
+		// Minimum execution time: 3_343_000 picoseconds.
+		Weight::from_parts(3_623_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			.saturating_add(T::DbWeight::get().writes(1))
 	}
-	/// 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: 75_303_852_000 picoseconds.
-		Weight::from_parts(75_919_531_000, 0)
-			.saturating_add(Weight::from_parts(0, 1485))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(2))
+		//  Estimated: `0`
+		// Minimum execution time: 75_320_180_000 picoseconds.
+		Weight::from_parts(75_665_532_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			.saturating_add(T::DbWeight::get().writes(1))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
 	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -104,11 +98,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_753_000 picoseconds.
-		Weight::from_parts(1_923_000, 0)
+		// Minimum execution time: 2_020_000 picoseconds.
+		Weight::from_parts(2_084_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 699
-			.saturating_add(Weight::from_parts(570_505, 0).saturating_mul(i.into()))
+			// Standard Error: 605
+			.saturating_add(Weight::from_parts(570_148, 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 +112,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_850_000 picoseconds.
-		Weight::from_parts(2_010_000, 0)
+		// Minimum execution time: 1_909_000 picoseconds.
+		Weight::from_parts(1_971_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 734
-			.saturating_add(Weight::from_parts(454_777, 0).saturating_mul(i.into()))
+			// Standard Error: 779
+			.saturating_add(Weight::from_parts(452_893, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
@@ -131,12 +125,12 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 	fn kill_prefix(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + p * (69 ±0)`
-		//  Estimated: `76 + p * (70 ±0)`
-		// Minimum execution time: 3_403_000 picoseconds.
-		Weight::from_parts(3_518_000, 0)
-			.saturating_add(Weight::from_parts(0, 76))
-			// Standard Error: 678
-			.saturating_add(Weight::from_parts(1_034_294, 0).saturating_mul(p.into()))
+		//  Estimated: `75 + p * (70 ±0)`
+		// Minimum execution time: 3_660_000 picoseconds.
+		Weight::from_parts(3_807_000, 0)
+			.saturating_add(Weight::from_parts(0, 75))
+			// Standard Error: 802
+			.saturating_add(Weight::from_parts(1_032_954, 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,25 +141,23 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 7_815_000 picoseconds.
-		Weight::from_parts(8_763_000, 0)
+		// Minimum execution time: 8_256_000 picoseconds.
+		Weight::from_parts(9_051_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: 79_593_300_000 picoseconds.
-		Weight::from_parts(80_215_334_000, 0)
+		// Minimum execution time: 79_556_651_000 picoseconds.
+		Weight::from_parts(80_295_270_000, 0)
 			.saturating_add(Weight::from_parts(0, 1518))
-			.saturating_add(T::DbWeight::get().reads(2))
-			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(2))
 	}
 }
diff --git a/runtime/g1/src/weights/frame_system_extensions.rs b/runtime/g1/src/weights/frame_system_extensions.rs
new file mode 100644
index 0000000000000000000000000000000000000000..3842af0184cb1b6ef6fb996aac2749876a195b6c
--- /dev/null
+++ b/runtime/g1/src/weights/frame_system_extensions.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 `frame_system_extensions`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --genesis-builder=spec-genesis
+// --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_system_extensions`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> frame_system::ExtensionsWeightInfo for WeightInfo<T> {
+	fn check_genesis() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `30`
+		//  Estimated: `0`
+		// Minimum execution time: 2_560_000 picoseconds.
+		Weight::from_parts(2_739_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_mortality_mortal_transaction() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `68`
+		//  Estimated: `0`
+		// Minimum execution time: 5_124_000 picoseconds.
+		Weight::from_parts(5_512_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_mortality_immortal_transaction() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `68`
+		//  Estimated: `0`
+		// Minimum execution time: 5_207_000 picoseconds.
+		Weight::from_parts(5_544_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_non_zero_sender() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 458_000 picoseconds.
+		Weight::from_parts(495_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 check_nonce() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `61`
+		//  Estimated: `3558`
+		// Minimum execution time: 5_842_000 picoseconds.
+		Weight::from_parts(6_123_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn check_spec_version() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 298_000 picoseconds.
+		Weight::from_parts(363_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_tx_version() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 307_000 picoseconds.
+		Weight::from_parts(340_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_weight() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_362_000 picoseconds.
+		Weight::from_parts(3_598_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+}
diff --git a/runtime/g1/src/weights/pallet_authority_members.rs b/runtime/g1/src/weights/pallet_authority_members.rs
index 54f63fd55a26d5167c738de285593a4a5b354df3..e51b40eed13f30f53f87d311ccc56278fe0e2351 100644
--- a/runtime/g1/src/weights/pallet_authority_members.rs
+++ b/runtime/g1/src/weights/pallet_authority_members.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_authority_members`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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:  `900`
-		//  Estimated: `4365`
-		// Minimum execution time: 25_414_000 picoseconds.
-		Weight::from_parts(26_305_000, 0)
-			.saturating_add(Weight::from_parts(0, 4365))
+		//  Measured:  `867`
+		//  Estimated: `4332`
+		// Minimum execution time: 22_951_000 picoseconds.
+		Weight::from_parts(24_337_000, 0)
+			.saturating_add(Weight::from_parts(0, 4332))
 			.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:  `1356`
-		//  Estimated: `4821`
-		// Minimum execution time: 33_882_000 picoseconds.
-		Weight::from_parts(35_734_000, 0)
-			.saturating_add(Weight::from_parts(0, 4821))
+		//  Measured:  `1323`
+		//  Estimated: `4788`
+		// Minimum execution time: 33_463_000 picoseconds.
+		Weight::from_parts(36_083_000, 0)
+			.saturating_add(Weight::from_parts(0, 4788))
 			.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:  `1805`
-		//  Estimated: `12695`
-		// Minimum execution time: 45_254_000 picoseconds.
-		Weight::from_parts(47_222_000, 0)
-			.saturating_add(Weight::from_parts(0, 12695))
+		//  Measured:  `1772`
+		//  Estimated: `12662`
+		// Minimum execution time: 41_785_000 picoseconds.
+		Weight::from_parts(43_672_000, 0)
+			.saturating_add(Weight::from_parts(0, 12662))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -135,8 +135,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `847`
 		//  Estimated: `4312`
-		// Minimum execution time: 38_863_000 picoseconds.
-		Weight::from_parts(40_495_000, 0)
+		// Minimum execution time: 37_168_000 picoseconds.
+		Weight::from_parts(39_509_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: 9_322_000 picoseconds.
-		Weight::from_parts(9_735_000, 0)
+		// Minimum execution time: 9_406_000 picoseconds.
+		Weight::from_parts(9_759_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/g1/src/weights/pallet_balances.rs b/runtime/g1/src/weights/pallet_balances.rs
index 8fbefbce0a537b382446bc832631ae2dbe97906d..6f7898d756522d0bfd47e4e82532e998426ee0b9 100644
--- a/runtime/g1/src/weights/pallet_balances.rs
+++ b/runtime/g1/src/weights/pallet_balances.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_balances`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 51_075_000 picoseconds.
-		Weight::from_parts(51_987_000, 0)
+		// Minimum execution time: 50_236_000 picoseconds.
+		Weight::from_parts(52_062_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: 30_866_000 picoseconds.
-		Weight::from_parts(32_087_000, 0)
+		// Minimum execution time: 31_259_000 picoseconds.
+		Weight::from_parts(32_336_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -77,8 +77,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `134`
 		//  Estimated: `3558`
-		// Minimum execution time: 11_418_000 picoseconds.
-		Weight::from_parts(11_998_000, 0)
+		// Minimum execution time: 11_697_000 picoseconds.
+		Weight::from_parts(12_246_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -89,8 +89,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `134`
 		//  Estimated: `3558`
-		// Minimum execution time: 17_170_000 picoseconds.
-		Weight::from_parts(18_124_000, 0)
+		// Minimum execution time: 17_376_000 picoseconds.
+		Weight::from_parts(18_199_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: 51_774_000 picoseconds.
-		Weight::from_parts(53_796_000, 0)
+		// Minimum execution time: 52_345_000 picoseconds.
+		Weight::from_parts(53_198_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: 38_583_000 picoseconds.
-		Weight::from_parts(39_576_000, 0)
+		// Minimum execution time: 38_384_000 picoseconds.
+		Weight::from_parts(39_338_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -125,8 +125,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `134`
 		//  Estimated: `3558`
-		// Minimum execution time: 14_269_000 picoseconds.
-		Weight::from_parts(15_094_000, 0)
+		// Minimum execution time: 13_963_000 picoseconds.
+		Weight::from_parts(14_665_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,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 5_455_000 picoseconds.
-		Weight::from_parts(5_654_000, 0)
+		// Minimum execution time: 5_389_000 picoseconds.
+		Weight::from_parts(5_799_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `System::Account` (r:1 w:1)
@@ -145,8 +145,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `63`
 		//  Estimated: `3558`
-		// Minimum execution time: 35_971_000 picoseconds.
-		Weight::from_parts(37_325_000, 0)
+		// Minimum execution time: 36_317_000 picoseconds.
+		Weight::from_parts(38_998_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -155,8 +155,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 16_430_000 picoseconds.
-		Weight::from_parts(16_934_000, 0)
+		// Minimum execution time: 16_826_000 picoseconds.
+		Weight::from_parts(17_171_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
index 3b52d4e48a4d49b559614a03f87b12da53d58d20..75afeb55529f3381842b55f38e1bce1f8e9e06ab 100644
--- a/runtime/g1/src/weights/pallet_certification.rs
+++ b/runtime/g1/src/weights/pallet_certification.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_certification`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -61,8 +61,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `996`
 		//  Estimated: `6936`
-		// Minimum execution time: 39_647_000 picoseconds.
-		Weight::from_parts(41_507_000, 0)
+		// Minimum execution time: 40_444_000 picoseconds.
+		Weight::from_parts(42_149_000, 0)
 			.saturating_add(Weight::from_parts(0, 6936))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -81,8 +81,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `1019`
 		//  Estimated: `6959`
-		// Minimum execution time: 35_555_000 picoseconds.
-		Weight::from_parts(37_928_000, 0)
+		// Minimum execution time: 36_366_000 picoseconds.
+		Weight::from_parts(37_863_000, 0)
 			.saturating_add(Weight::from_parts(0, 6959))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -119,11 +119,11 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 	/// 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: 120_680_000 picoseconds.
-		Weight::from_parts(124_928_000, 0)
-			.saturating_add(Weight::from_parts(0, 15567))
+		//  Measured:  `2169`
+		//  Estimated: `15534`
+		// Minimum execution time: 121_099_000 picoseconds.
+		Weight::from_parts(126_760_000, 0)
+			.saturating_add(Weight::from_parts(0, 15534))
 			.saturating_add(T::DbWeight::get().reads(20))
 			.saturating_add(T::DbWeight::get().writes(22))
 	}
@@ -136,13 +136,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:  `554 + i * (35 ±0)`
-		//  Estimated: `4018 + i * (2511 ±0)`
-		// Minimum execution time: 30_026_000 picoseconds.
-		Weight::from_parts(30_298_000, 0)
-			.saturating_add(Weight::from_parts(0, 4018))
-			// Standard Error: 24_742
-			.saturating_add(Weight::from_parts(8_970_118, 0).saturating_mul(i.into()))
+		//  Measured:  `579 + i * (35 ±0)`
+		//  Estimated: `4049 + i * (2511 ±0)`
+		// Minimum execution time: 27_537_000 picoseconds.
+		Weight::from_parts(10_475_669, 0)
+			.saturating_add(Weight::from_parts(0, 4049))
+			// Standard Error: 5_467
+			.saturating_add(Weight::from_parts(4_345_461, 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))
@@ -155,8 +155,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `138`
 		//  Estimated: `3603`
-		// Minimum execution time: 3_338_000 picoseconds.
-		Weight::from_parts(3_629_000, 0)
+		// Minimum execution time: 3_368_000 picoseconds.
+		Weight::from_parts(3_590_000, 0)
 			.saturating_add(Weight::from_parts(0, 3603))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -166,8 +166,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `275`
 		//  Estimated: `3740`
-		// Minimum execution time: 5_072_000 picoseconds.
-		Weight::from_parts(5_393_000, 0)
+		// Minimum execution time: 5_355_000 picoseconds.
+		Weight::from_parts(5_895_000, 0)
 			.saturating_add(Weight::from_parts(0, 3740))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -182,28 +182,28 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `711`
 		//  Estimated: `6651`
-		// Minimum execution time: 26_226_000 picoseconds.
-		Weight::from_parts(27_431_000, 0)
+		// Minimum execution time: 24_043_000 picoseconds.
+		Weight::from_parts(24_691_000, 0)
 			.saturating_add(Weight::from_parts(0, 6651))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.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:1000 w:1000)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:100 w:100)
 	/// 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]`.
+	/// The range of component `i` is `[2, 100]`.
 	fn do_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: 30_026_000 picoseconds.
-		Weight::from_parts(30_298_000, 0)
-			.saturating_add(Weight::from_parts(0, 4018))
-			// Standard Error: 24_742
-			.saturating_add(Weight::from_parts(8_970_118, 0).saturating_mul(i.into()))
+		//  Measured:  `543 + i * (35 ±0)`
+		//  Estimated: `4016 + i * (2511 ±0)`
+		// Minimum execution time: 24_096_000 picoseconds.
+		Weight::from_parts(20_925_327, 0)
+			.saturating_add(Weight::from_parts(0, 4016))
+			// Standard Error: 4_534
+			.saturating_add(Weight::from_parts(3_964_735, 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))
diff --git a/runtime/g1/src/weights/pallet_collective.rs b/runtime/g1/src/weights/pallet_collective.rs
index 1393afccc8b640462cc09368907225334e5b1edb..7f43f7ba67f1286925c5e0181a85ae121d6980a2 100644
--- a/runtime/g1/src/weights/pallet_collective.rs
+++ b/runtime/g1/src/weights/pallet_collective.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_collective`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 12_251_000 picoseconds.
-		Weight::from_parts(12_517_000, 0)
+		// Minimum execution time: 12_069_000 picoseconds.
+		Weight::from_parts(12_285_000, 0)
 			.saturating_add(Weight::from_parts(0, 10019))
-			// Standard Error: 11_418
-			.saturating_add(Weight::from_parts(804_334, 0).saturating_mul(m.into()))
-			// Standard Error: 56_446
-			.saturating_add(Weight::from_parts(7_135_104, 0).saturating_mul(p.into()))
+			// Standard Error: 14_795
+			.saturating_add(Weight::from_parts(1_008_800, 0).saturating_mul(m.into()))
+			// Standard Error: 73_138
+			.saturating_add(Weight::from_parts(7_874_939, 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: 11_158_000 picoseconds.
-		Weight::from_parts(10_618_729, 0)
+		// Minimum execution time: 11_326_000 picoseconds.
+		Weight::from_parts(10_737_955, 0)
 			.saturating_add(Weight::from_parts(0, 1518))
-			// Standard Error: 29
-			.saturating_add(Weight::from_parts(1_410, 0).saturating_mul(b.into()))
-			// Standard Error: 305
-			.saturating_add(Weight::from_parts(13_287, 0).saturating_mul(m.into()))
+			// Standard Error: 28
+			.saturating_add(Weight::from_parts(1_439, 0).saturating_mul(b.into()))
+			// Standard Error: 294
+			.saturating_add(Weight::from_parts(13_153, 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: 13_178_000 picoseconds.
-		Weight::from_parts(12_704_438, 0)
+		// Minimum execution time: 13_664_000 picoseconds.
+		Weight::from_parts(13_031_494, 0)
 			.saturating_add(Weight::from_parts(0, 3498))
-			// Standard Error: 34
-			.saturating_add(Weight::from_parts(1_465, 0).saturating_mul(b.into()))
-			// Standard Error: 357
-			.saturating_add(Weight::from_parts(21_695, 0).saturating_mul(m.into()))
+			// Standard Error: 39
+			.saturating_add(Weight::from_parts(1_455, 0).saturating_mul(b.into()))
+			// Standard Error: 406
+			.saturating_add(Weight::from_parts(21_406, 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: 19_206_000 picoseconds.
-		Weight::from_parts(18_996_814, 0)
+		// Minimum execution time: 18_449_000 picoseconds.
+		Weight::from_parts(17_535_525, 0)
 			.saturating_add(Weight::from_parts(0, 3461))
-			// Standard Error: 79
-			.saturating_add(Weight::from_parts(2_515, 0).saturating_mul(b.into()))
-			// Standard Error: 833
-			.saturating_add(Weight::from_parts(20_144, 0).saturating_mul(m.into()))
-			// Standard Error: 4_163
-			.saturating_add(Weight::from_parts(301_217, 0).saturating_mul(p.into()))
+			// Standard Error: 70
+			.saturating_add(Weight::from_parts(2_311, 0).saturating_mul(b.into()))
+			// Standard Error: 733
+			.saturating_add(Weight::from_parts(20_026, 0).saturating_mul(m.into()))
+			// Standard Error: 3_666
+			.saturating_add(Weight::from_parts(283_197, 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: 18_109_000 picoseconds.
-		Weight::from_parts(19_258_443, 0)
+		// Minimum execution time: 17_102_000 picoseconds.
+		Weight::from_parts(18_044_832, 0)
 			.saturating_add(Weight::from_parts(0, 4037))
-			// Standard Error: 720
-			.saturating_add(Weight::from_parts(36_118, 0).saturating_mul(m.into()))
+			// Standard Error: 703
+			.saturating_add(Weight::from_parts(36_611, 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: 22_421_000 picoseconds.
-		Weight::from_parts(21_348_269, 0)
+		// Minimum execution time: 21_069_000 picoseconds.
+		Weight::from_parts(19_465_388, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
-			// Standard Error: 907
-			.saturating_add(Weight::from_parts(33_289, 0).saturating_mul(m.into()))
-			// Standard Error: 4_480
-			.saturating_add(Weight::from_parts(237_205, 0).saturating_mul(p.into()))
+			// Standard Error: 618
+			.saturating_add(Weight::from_parts(34_162, 0).saturating_mul(m.into()))
+			// Standard Error: 3_056
+			.saturating_add(Weight::from_parts(253_129, 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: 31_490_000 picoseconds.
-		Weight::from_parts(32_598_000, 0)
+		// Minimum execution time: 29_474_000 picoseconds.
+		Weight::from_parts(28_613_906, 0)
 			.saturating_add(Weight::from_parts(0, 3619))
-			// Standard Error: 823
-			.saturating_add(Weight::from_parts(5_280, 0).saturating_mul(b.into()))
-			// Standard Error: 8_540
-			.saturating_add(Weight::from_parts(53_182, 0).saturating_mul(m.into()))
-			// Standard Error: 42_426
-			.saturating_add(Weight::from_parts(217_340, 0).saturating_mul(p.into()))
+			// Standard Error: 171
+			.saturating_add(Weight::from_parts(2_340, 0).saturating_mul(b.into()))
+			// Standard Error: 1_809
+			.saturating_add(Weight::from_parts(9_999, 0).saturating_mul(m.into()))
+			// Standard Error: 8_928
+			.saturating_add(Weight::from_parts(464_289, 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: 31_103_000 picoseconds.
-		Weight::from_parts(40_131_154, 0)
+		// Minimum execution time: 22_965_000 picoseconds.
+		Weight::from_parts(21_434_415, 0)
 			.saturating_add(Weight::from_parts(0, 3611))
-			// Standard Error: 4_186
-			.saturating_add(Weight::from_parts(150_872, 0).saturating_mul(m.into()))
-			// Standard Error: 20_672
-			.saturating_add(Weight::from_parts(655_804, 0).saturating_mul(p.into()))
+			// Standard Error: 630
+			.saturating_add(Weight::from_parts(33_742, 0).saturating_mul(m.into()))
+			// Standard Error: 3_114
+			.saturating_add(Weight::from_parts(272_760, 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: 42_637_000 picoseconds.
-		Weight::from_parts(66_089_153, 0)
+		// Minimum execution time: 31_368_000 picoseconds.
+		Weight::from_parts(31_819_676, 0)
 			.saturating_add(Weight::from_parts(0, 3639))
-			// Standard Error: 642
-			.saturating_add(Weight::from_parts(1_424, 0).saturating_mul(b.into()))
-			// Standard Error: 6_788
-			.saturating_add(Weight::from_parts(93_756, 0).saturating_mul(m.into()))
-			// Standard Error: 33_484
-			.saturating_add(Weight::from_parts(634_740, 0).saturating_mul(p.into()))
+			// Standard Error: 110
+			.saturating_add(Weight::from_parts(1_877, 0).saturating_mul(b.into()))
+			// Standard Error: 1_164
+			.saturating_add(Weight::from_parts(14_368, 0).saturating_mul(m.into()))
+			// Standard Error: 5_743
+			.saturating_add(Weight::from_parts(424_016, 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,13 +290,50 @@ 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: 19_493_000 picoseconds.
-		Weight::from_parts(21_834_980, 0)
+		// Minimum execution time: 11_103_000 picoseconds.
+		Weight::from_parts(12_114_488, 0)
 			.saturating_add(Weight::from_parts(0, 1674))
-			// Standard Error: 10_190
-			.saturating_add(Weight::from_parts(512_055, 0).saturating_mul(p.into()))
+			// Standard Error: 1_803
+			.saturating_add(Weight::from_parts(159_621, 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()))
 	}
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::CostOf` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::CostOf` (`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::Voting` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `d` is `[0, 1]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn kill(d: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1243 + p * (55 ±0)`
+		//  Estimated: `4710 + d * (5 ±1) + p * (55 ±0)`
+		// Minimum execution time: 16_278_000 picoseconds.
+		Weight::from_parts(18_003_847, 0)
+			.saturating_add(Weight::from_parts(0, 4710))
+			// Standard Error: 2_717
+			.saturating_add(Weight::from_parts(273_595, 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, 5).saturating_mul(d.into()))
+			.saturating_add(Weight::from_parts(0, 55).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::CostOf` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::CostOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn release_proposal_cost() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `676`
+		//  Estimated: `4141`
+		// Minimum execution time: 10_939_000 picoseconds.
+		Weight::from_parts(11_418_000, 0)
+			.saturating_add(Weight::from_parts(0, 4141))
+			.saturating_add(T::DbWeight::get().reads(2))
+	}
 }
diff --git a/runtime/g1/src/weights/pallet_distance.rs b/runtime/g1/src/weights/pallet_distance.rs
index 2f7255ded265ff06f8ba4a5a9e02e9b34c08c06d..64cdbf8a6319caedfa5100a83d4793155abe07f6 100644
--- a/runtime/g1/src/weights/pallet_distance.rs
+++ b/runtime/g1/src/weights/pallet_distance.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_distance`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -57,20 +57,20 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// 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::CurrentPeriodIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPeriodIndex` (`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`)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(89), added: 2564, mode: `MaxEncodedLen`)
 	fn request_distance_evaluation() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `1134`
 		//  Estimated: `4599`
-		// Minimum execution time: 66_367_000 picoseconds.
-		Weight::from_parts(67_862_000, 0)
+		// Minimum execution time: 63_647_000 picoseconds.
+		Weight::from_parts(66_503_000, 0)
 			.saturating_add(Weight::from_parts(0, 4599))
 			.saturating_add(T::DbWeight::get().reads(9))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -85,52 +85,48 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// 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::CurrentPeriodIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPeriodIndex` (`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`)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(89), added: 2564, mode: `MaxEncodedLen`)
 	fn request_distance_evaluation_for() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `1163`
 		//  Estimated: `7103`
-		// Minimum execution time: 69_363_000 picoseconds.
-		Weight::from_parts(70_709_000, 0)
+		// Minimum execution time: 66_742_000 picoseconds.
+		Weight::from_parts(70_145_000, 0)
 			.saturating_add(Weight::from_parts(0, 7103))
 			.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::CurrentPeriodIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPeriodIndex` (`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:  `424 + i * (10 ±0)`
-		//  Estimated: `1909 + i * (10 ±0)`
-		// Minimum execution time: 18_535_000 picoseconds.
-		Weight::from_parts(20_754_753, 0)
-			.saturating_add(Weight::from_parts(0, 1909))
-			// Standard Error: 269
-			.saturating_add(Weight::from_parts(105_767, 0).saturating_mul(i.into()))
-			.saturating_add(T::DbWeight::get().reads(6))
-			.saturating_add(T::DbWeight::get().writes(3))
+		//  Measured:  `303 + i * (10 ±0)`
+		//  Estimated: `1788 + i * (10 ±0)`
+		// Minimum execution time: 12_663_000 picoseconds.
+		Weight::from_parts(15_006_914, 0)
+			.saturating_add(Weight::from_parts(0, 1788))
+			// Standard Error: 108
+			.saturating_add(Weight::from_parts(113_787, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(2))
 			.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::CurrentPeriodIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPeriodIndex` (`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]`.
@@ -138,11 +134,11 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `162 + i * (10 ±0)`
 		//  Estimated: `1647 + i * (10 ±0)`
-		// Minimum execution time: 7_853_000 picoseconds.
-		Weight::from_parts(8_734_247, 0)
+		// Minimum execution time: 7_669_000 picoseconds.
+		Weight::from_parts(9_638_272, 0)
 			.saturating_add(Weight::from_parts(0, 1647))
-			// Standard Error: 430
-			.saturating_add(Weight::from_parts(108_056, 0).saturating_mul(i.into()))
+			// Standard Error: 91
+			.saturating_add(Weight::from_parts(102_085, 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,8 +153,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `539`
 		//  Estimated: `6479`
-		// Minimum execution time: 28_809_000 picoseconds.
-		Weight::from_parts(30_128_000, 0)
+		// Minimum execution time: 26_972_000 picoseconds.
+		Weight::from_parts(28_173_000, 0)
 			.saturating_add(Weight::from_parts(0, 6479))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -167,8 +163,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 106_000 picoseconds.
-		Weight::from_parts(125_000, 0)
+		// Minimum execution time: 93_000 picoseconds.
+		Weight::from_parts(123_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `System::ParentHash` (r:1 w:0)
@@ -180,7 +176,7 @@ impl<T: frame_system::Config> pallet_distance::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`)
 	/// Storage: `Balances::Holds` (r:1 w:1)
-	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(89), added: 2564, 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,8 +189,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `951`
 		//  Estimated: `6891`
-		// Minimum execution time: 63_066_000 picoseconds.
-		Weight::from_parts(64_306_000, 0)
+		// Minimum execution time: 60_114_000 picoseconds.
+		Weight::from_parts(61_534_000, 0)
 			.saturating_add(Weight::from_parts(0, 6891))
 			.saturating_add(T::DbWeight::get().reads(9))
 			.saturating_add(T::DbWeight::get().writes(8))
@@ -206,7 +202,7 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// 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`)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(89), added: 2564, mode: `MaxEncodedLen`)
 	/// Storage: `System::Account` (r:2 w:2)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	/// Storage: `Distance::EvaluationBlock` (r:0 w:1)
@@ -215,8 +211,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `475`
 		//  Estimated: `6126`
-		// Minimum execution time: 43_002_000 picoseconds.
-		Weight::from_parts(44_467_000, 0)
+		// Minimum execution time: 42_364_000 picoseconds.
+		Weight::from_parts(43_874_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(6))
@@ -231,8 +227,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `136`
 		//  Estimated: `1621`
-		// Minimum execution time: 4_529_000 picoseconds.
-		Weight::from_parts(4_765_000, 0)
+		// Minimum execution time: 4_453_000 picoseconds.
+		Weight::from_parts(4_799_000, 0)
 			.saturating_add(Weight::from_parts(0, 1621))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -243,8 +239,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `157`
 		//  Estimated: `1642`
-		// Minimum execution time: 3_921_000 picoseconds.
-		Weight::from_parts(4_354_000, 0)
+		// Minimum execution time: 4_346_000 picoseconds.
+		Weight::from_parts(4_531_000, 0)
 			.saturating_add(Weight::from_parts(0, 1642))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/g1/src/weights/pallet_duniter_account.rs b/runtime/g1/src/weights/pallet_duniter_account.rs
index 684741b1641e2e82603889a7f467df7e24026940..63e8003bb279d25d5b09a68536f13572e1218bec 100644
--- a/runtime/g1/src/weights/pallet_duniter_account.rs
+++ b/runtime/g1/src/weights/pallet_duniter_account.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_duniter_account`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 4_379_000 picoseconds.
-		Weight::from_parts(4_591_000, 0)
+		// Minimum execution time: 4_566_000 picoseconds.
+		Weight::from_parts(4_728_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/g1/src/weights/pallet_identity.rs b/runtime/g1/src/weights/pallet_identity.rs
index 2082d2e1fb36f0071c70d7b18a135416f88a782a..29c327f5248e745ac5b35b4fe86af56b37a384ba 100644
--- a/runtime/g1/src/weights/pallet_identity.rs
+++ b/runtime/g1/src/weights/pallet_identity.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_identity`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -71,8 +71,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1042`
 		//  Estimated: `6982`
-		// Minimum execution time: 69_290_000 picoseconds.
-		Weight::from_parts(71_767_000, 0)
+		// Minimum execution time: 68_835_000 picoseconds.
+		Weight::from_parts(70_962_000, 0)
 			.saturating_add(Weight::from_parts(0, 6982))
 			.saturating_add(T::DbWeight::get().reads(12))
 			.saturating_add(T::DbWeight::get().writes(12))
@@ -89,8 +89,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `784`
 		//  Estimated: `6724`
-		// Minimum execution time: 34_069_000 picoseconds.
-		Weight::from_parts(35_989_000, 0)
+		// Minimum execution time: 33_736_000 picoseconds.
+		Weight::from_parts(34_847_000, 0)
 			.saturating_add(Weight::from_parts(0, 6724))
 			.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:  `960`
-		//  Estimated: `6900`
-		// Minimum execution time: 83_219_000 picoseconds.
-		Weight::from_parts(85_944_000, 0)
-			.saturating_add(Weight::from_parts(0, 6900))
+		//  Measured:  `970`
+		//  Estimated: `6910`
+		// Minimum execution time: 82_861_000 picoseconds.
+		Weight::from_parts(84_989_000, 0)
+			.saturating_add(Weight::from_parts(0, 6910))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(5))
 	}
@@ -127,21 +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:  `697`
-		//  Estimated: `6637`
-		// Minimum execution time: 70_321_000 picoseconds.
-		Weight::from_parts(72_274_000, 0)
-			.saturating_add(Weight::from_parts(0, 6637))
-			.saturating_add(T::DbWeight::get().reads(5))
-			.saturating_add(T::DbWeight::get().writes(5))
-	}
-	fn revoke_identity_legacy() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `697`
-		//  Estimated: `6637`
-		// Minimum execution time: 70_321_000 picoseconds.
-		Weight::from_parts(72_274_000, 0)
-			.saturating_add(Weight::from_parts(0, 6637))
+		//  Measured:  `673`
+		//  Estimated: `6613`
+		// Minimum execution time: 67_134_000 picoseconds.
+		Weight::from_parts(68_928_000, 0)
+			.saturating_add(Weight::from_parts(0, 6613))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(5))
 	}
@@ -152,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: 4_127_000 picoseconds.
-		Weight::from_parts(4_228_000, 0)
+		// Minimum execution time: 4_306_000 picoseconds.
+		Weight::from_parts(4_458_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_142
-			.saturating_add(Weight::from_parts(1_217_695, 0).saturating_mul(i.into()))
+			// Standard Error: 1_181
+			.saturating_add(Weight::from_parts(1_236_346, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes(1))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
@@ -166,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: 7_395_000 picoseconds.
-		Weight::from_parts(7_763_000, 0)
+		// Minimum execution time: 7_251_000 picoseconds.
+		Weight::from_parts(7_996_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -180,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: 54_263_000 picoseconds.
-		Weight::from_parts(55_473_000, 0)
-			.saturating_add(Weight::from_parts(0, 3868))
+		//  Measured:  `379`
+		//  Estimated: `3844`
+		// Minimum execution time: 51_827_000 picoseconds.
+		Weight::from_parts(53_174_000, 0)
+			.saturating_add(Weight::from_parts(0, 3844))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -192,8 +182,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 103_000 picoseconds.
-		Weight::from_parts(133_000, 0)
+		// Minimum execution time: 92_000 picoseconds.
+		Weight::from_parts(122_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Identity::Identities` (r:1 w:0)
@@ -202,8 +192,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `327`
 		//  Estimated: `3792`
-		// Minimum execution time: 5_090_000 picoseconds.
-		Weight::from_parts(5_457_000, 0)
+		// Minimum execution time: 4_974_000 picoseconds.
+		Weight::from_parts(5_310_000, 0)
 			.saturating_add(Weight::from_parts(0, 3792))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -239,11 +229,11 @@ 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:  `1873`
-		//  Estimated: `15238`
-		// Minimum execution time: 106_264_000 picoseconds.
-		Weight::from_parts(110_081_000, 0)
-			.saturating_add(Weight::from_parts(0, 15238))
+		//  Measured:  `1840`
+		//  Estimated: `15205`
+		// Minimum execution time: 104_830_000 picoseconds.
+		Weight::from_parts(107_034_000, 0)
+			.saturating_add(Weight::from_parts(0, 15205))
 			.saturating_add(T::DbWeight::get().reads(18))
 			.saturating_add(T::DbWeight::get().writes(21))
 	}
@@ -253,8 +243,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `327`
 		//  Estimated: `3792`
-		// Minimum execution time: 5_001_000 picoseconds.
-		Weight::from_parts(5_215_000, 0)
+		// Minimum execution time: 4_842_000 picoseconds.
+		Weight::from_parts(5_288_000, 0)
 			.saturating_add(Weight::from_parts(0, 3792))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -284,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:6 w:6)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:5 w:5)
 	/// 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`)
@@ -294,13 +284,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:  `2322`
-		//  Estimated: `18162`
-		// Minimum execution time: 155_305_000 picoseconds.
-		Weight::from_parts(159_441_000, 0)
-			.saturating_add(Weight::from_parts(0, 18162))
-			.saturating_add(T::DbWeight::get().reads(24))
-			.saturating_add(T::DbWeight::get().writes(30))
+		//  Measured:  `2289`
+		//  Estimated: `15654`
+		// Minimum execution time: 142_003_000 picoseconds.
+		Weight::from_parts(149_704_000, 0)
+			.saturating_add(Weight::from_parts(0, 15654))
+			.saturating_add(T::DbWeight::get().reads(23))
+			.saturating_add(T::DbWeight::get().writes(29))
 	}
 	/// Storage: `Membership::Membership` (r:1 w:1)
 	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -330,7 +320,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:6 w:6)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:5 w:5)
 	/// 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`)
@@ -338,13 +328,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:  `2315`
-		//  Estimated: `18155`
-		// Minimum execution time: 148_349_000 picoseconds.
-		Weight::from_parts(154_660_000, 0)
-			.saturating_add(Weight::from_parts(0, 18155))
-			.saturating_add(T::DbWeight::get().reads(25))
-			.saturating_add(T::DbWeight::get().writes(28))
+		//  Measured:  `2282`
+		//  Estimated: `15647`
+		// Minimum execution time: 132_078_000 picoseconds.
+		Weight::from_parts(137_709_000, 0)
+			.saturating_add(Weight::from_parts(0, 15647))
+			.saturating_add(T::DbWeight::get().reads(24))
+			.saturating_add(T::DbWeight::get().writes(27))
 	}
 	/// Storage: `Identity::Identities` (r:1 w:1)
 	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -354,8 +344,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `407`
 		//  Estimated: `6347`
-		// Minimum execution time: 16_829_000 picoseconds.
-		Weight::from_parts(17_692_000, 0)
+		// Minimum execution time: 15_678_000 picoseconds.
+		Weight::from_parts(16_855_000, 0)
 			.saturating_add(Weight::from_parts(0, 6347))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -366,8 +356,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `108`
 		//  Estimated: `3573`
-		// Minimum execution time: 2_788_000 picoseconds.
-		Weight::from_parts(2_989_000, 0)
+		// Minimum execution time: 2_673_000 picoseconds.
+		Weight::from_parts(2_986_000, 0)
 			.saturating_add(Weight::from_parts(0, 3573))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -379,8 +369,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `325`
 		//  Estimated: `3790`
-		// Minimum execution time: 7_482_000 picoseconds.
-		Weight::from_parts(7_872_000, 0)
+		// Minimum execution time: 7_520_000 picoseconds.
+		Weight::from_parts(7_977_000, 0)
 			.saturating_add(Weight::from_parts(0, 3790))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -405,10 +395,30 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `914`
 		//  Estimated: `4379`
-		// Minimum execution time: 37_535_000 picoseconds.
-		Weight::from_parts(39_541_000, 0)
+		// Minimum execution time: 37_327_000 picoseconds.
+		Weight::from_parts(38_438_000, 0)
 			.saturating_add(Weight::from_parts(0, 4379))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(7))
 	}
+	/// Storage: `Identity::IdentitiesNames` (r:1 w:0)
+	/// Proof: `Identity::IdentitiesNames` (`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: `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_legacy() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `823`
+		//  Estimated: `6763`
+		// Minimum execution time: 132_003_000 picoseconds.
+		Weight::from_parts(136_197_000, 0)
+			.saturating_add(Weight::from_parts(0, 6763))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
 }
diff --git a/runtime/g1/src/weights/pallet_im_online.rs b/runtime/g1/src/weights/pallet_im_online.rs
index 6e26f2937cafd0e3ad3ecd42dd47506aac656f39..7aa6706545209111803d72866bfbf6b81646bee6 100644
--- a/runtime/g1/src/weights/pallet_im_online.rs
+++ b/runtime/g1/src/weights/pallet_im_online.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_im_online`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -62,9 +62,11 @@ impl<T: frame_system::Config> pallet_im_online::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `525 + k * (32 ±0)`
 		//  Estimated: `33487 + k * (1761 ±0)`
-		// Minimum execution time: 77_475_000 picoseconds.
-		Weight::from_parts(139_303_234, 0)
+		// Minimum execution time: 52_522_000 picoseconds.
+		Weight::from_parts(63_306_668, 0)
 			.saturating_add(Weight::from_parts(0, 33487))
+			// Standard Error: 496
+			.saturating_add(Weight::from_parts(41_677, 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/g1/src/weights/pallet_membership.rs b/runtime/g1/src/weights/pallet_membership.rs
index 5bbcf3258e63f61ba44399fbd988530498b55783..60318f948442d09e388ec56078e934506ef4d4f0 100644
--- a/runtime/g1/src/weights/pallet_membership.rs
+++ b/runtime/g1/src/weights/pallet_membership.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_membership`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 108_000 picoseconds.
-		Weight::from_parts(126_000, 0)
+		// Minimum execution time: 90_000 picoseconds.
+		Weight::from_parts(116_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Membership::MembershipsExpireOn` (r:2 w:1)
@@ -86,13 +86,13 @@ 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:  `139 + i * (960 ±0)`
-		//  Estimated: `14995 + i * (2695 ±1)`
-		// Minimum execution time: 5_343_000 picoseconds.
-		Weight::from_parts(14_213_809, 0)
-			.saturating_add(Weight::from_parts(0, 14995))
-			// Standard Error: 603_398
-			.saturating_add(Weight::from_parts(75_716_155, 0).saturating_mul(i.into()))
+		//  Measured:  `139 + i * (944 ±0)`
+		//  Estimated: `14961 + i * (2695 ±1)`
+		// Minimum execution time: 5_472_000 picoseconds.
+		Weight::from_parts(13_995_407, 0)
+			.saturating_add(Weight::from_parts(0, 14961))
+			// Standard Error: 579_690
+			.saturating_add(Weight::from_parts(74_572_449, 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))
diff --git a/runtime/g1/src/weights/pallet_multisig.rs b/runtime/g1/src/weights/pallet_multisig.rs
index 29f0891b9db73c26f8dbb749961e30a585f10a9a..770d99d9c3958bf3044fe087991b07c0ef879ac4 100644
--- a/runtime/g1/src/weights/pallet_multisig.rs
+++ b/runtime/g1/src/weights/pallet_multisig.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_multisig`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 5_207_000 picoseconds.
-		Weight::from_parts(5_671_298, 0)
+		// Minimum execution time: 5_837_000 picoseconds.
+		Weight::from_parts(6_128_523, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 2
-			.saturating_add(Weight::from_parts(321, 0).saturating_mul(z.into()))
+			.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: 28_382_000 picoseconds.
-		Weight::from_parts(28_468_579, 0)
+		// Minimum execution time: 26_711_000 picoseconds.
+		Weight::from_parts(26_026_874, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 10_030
-			.saturating_add(Weight::from_parts(70_271, 0).saturating_mul(s.into()))
-			// Standard Error: 8
-			.saturating_add(Weight::from_parts(1_052, 0).saturating_mul(z.into()))
+			// Standard Error: 5_830
+			.saturating_add(Weight::from_parts(178_952, 0).saturating_mul(s.into()))
+			// Standard Error: 5
+			.saturating_add(Weight::from_parts(1_169, 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: 15_563_000 picoseconds.
-		Weight::from_parts(15_235_616, 0)
+		// Minimum execution time: 15_581_000 picoseconds.
+		Weight::from_parts(15_333_720, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 7_326
-			.saturating_add(Weight::from_parts(128_782, 0).saturating_mul(s.into()))
-			// Standard Error: 5
-			.saturating_add(Weight::from_parts(1_080, 0).saturating_mul(z.into()))
+			// Standard Error: 3_745
+			.saturating_add(Weight::from_parts(102_346, 0).saturating_mul(s.into()))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(1_166, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -104,58 +104,67 @@ 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: 29_858_000 picoseconds.
-		Weight::from_parts(30_559_431, 0)
+		// Minimum execution time: 28_305_000 picoseconds.
+		Weight::from_parts(27_996_672, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 9_588
-			.saturating_add(Weight::from_parts(102_725, 0).saturating_mul(s.into()))
-			// Standard Error: 8
-			.saturating_add(Weight::from_parts(1_083, 0).saturating_mul(z.into()))
+			// Standard Error: 6_158
+			.saturating_add(Weight::from_parts(202_739, 0).saturating_mul(s.into()))
+			// Standard Error: 5
+			.saturating_add(Weight::from_parts(1_195, 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 {
+	/// The range of component `z` is `[0, 10000]`.
+	fn approve_as_multi_create(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `130 + s * (5 ±0)`
+		//  Measured:  `125 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 25_071_000 picoseconds.
-		Weight::from_parts(26_371_672, 0)
+		// Minimum execution time: 23_926_000 picoseconds.
+		Weight::from_parts(25_141_266, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 9_270
-			.saturating_add(Weight::from_parts(229_206, 0).saturating_mul(s.into()))
+			// Standard Error: 5_251
+			.saturating_add(Weight::from_parts(153_725, 0).saturating_mul(s.into()))
+			// Standard Error: 4
+			.saturating_add(Weight::from_parts(10, 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 `[2, 10]`.
-	fn approve_as_multi_approve(s: u32, ) -> Weight {
+	/// The range of component `z` is `[0, 10000]`.
+	fn approve_as_multi_approve(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `240`
 		//  Estimated: `3922`
-		// Minimum execution time: 13_391_000 picoseconds.
-		Weight::from_parts(14_298_679, 0)
+		// Minimum execution time: 13_680_000 picoseconds.
+		Weight::from_parts(14_213_245, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_609
-			.saturating_add(Weight::from_parts(164_451, 0).saturating_mul(s.into()))
+			// Standard Error: 3_037
+			.saturating_add(Weight::from_parts(108_757, 0).saturating_mul(s.into()))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(15, 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 `[2, 10]`.
-	fn cancel_as_multi(s: u32, ) -> Weight {
+	/// The range of component `z` is `[0, 10000]`.
+	fn cancel_as_multi(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `328 + s * (5 ±0)`
+		//  Measured:  `323 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 26_368_000 picoseconds.
-		Weight::from_parts(27_511_820, 0)
+		// Minimum execution time: 24_772_000 picoseconds.
+		Weight::from_parts(25_953_083, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 10_806
-			.saturating_add(Weight::from_parts(199_066, 0).saturating_mul(s.into()))
+			// Standard Error: 5_132
+			.saturating_add(Weight::from_parts(144_988, 0).saturating_mul(s.into()))
+			// Standard Error: 4
+			.saturating_add(Weight::from_parts(7, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/g1/src/weights/pallet_oneshot_account.rs b/runtime/g1/src/weights/pallet_oneshot_account.rs
index 7df51a905595029fb871bb797a1f4577d55a3a40..2226770731bb53a35535ff5057adc592414ffc73 100644
--- a/runtime/g1/src/weights/pallet_oneshot_account.rs
+++ b/runtime/g1/src/weights/pallet_oneshot_account.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_oneshot_account`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 21_415_000 picoseconds.
-		Weight::from_parts(22_749_000, 0)
+		// Minimum execution time: 21_769_000 picoseconds.
+		Weight::from_parts(22_359_000, 0)
 			.saturating_add(Weight::from_parts(0, 3507))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -67,11 +67,11 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 	/// 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: 30_704_000 picoseconds.
-		Weight::from_parts(31_569_000, 0)
-			.saturating_add(Weight::from_parts(0, 3706))
+		//  Measured:  `217`
+		//  Estimated: `3682`
+		// Minimum execution time: 28_072_000 picoseconds.
+		Weight::from_parts(29_027_000, 0)
+			.saturating_add(Weight::from_parts(0, 3682))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -83,10 +83,10 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 	/// 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`
+		//  Measured:  `277`
 		//  Estimated: `6126`
-		// Minimum execution time: 44_455_000 picoseconds.
-		Weight::from_parts(46_042_000, 0)
+		// Minimum execution time: 42_039_000 picoseconds.
+		Weight::from_parts(43_749_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
index 95e75986b4d8e4e9e1000e1ccd5a5a60d6a852c7..683d20f0c4ca3b8dba4a6daa2ad323d262b0c0fc 100644
--- a/runtime/g1/src/weights/pallet_preimage.rs
+++ b/runtime/g1/src/weights/pallet_preimage.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_preimage`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -56,13 +56,13 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 4194304]`.
 	fn note_preimage(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `42`
+		//  Measured:  `4`
 		//  Estimated: `3548`
-		// Minimum execution time: 12_303_000 picoseconds.
-		Weight::from_parts(12_457_000, 0)
+		// Minimum execution time: 11_934_000 picoseconds.
+		Weight::from_parts(12_098_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_273, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_280, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -75,13 +75,13 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 4194304]`.
 	fn note_requested_preimage(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `106`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 15_071_000 picoseconds.
-		Weight::from_parts(15_519_000, 0)
+		// Minimum execution time: 13_837_000 picoseconds.
+		Weight::from_parts(14_173_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_272, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_282, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -94,13 +94,13 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 4194304]`.
 	fn note_no_deposit_preimage(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `106`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 13_528_000 picoseconds.
-		Weight::from_parts(13_985_000, 0)
+		// Minimum execution time: 12_906_000 picoseconds.
+		Weight::from_parts(13_150_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_361, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_362, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -112,10 +112,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `134`
 		//  Estimated: `3548`
-		// Minimum execution time: 22_001_000 picoseconds.
-		Weight::from_parts(23_150_000, 0)
+		// Minimum execution time: 20_742_000 picoseconds.
+		Weight::from_parts(22_521_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -128,10 +128,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 22_414_000 picoseconds.
-		Weight::from_parts(23_924_000, 0)
+		// Minimum execution time: 21_144_000 picoseconds.
+		Weight::from_parts(22_961_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -142,10 +142,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `134`
 		//  Estimated: `3548`
-		// Minimum execution time: 19_167_000 picoseconds.
-		Weight::from_parts(21_653_000, 0)
+		// Minimum execution time: 19_151_000 picoseconds.
+		Weight::from_parts(20_538_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -156,10 +156,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 13_154_000 picoseconds.
-		Weight::from_parts(14_430_000, 0)
+		// Minimum execution time: 12_449_000 picoseconds.
+		Weight::from_parts(13_839_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -170,10 +170,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `4`
 		//  Estimated: `3548`
-		// Minimum execution time: 10_654_000 picoseconds.
-		Weight::from_parts(11_253_000, 0)
+		// Minimum execution time: 10_963_000 picoseconds.
+		Weight::from_parts(11_511_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -184,10 +184,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 8_683_000 picoseconds.
-		Weight::from_parts(9_232_000, 0)
+		// Minimum execution time: 8_417_000 picoseconds.
+		Weight::from_parts(9_097_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -200,10 +200,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 20_719_000 picoseconds.
-		Weight::from_parts(21_970_000, 0)
+		// Minimum execution time: 19_567_000 picoseconds.
+		Weight::from_parts(21_147_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -214,10 +214,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 8_369_000 picoseconds.
-		Weight::from_parts(9_315_000, 0)
+		// Minimum execution time: 8_216_000 picoseconds.
+		Weight::from_parts(8_957_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -228,10 +228,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 8_645_000 picoseconds.
-		Weight::from_parts(9_376_000, 0)
+		// Minimum execution time: 8_466_000 picoseconds.
+		Weight::from_parts(9_147_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: 19_732_000 picoseconds.
-		Weight::from_parts(20_102_000, 0)
+		// Minimum execution time: 17_762_000 picoseconds.
+		Weight::from_parts(18_142_000, 0)
 			.saturating_add(Weight::from_parts(0, 990))
-			// Standard Error: 17_245
-			.saturating_add(Weight::from_parts(15_189_723, 0).saturating_mul(n.into()))
+			// Standard Error: 16_315
+			.saturating_add(Weight::from_parts(15_105_419, 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/g1/src/weights/pallet_provide_randomness.rs b/runtime/g1/src/weights/pallet_provide_randomness.rs
index 5633d340ba7e157bbc2d10df8c93b40ee74eeef9..66310c1263dfcaa03949bc86b44f1e74a57b1054 100644
--- a/runtime/g1/src/weights/pallet_provide_randomness.rs
+++ b/runtime/g1/src/weights/pallet_provide_randomness.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_provide_randomness`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 45_448_000 picoseconds.
-		Weight::from_parts(47_249_000, 0)
+		// Minimum execution time: 43_623_000 picoseconds.
+		Weight::from_parts(44_537_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: 20_179_000 picoseconds.
-		Weight::from_parts(18_090_233, 0)
+		// Minimum execution time: 18_311_000 picoseconds.
+		Weight::from_parts(17_634_870, 0)
 			.saturating_add(Weight::from_parts(0, 1827))
-			// Standard Error: 6_384
-			.saturating_add(Weight::from_parts(5_603_672, 0).saturating_mul(i.into()))
+			// Standard Error: 5_089
+			.saturating_add(Weight::from_parts(5_463_744, 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: 21_990_000 picoseconds.
-		Weight::from_parts(20_414_264, 0)
+		// Minimum execution time: 19_833_000 picoseconds.
+		Weight::from_parts(17_982_551, 0)
 			.saturating_add(Weight::from_parts(0, 3817))
-			// Standard Error: 8_103
-			.saturating_add(Weight::from_parts(5_955_607, 0).saturating_mul(i.into()))
+			// Standard Error: 6_929
+			.saturating_add(Weight::from_parts(5_846_559, 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
index 70b8132bd14c2ab23eab6d759f0f58b98fe15a90..73f3d250ec1f296f94a9b1b3fb67d2682b335f45 100644
--- a/runtime/g1/src/weights/pallet_proxy.rs
+++ b/runtime/g1/src/weights/pallet_proxy.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_proxy`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 13_278_000 picoseconds.
-		Weight::from_parts(14_551_586, 0)
+		// Minimum execution time: 12_619_000 picoseconds.
+		Weight::from_parts(13_405_625, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_353
-			.saturating_add(Weight::from_parts(33_928, 0).saturating_mul(p.into()))
+			// Standard Error: 1_196
+			.saturating_add(Weight::from_parts(31_079, 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: 32_917_000 picoseconds.
-		Weight::from_parts(32_491_303, 0)
+		// Minimum execution time: 32_951_000 picoseconds.
+		Weight::from_parts(33_280_454, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 2_225
-			.saturating_add(Weight::from_parts(152_855, 0).saturating_mul(a.into()))
-			// Standard Error: 2_299
-			.saturating_add(Weight::from_parts(49_551, 0).saturating_mul(p.into()))
+			// Standard Error: 2_195
+			.saturating_add(Weight::from_parts(133_220, 0).saturating_mul(a.into()))
+			// Standard Error: 2_268
+			.saturating_add(Weight::from_parts(46_166, 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: 21_767_000 picoseconds.
-		Weight::from_parts(22_790_976, 0)
+		// Minimum execution time: 20_612_000 picoseconds.
+		Weight::from_parts(21_965_233, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_617
-			.saturating_add(Weight::from_parts(152_517, 0).saturating_mul(a.into()))
-			// Standard Error: 1_671
-			.saturating_add(Weight::from_parts(13_509, 0).saturating_mul(p.into()))
+			// Standard Error: 10_294
+			.saturating_add(Weight::from_parts(111_680, 0).saturating_mul(a.into()))
+			// Standard Error: 10_636
+			.saturating_add(Weight::from_parts(34_557, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -109,17 +109,15 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 	/// 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 {
+	fn reject_announcement(a: u32, _p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `322 + a * (68 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 22_068_000 picoseconds.
-		Weight::from_parts(22_657_917, 0)
+		// Minimum execution time: 20_738_000 picoseconds.
+		Weight::from_parts(21_343_653, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_545
-			.saturating_add(Weight::from_parts(151_153, 0).saturating_mul(a.into()))
-			// Standard Error: 1_596
-			.saturating_add(Weight::from_parts(11_940, 0).saturating_mul(p.into()))
+			// Standard Error: 5_773
+			.saturating_add(Weight::from_parts(163_437, 0).saturating_mul(a.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -135,13 +133,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: 29_803_000 picoseconds.
-		Weight::from_parts(29_938_988, 0)
+		// Minimum execution time: 27_829_000 picoseconds.
+		Weight::from_parts(29_746_490, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_956
-			.saturating_add(Weight::from_parts(136_595, 0).saturating_mul(a.into()))
-			// Standard Error: 2_021
-			.saturating_add(Weight::from_parts(44_909, 0).saturating_mul(p.into()))
+			// Standard Error: 2_465
+			.saturating_add(Weight::from_parts(151_653, 0).saturating_mul(a.into()))
+			// Standard Error: 2_547
+			.saturating_add(Weight::from_parts(53_753, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -152,11 +150,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: 21_109_000 picoseconds.
-		Weight::from_parts(21_929_901, 0)
+		// Minimum execution time: 19_743_000 picoseconds.
+		Weight::from_parts(20_636_615, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_499
-			.saturating_add(Weight::from_parts(47_734, 0).saturating_mul(p.into()))
+			// Standard Error: 1_469
+			.saturating_add(Weight::from_parts(49_341, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -167,11 +165,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: 21_181_000 picoseconds.
-		Weight::from_parts(22_163_453, 0)
+		// Minimum execution time: 19_863_000 picoseconds.
+		Weight::from_parts(20_826_602, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_524
-			.saturating_add(Weight::from_parts(48_034, 0).saturating_mul(p.into()))
+			// Standard Error: 1_807
+			.saturating_add(Weight::from_parts(48_029, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -182,11 +180,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: 19_324_000 picoseconds.
-		Weight::from_parts(20_412_713, 0)
+		// Minimum execution time: 18_050_000 picoseconds.
+		Weight::from_parts(18_924_900, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_598
-			.saturating_add(Weight::from_parts(31_143, 0).saturating_mul(p.into()))
+			// Standard Error: 1_457
+			.saturating_add(Weight::from_parts(30_306, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -197,11 +195,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `177`
 		//  Estimated: `4698`
-		// Minimum execution time: 22_209_000 picoseconds.
-		Weight::from_parts(23_514_172, 0)
+		// Minimum execution time: 20_584_000 picoseconds.
+		Weight::from_parts(21_970_197, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_469
-			.saturating_add(Weight::from_parts(8_154, 0).saturating_mul(p.into()))
+			// Standard Error: 1_261
+			.saturating_add(Weight::from_parts(3_985, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -212,11 +210,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: 19_952_000 picoseconds.
-		Weight::from_parts(20_865_633, 0)
+		// Minimum execution time: 18_655_000 picoseconds.
+		Weight::from_parts(19_533_125, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_420
-			.saturating_add(Weight::from_parts(41_074, 0).saturating_mul(p.into()))
+			// Standard Error: 1_458
+			.saturating_add(Weight::from_parts(37_248, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/g1/src/weights/pallet_scheduler.rs b/runtime/g1/src/weights/pallet_scheduler.rs
index dc73216b882895b4ce058c8e78715d3b37595712..6de4afaefa67467a28608d882475e33886bc5ef8 100644
--- a/runtime/g1/src/weights/pallet_scheduler.rs
+++ b/runtime/g1/src/weights/pallet_scheduler.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_scheduler`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -51,10 +51,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `31`
 		//  Estimated: `1489`
-		// Minimum execution time: 3_154_000 picoseconds.
-		Weight::from_parts(3_460_000, 0)
+		// Minimum execution time: 3_429_000 picoseconds.
+		Weight::from_parts(3_619_000, 0)
 			.saturating_add(Weight::from_parts(0, 1489))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -64,13 +64,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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)`
+		//  Measured:  `78 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 2_995_000 picoseconds.
-		Weight::from_parts(6_906_805, 0)
+		// Minimum execution time: 3_508_000 picoseconds.
+		Weight::from_parts(6_901_234, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 2_029
-			.saturating_add(Weight::from_parts(282_197, 0).saturating_mul(s.into()))
+			// Standard Error: 1_783
+			.saturating_add(Weight::from_parts(267_420, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -78,8 +78,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_798_000 picoseconds.
-		Weight::from_parts(3_053_000, 0)
+		// Minimum execution time: 2_951_000 picoseconds.
+		Weight::from_parts(3_153_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Preimage::PreimageFor` (r:1 w:1)
@@ -91,13 +91,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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)`
+		//  Measured:  `141 + s * (1 ±0)`
 		//  Estimated: `4197809`
-		// Minimum execution time: 16_936_000 picoseconds.
-		Weight::from_parts(17_194_000, 0)
+		// Minimum execution time: 15_408_000 picoseconds.
+		Weight::from_parts(16_037_000, 0)
 			.saturating_add(Weight::from_parts(0, 4197809))
-			// Standard Error: 2
-			.saturating_add(Weight::from_parts(880, 0).saturating_mul(s.into()))
+			// Standard Error: 1
+			.saturating_add(Weight::from_parts(879, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -107,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: 4_224_000 picoseconds.
-		Weight::from_parts(4_460_000, 0)
+		// Minimum execution time: 4_265_000 picoseconds.
+		Weight::from_parts(4_545_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -116,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_800_000 picoseconds.
-		Weight::from_parts(2_953_000, 0)
+		// Minimum execution time: 2_866_000 picoseconds.
+		Weight::from_parts(3_032_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_917_000 picoseconds.
-		Weight::from_parts(2_038_000, 0)
+		// Minimum execution time: 2_113_000 picoseconds.
+		Weight::from_parts(2_243_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_828_000 picoseconds.
-		Weight::from_parts(1_965_000, 0)
+		// Minimum execution time: 2_115_000 picoseconds.
+		Weight::from_parts(2_232_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Scheduler::Agenda` (r:1 w:1)
@@ -141,13 +141,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 49]`.
 	fn schedule(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `77 + s * (177 ±0)`
+		//  Measured:  `78 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 8_663_000 picoseconds.
-		Weight::from_parts(12_276_740, 0)
+		// Minimum execution time: 9_082_000 picoseconds.
+		Weight::from_parts(12_431_988, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_839
-			.saturating_add(Weight::from_parts(297_841, 0).saturating_mul(s.into()))
+			// Standard Error: 1_755
+			.saturating_add(Weight::from_parts(281_391, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -160,13 +160,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[1, 50]`.
 	fn cancel(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `77 + s * (177 ±0)`
+		//  Measured:  `78 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 13_827_000 picoseconds.
-		Weight::from_parts(14_904_366, 0)
+		// Minimum execution time: 14_099_000 picoseconds.
+		Weight::from_parts(14_925_988, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_572
-			.saturating_add(Weight::from_parts(450_135, 0).saturating_mul(s.into()))
+			// Standard Error: 1_535
+			.saturating_add(Weight::from_parts(429_855, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -177,13 +177,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 49]`.
 	fn schedule_named(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `254 + s * (185 ±0)`
+		//  Measured:  `255 + s * (185 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 11_710_000 picoseconds.
-		Weight::from_parts(17_069_228, 0)
+		// Minimum execution time: 11_748_000 picoseconds.
+		Weight::from_parts(16_783_698, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 4_379
-			.saturating_add(Weight::from_parts(352_722, 0).saturating_mul(s.into()))
+			// Standard Error: 3_046
+			.saturating_add(Weight::from_parts(315_245, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -196,13 +196,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[1, 50]`.
 	fn cancel_named(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `280 + s * (185 ±0)`
+		//  Measured:  `281 + s * (185 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 16_274_000 picoseconds.
-		Weight::from_parts(18_248_439, 0)
+		// Minimum execution time: 16_437_000 picoseconds.
+		Weight::from_parts(18_011_685, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 12_899
-			.saturating_add(Weight::from_parts(548_525, 0).saturating_mul(s.into()))
+			// Standard Error: 2_243
+			.saturating_add(Weight::from_parts(465_901, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -213,13 +213,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[1, 50]`.
 	fn schedule_retry(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `117`
+		//  Measured:  `118`
 		//  Estimated: `13928`
-		// Minimum execution time: 8_411_000 picoseconds.
-		Weight::from_parts(9_177_642, 0)
+		// Minimum execution time: 8_491_000 picoseconds.
+		Weight::from_parts(9_135_930, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 545
-			.saturating_add(Weight::from_parts(26_161, 0).saturating_mul(s.into()))
+			// Standard Error: 514
+			.saturating_add(Weight::from_parts(28_599, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -229,10 +229,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `8928`
 		//  Estimated: `13928`
-		// Minimum execution time: 21_330_000 picoseconds.
-		Weight::from_parts(22_140_000, 0)
+		// Minimum execution time: 20_862_000 picoseconds.
+		Weight::from_parts(22_527_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -245,10 +245,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `9606`
 		//  Estimated: `13928`
-		// Minimum execution time: 28_811_000 picoseconds.
-		Weight::from_parts(29_806_000, 0)
+		// Minimum execution time: 26_992_000 picoseconds.
+		Weight::from_parts(28_117_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -259,10 +259,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `8940`
 		//  Estimated: `13928`
-		// Minimum execution time: 20_083_000 picoseconds.
-		Weight::from_parts(21_403_000, 0)
+		// Minimum execution time: 20_196_000 picoseconds.
+		Weight::from_parts(20_766_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -275,10 +275,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `9618`
 		//  Estimated: `13928`
-		// Minimum execution time: 27_768_000 picoseconds.
-		Weight::from_parts(28_469_000, 0)
+		// Minimum execution time: 25_942_000 picoseconds.
+		Weight::from_parts(26_868_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/g1/src/weights/pallet_session.rs b/runtime/g1/src/weights/pallet_session.rs
index 7806827407143458e388044592725611eb1c4caa..cb7acb07b57207eda428113ea09c6943f60fa32f 100644
--- a/runtime/g1/src/weights/pallet_session.rs
+++ b/runtime/g1/src/weights/pallet_session.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_session`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -55,8 +55,8 @@ impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `810`
 		//  Estimated: `11700`
-		// Minimum execution time: 49_328_000 picoseconds.
-		Weight::from_parts(51_361_000, 0)
+		// Minimum execution time: 28_109_000 picoseconds.
+		Weight::from_parts(29_471_000, 0)
 			.saturating_add(Weight::from_parts(0, 11700))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(5))
@@ -69,8 +69,8 @@ impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `477`
 		//  Estimated: `3942`
-		// Minimum execution time: 25_061_000 picoseconds.
-		Weight::from_parts(31_433_000, 0)
+		// Minimum execution time: 15_904_000 picoseconds.
+		Weight::from_parts(16_537_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
index 8e59d7364258d11087f6d1a73336f560e914c846..9ada0fee3e7e71644d50477c2593d75983163dda 100644
--- a/runtime/g1/src/weights/pallet_smith_members.rs
+++ b/runtime/g1/src/weights/pallet_smith_members.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_smith_members`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -59,11 +59,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:  `801`
-		//  Estimated: `6741`
-		// Minimum execution time: 32_845_000 picoseconds.
-		Weight::from_parts(33_640_000, 0)
-			.saturating_add(Weight::from_parts(0, 6741))
+		//  Measured:  `748`
+		//  Estimated: `6688`
+		// Minimum execution time: 31_350_000 picoseconds.
+		Weight::from_parts(32_770_000, 0)
+			.saturating_add(Weight::from_parts(0, 6688))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -75,8 +75,8 @@ impl<T: frame_system::Config> pallet_smith_members::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `566`
 		//  Estimated: `4031`
-		// Minimum execution time: 17_951_000 picoseconds.
-		Weight::from_parts(18_815_000, 0)
+		// Minimum execution time: 16_492_000 picoseconds.
+		Weight::from_parts(16_890_000, 0)
 			.saturating_add(Weight::from_parts(0, 4031))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -91,11 +91,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 certify_smith() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `611`
-		//  Estimated: `6551`
-		// Minimum execution time: 27_487_000 picoseconds.
-		Weight::from_parts(28_750_000, 0)
-			.saturating_add(Weight::from_parts(0, 6551))
+		//  Measured:  `591`
+		//  Estimated: `6531`
+		// Minimum execution time: 25_103_000 picoseconds.
+		Weight::from_parts(26_055_000, 0)
+			.saturating_add(Weight::from_parts(0, 6531))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -117,11 +117,11 @@ 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:  `1204`
-		//  Estimated: `14569`
-		// Minimum execution time: 68_866_000 picoseconds.
-		Weight::from_parts(72_461_000, 0)
-			.saturating_add(Weight::from_parts(0, 14569))
+		//  Measured:  `1171`
+		//  Estimated: `14536`
+		// Minimum execution time: 67_014_000 picoseconds.
+		Weight::from_parts(69_066_000, 0)
+			.saturating_add(Weight::from_parts(0, 14536))
 			.saturating_add(T::DbWeight::get().reads(11))
 			.saturating_add(T::DbWeight::get().writes(15))
 	}
@@ -129,11 +129,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 on_removed_wot_member_empty() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `253`
-		//  Estimated: `3718`
-		// Minimum execution time: 3_846_000 picoseconds.
-		Weight::from_parts(4_128_000, 0)
-			.saturating_add(Weight::from_parts(0, 3718))
+		//  Measured:  `220`
+		//  Estimated: `3685`
+		// Minimum execution time: 4_009_000 picoseconds.
+		Weight::from_parts(4_149_000, 0)
+			.saturating_add(Weight::from_parts(0, 3685))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 }
diff --git a/runtime/g1/src/weights/pallet_sudo.rs b/runtime/g1/src/weights/pallet_sudo.rs
index e18bec1e3dccb14b1f4b5412415cefd33d25ed06..8cf94cc0285d70b2377e428f4ea17de00da651c5 100644
--- a/runtime/g1/src/weights/pallet_sudo.rs
+++ b/runtime/g1/src/weights/pallet_sudo.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_sudo`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 14_742_000 picoseconds.
-		Weight::from_parts(16_374_000, 0)
+		// Minimum execution time: 8_805_000 picoseconds.
+		Weight::from_parts(9_170_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: 16_905_000 picoseconds.
-		Weight::from_parts(17_840_000, 0)
+		// Minimum execution time: 9_269_000 picoseconds.
+		Weight::from_parts(9_562_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: 14_551_000 picoseconds.
-		Weight::from_parts(18_663_000, 0)
+		// Minimum execution time: 9_164_000 picoseconds.
+		Weight::from_parts(9_575_000, 0)
 			.saturating_add(Weight::from_parts(0, 1517))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -87,10 +87,21 @@ impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `165`
 		//  Estimated: `1517`
-		// Minimum execution time: 15_390_000 picoseconds.
-		Weight::from_parts(16_195_000, 0)
+		// Minimum execution time: 7_865_000 picoseconds.
+		Weight::from_parts(8_536_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 check_only_sudo_account() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `165`
+		//  Estimated: `1517`
+		// Minimum execution time: 3_704_000 picoseconds.
+		Weight::from_parts(3_870_000, 0)
+			.saturating_add(Weight::from_parts(0, 1517))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
 }
diff --git a/runtime/g1/src/weights/pallet_timestamp.rs b/runtime/g1/src/weights/pallet_timestamp.rs
index 5f448039747187727327af94b3ed5707b09a911a..556ae529d5a07f49e192d414433f494ff1271217 100644
--- a/runtime/g1/src/weights/pallet_timestamp.rs
+++ b/runtime/g1/src/weights/pallet_timestamp.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_timestamp`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -57,8 +57,8 @@ impl<T: frame_system::Config> pallet_timestamp::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `268`
 		//  Estimated: `1493`
-		// Minimum execution time: 11_596_000 picoseconds.
-		Weight::from_parts(12_059_000, 0)
+		// Minimum execution time: 10_855_000 picoseconds.
+		Weight::from_parts(11_518_000, 0)
 			.saturating_add(Weight::from_parts(0, 1493))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -67,8 +67,8 @@ impl<T: frame_system::Config> pallet_timestamp::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `57`
 		//  Estimated: `0`
-		// Minimum execution time: 3_491_000 picoseconds.
-		Weight::from_parts(3_720_000, 0)
+		// Minimum execution time: 3_549_000 picoseconds.
+		Weight::from_parts(3_824_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/g1/src/weights/pallet_transaction_payment.rs b/runtime/g1/src/weights/pallet_transaction_payment.rs
new file mode 100644
index 0000000000000000000000000000000000000000..556b7f8f41aa621d112969dbf9f231d538a3d6a7
--- /dev/null
+++ b/runtime/g1/src/weights/pallet_transaction_payment.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_transaction_payment`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --genesis-builder=spec-genesis
+// --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_transaction_payment`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_transaction_payment::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 charge_transaction_payment() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `124`
+		//  Estimated: `6126`
+		// Minimum execution time: 45_569_000 picoseconds.
+		Weight::from_parts(47_029_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+}
diff --git a/runtime/g1/src/weights/pallet_treasury.rs b/runtime/g1/src/weights/pallet_treasury.rs
index 0a24d4630b419ac59a5bde9c161af9649ac4d31f..8a74b9be4c2bad5bd0b19912c82822b585a78460 100644
--- a/runtime/g1/src/weights/pallet_treasury.rs
+++ b/runtime/g1/src/weights/pallet_treasury.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_treasury`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -61,8 +61,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `6`
 		//  Estimated: `1887`
-		// Minimum execution time: 3_423_000 picoseconds.
-		Weight::from_parts(3_620_000, 0)
+		// Minimum execution time: 3_556_000 picoseconds.
+		Weight::from_parts(3_805_000, 0)
 			.saturating_add(Weight::from_parts(0, 1887))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -70,18 +70,18 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 	/// 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::LastSpendPeriod` (r:1 w:1)
+	/// Proof: `Treasury::LastSpendPeriod` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
 	/// The range of component `p` is `[0, 99]`.
 	fn on_initialize_proposals(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `82 + p * (1 ±0)`
 		//  Estimated: `3558`
-		// Minimum execution time: 14_864_000 picoseconds.
-		Weight::from_parts(16_426_439, 0)
+		// Minimum execution time: 11_461_000 picoseconds.
+		Weight::from_parts(12_397_435, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
-			// Standard Error: 631
-			.saturating_add(Weight::from_parts(31_939, 0).saturating_mul(p.into()))
+			// Standard Error: 376
+			.saturating_add(Weight::from_parts(20_402, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -99,8 +99,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `6`
 		//  Estimated: `3526`
-		// Minimum execution time: 4_574_000 picoseconds.
-		Weight::from_parts(4_777_000, 0)
+		// Minimum execution time: 4_855_000 picoseconds.
+		Weight::from_parts(5_244_000, 0)
 			.saturating_add(Weight::from_parts(0, 3526))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -110,8 +110,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `6`
 		//  Estimated: `3526`
-		// Minimum execution time: 4_534_000 picoseconds.
-		Weight::from_parts(4_797_000, 0)
+		// Minimum execution time: 4_857_000 picoseconds.
+		Weight::from_parts(5_162_000, 0)
 			.saturating_add(Weight::from_parts(0, 3526))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -121,8 +121,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `6`
 		//  Estimated: `3526`
-		// Minimum execution time: 3_950_000 picoseconds.
-		Weight::from_parts(4_273_000, 0)
+		// Minimum execution time: 4_559_000 picoseconds.
+		Weight::from_parts(4_803_000, 0)
 			.saturating_add(Weight::from_parts(0, 3526))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
diff --git a/runtime/g1/src/weights/pallet_universal_dividend.rs b/runtime/g1/src/weights/pallet_universal_dividend.rs
index 29c0cb9c99bc5f8f1cc261bddad6259bca020b0e..d4f5c5ada36a8e409ee5dfdfd5332468b5fe9488 100644
--- a/runtime/g1/src/weights/pallet_universal_dividend.rs
+++ b/runtime/g1/src/weights/pallet_universal_dividend.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_universal_dividend`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -62,11 +62,11 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `676`
 		//  Estimated: `4141`
-		// Minimum execution time: 36_133_000 picoseconds.
-		Weight::from_parts(37_986_178, 0)
+		// Minimum execution time: 34_214_000 picoseconds.
+		Weight::from_parts(36_149_557, 0)
 			.saturating_add(Weight::from_parts(0, 4141))
-			// Standard Error: 574
-			.saturating_add(Weight::from_parts(103, 0).saturating_mul(i.into()))
+			// Standard Error: 651
+			.saturating_add(Weight::from_parts(1_976, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -78,8 +78,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `156`
 		//  Estimated: `6126`
-		// Minimum execution time: 55_145_000 picoseconds.
-		Weight::from_parts(56_570_000, 0)
+		// Minimum execution time: 54_500_000 picoseconds.
+		Weight::from_parts(55_737_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 +92,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `93`
 		//  Estimated: `3558`
-		// Minimum execution time: 34_661_000 picoseconds.
-		Weight::from_parts(35_441_000, 0)
+		// Minimum execution time: 34_901_000 picoseconds.
+		Weight::from_parts(36_356_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -105,13 +105,15 @@ 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 on_removed_member(_i: u32, ) -> Weight {
+	fn on_removed_member(i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `181`
 		//  Estimated: `3558`
-		// Minimum execution time: 19_857_000 picoseconds.
-		Weight::from_parts(21_177_816, 0)
+		// Minimum execution time: 19_668_000 picoseconds.
+		Weight::from_parts(20_627_280, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
+			// Standard Error: 240
+			.saturating_add(Weight::from_parts(1_231, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/g1/src/weights/pallet_upgrade_origin.rs b/runtime/g1/src/weights/pallet_upgrade_origin.rs
index 8347cfa36b571dcce40b39e5ad396c715c89c56d..ee5b396eaf40402aba83c3f889fc7a44771b13fb 100644
--- a/runtime/g1/src/weights/pallet_upgrade_origin.rs
+++ b/runtime/g1/src/weights/pallet_upgrade_origin.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_upgrade_origin`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 5_566_000 picoseconds.
-		Weight::from_parts(6_024_000, 0)
+		// Minimum execution time: 5_813_000 picoseconds.
+		Weight::from_parts(6_042_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/g1/src/weights/pallet_utility.rs b/runtime/g1/src/weights/pallet_utility.rs
index 7843c72a379b16b8b087936f62ae66dfbdc2862e..27295fc66d45c89bea5f076661f11b602ddf0b21 100644
--- a/runtime/g1/src/weights/pallet_utility.rs
+++ b/runtime/g1/src/weights/pallet_utility.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_utility`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 4_367_000 picoseconds.
-		Weight::from_parts(10_202_249, 0)
+		// Minimum execution time: 4_716_000 picoseconds.
+		Weight::from_parts(7_673_308, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 2_134
-			.saturating_add(Weight::from_parts(2_080_987, 0).saturating_mul(c.into()))
+			// Standard Error: 770
+			.saturating_add(Weight::from_parts(2_117_641, 0).saturating_mul(c.into()))
 	}
 	fn as_derivative() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_604_000 picoseconds.
-		Weight::from_parts(3_823_000, 0)
+		// Minimum execution time: 4_001_000 picoseconds.
+		Weight::from_parts(4_245_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: 4_176_000 picoseconds.
-		Weight::from_parts(8_249_429, 0)
+		// Minimum execution time: 4_595_000 picoseconds.
+		Weight::from_parts(10_269_354, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_370
-			.saturating_add(Weight::from_parts(2_246_488, 0).saturating_mul(c.into()))
+			// Standard Error: 1_442
+			.saturating_add(Weight::from_parts(2_277_997, 0).saturating_mul(c.into()))
 	}
 	fn dispatch_as() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 5_614_000 picoseconds.
-		Weight::from_parts(5_966_000, 0)
+		// Minimum execution time: 5_835_000 picoseconds.
+		Weight::from_parts(6_174_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: 4_229_000 picoseconds.
-		Weight::from_parts(9_631_889, 0)
+		// Minimum execution time: 4_523_000 picoseconds.
+		Weight::from_parts(9_986_300, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_987
-			.saturating_add(Weight::from_parts(2_071_887, 0).saturating_mul(c.into()))
+			// Standard Error: 1_088
+			.saturating_add(Weight::from_parts(2_086_124, 0).saturating_mul(c.into()))
 	}
 }
diff --git a/runtime/g1/src/weights/paritydb_weights.rs b/runtime/g1/src/weights/paritydb_weights.rs
index 9dc380e7f3be47955b1b279afda5f176a907bc44..00e7da53f6f6b0bb53a3d5eeac415aefe7883d10 100644
--- a/runtime/g1/src/weights/paritydb_weights.rs
+++ b/runtime/g1/src/weights/paritydb_weights.rs
@@ -1,6 +1,6 @@
 
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14 (Y/M/D)
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22 (Y/M/D)
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //!
 //! DATABASE: `ParityDb`, RUNTIME: `Ğ1 Local Testnet`
@@ -34,31 +34,31 @@ pub mod constants {
 			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
 			///
 			/// Stats nanoseconds:
-			///   Min, Max: 943, 1_429_396
-			///   Average:  10_892
-			///   Median:   1_796
-			///   Std-Dev:  113211.69
+			///   Min, Max: 816, 1_528_096
+			///   Average:  11_527
+			///   Median:   1_463
+			///   Std-Dev:  121434.48
 			///
 			/// Percentiles nanoseconds:
-			///   99th: 9_782
-			///   95th: 2_776
-			///   75th: 2_041
-			read: 21_784 * constants::WEIGHT_REF_TIME_PER_NANOS,
+			///   99th: 20_434
+			///   95th: 2_861
+			///   75th: 1_986
+			read: 23_054 * 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_908, 6_543_821
-			///   Average:  51_524
-			///   Median:   10_509
-			///   Std-Dev:  518150.54
+			///   Min, Max: 3_734, 6_625_499
+			///   Average:  51_983
+			///   Median:   9_943
+			///   Std-Dev:  526311.43
 			///
 			/// Percentiles nanoseconds:
-			///   99th: 16_922
-			///   95th: 15_073
-			///   75th: 12_634
-			write: 103_048 * constants::WEIGHT_REF_TIME_PER_NANOS,
+			///   99th: 19_667
+			///   95th: 15_786
+			///   75th: 11_745
+			write: 103_966 * constants::WEIGHT_REF_TIME_PER_NANOS,
 		};
 	}
 
diff --git a/runtime/gdev/Cargo.toml b/runtime/gdev/Cargo.toml
index 08fc4435aad8cf4a23a28a6c102e5826216355c4..deefb7c6d5df3eb13894a8bfffa23d2ca229a9ca 100644
--- a/runtime/gdev/Cargo.toml
+++ b/runtime/gdev/Cargo.toml
@@ -12,6 +12,14 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [features]
 default = ["std"]
+# Enable the metadata hash generation.
+#
+# This is hidden behind a feature because it increases the compile time.
+# The wasm binary needs to be compiled twice, once to fetch the metadata,
+# generate the metadata hash and then a second time with the
+# `RUNTIME_METADATA_HASH` environment variable set for the `CheckMetadataHash`
+# extension.
+metadata-hash = ["substrate-wasm-builder/metadata-hash"]
 constant-fees = ["common-runtime/constant-fees"]
 runtime-benchmarks = [
 	"common-runtime/runtime-benchmarks",
@@ -44,6 +52,7 @@ runtime-benchmarks = [
 	"pallet-smith-members/runtime-benchmarks",
 	"pallet-sudo/runtime-benchmarks",
 	"pallet-timestamp/runtime-benchmarks",
+	"pallet-transaction-payment/runtime-benchmarks",
 	"pallet-treasury/runtime-benchmarks",
 	"pallet-universal-dividend/runtime-benchmarks",
 	"pallet-upgrade-origin/runtime-benchmarks",
@@ -186,6 +195,7 @@ frame-system = { workspace = true }
 frame-system-benchmarking = { workspace = true, optional = true }
 frame-system-rpc-runtime-api = { workspace = true }
 frame-try-runtime = { workspace = true, optional = true }
+frame-metadata-hash-extension = { workspace = true }
 hex-literal = { workspace = true, optional = true }
 log = { workspace = true }
 node-primitives = { workspace = true }
diff --git a/runtime/gdev/build.rs b/runtime/gdev/build.rs
index b31efa2f039949719cab9bfdcb170c98d4cb542f..450a6eba8252f849fa8cc94bec8026736e5953c5 100644
--- a/runtime/gdev/build.rs
+++ b/runtime/gdev/build.rs
@@ -17,10 +17,12 @@
 fn main() {
     #[cfg(feature = "std")]
     {
-        substrate_wasm_builder::WasmBuilder::new()
-            .with_current_project()
-            .export_heap_base()
-            .import_memory()
+        #[cfg(not(feature = "metadata-hash"))]
+        substrate_wasm_builder::WasmBuilder::init_with_defaults().build();
+
+        #[cfg(feature = "metadata-hash")]
+        substrate_wasm_builder::WasmBuilder::init_with_defaults()
+            .enable_metadata_hash("ĞD", 2)
             .build();
     }
 }
diff --git a/runtime/gdev/src/lib.rs b/runtime/gdev/src/lib.rs
index 9152ae3fb9f2ab71a6c105451c4d33420d4bc7d0..258c2c0072dbbec41967bf82cfac632ac2cdf223 100644
--- a/runtime/gdev/src/lib.rs
+++ b/runtime/gdev/src/lib.rs
@@ -22,10 +22,6 @@
 #[cfg(feature = "std")]
 include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
 
-#[cfg(feature = "runtime-benchmarks")]
-#[macro_use]
-extern crate frame_benchmarking;
-
 pub mod parameters;
 pub mod weights;
 
@@ -39,8 +35,6 @@ use frame_support::{traits::Contains, PalletId};
 pub use frame_system::Call as SystemCall;
 use frame_system::EnsureRoot;
 pub use pallet_balances::Call as BalancesCall;
-#[cfg(feature = "runtime-benchmarks")]
-pub use pallet_collective::RawOrigin;
 pub use pallet_duniter_test_parameters::Parameters as GenesisParameters;
 use pallet_grandpa::{
     fg_primitives, AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList,
@@ -56,10 +50,10 @@ use sp_core::OpaqueMetadata;
 #[cfg(any(feature = "std", test))]
 pub use sp_runtime::BuildStorage;
 use sp_runtime::{
-    create_runtime_str, generic, impl_opaque_keys,
+    generic, impl_opaque_keys,
     traits::{AccountIdLookup, BlakeTwo256, Block as BlockT, NumberFor, OpaqueKeys},
     transaction_validity::{TransactionSource, TransactionValidity},
-    ApplyExtrinsicResult, Perquintill,
+    ApplyExtrinsicResult, Cow, Perquintill,
 };
 pub use sp_runtime::{KeyTypeId, Perbill, Permill};
 #[cfg(feature = "std")]
@@ -79,14 +73,12 @@ pub use frame_support::{
     StorageValue,
 };
 
-common_runtime::declare_session_keys! {}
-
 // To learn more about runtime versioning and what each of the following value means:
 //   https://substrate.dev/docs/en/knowledgebase/runtime/upgrades#runtime-versioning
 #[sp_version::runtime_version]
 pub const VERSION: RuntimeVersion = RuntimeVersion {
-    spec_name: create_runtime_str!("gdev"),
-    impl_name: create_runtime_str!("duniter-gdev"),
+    spec_name: Cow::Borrowed("gdev"),
+    impl_name: Cow::Borrowed("duniter-gdev"),
     authoring_version: 1,
     // The version of the runtime specification. A full node will not attempt to use its native
     //   runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`,
@@ -97,7 +89,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
     impl_version: 1,
     apis: RUNTIME_API_VERSIONS,
     transaction_version: 1,
-    state_version: 1,
+    system_version: 1,
 };
 
 /// The version information used to identify this runtime when compiled natively.
@@ -111,11 +103,8 @@ pub fn native_version() -> NativeVersion {
 
 /// Block type as expected by this runtime.
 pub type Block = sp_runtime::generic::Block<Header, UncheckedExtrinsic>;
-/// Unchecked extrinsic type as expected by this runtime.
-pub type UncheckedExtrinsic =
-    generic::UncheckedExtrinsic<Address, RuntimeCall, Signature, SignedExtra>;
-/// The SignedExtension to the basic transaction logic.
-pub type SignedExtra = (
+/// The `TransactionExtension` to the basic transaction logic.
+pub type TxExtension = (
     frame_system::CheckNonZeroSender<Runtime>,
     frame_system::CheckSpecVersion<Runtime>,
     frame_system::CheckTxVersion<Runtime>,
@@ -124,7 +113,11 @@ pub type SignedExtra = (
     pallet_oneshot_account::CheckNonce<Runtime>,
     frame_system::CheckWeight<Runtime>,
     pallet_transaction_payment::ChargeTransactionPayment<Runtime>,
+    frame_metadata_hash_extension::CheckMetadataHash<Runtime>,
 );
+/// Unchecked extrinsic type as expected by this runtime.
+pub type UncheckedExtrinsic =
+    generic::UncheckedExtrinsic<Address, RuntimeCall, Signature, TxExtension>;
 
 /// Executive: handles dispatch to the various modules.
 pub type Executive = frame_executive::Executive<
@@ -137,39 +130,6 @@ pub type Executive = frame_executive::Executive<
 
 pub type TechnicalCommitteeInstance = Instance2;
 
-#[cfg(feature = "runtime-benchmarks")]
-mod benches {
-    define_benchmarks!(
-        [pallet_certification, Certification]
-        [pallet_distance, Distance]
-        [pallet_oneshot_account, OneshotAccount]
-        [pallet_universal_dividend, UniversalDividend]
-        [pallet_provide_randomness, ProvideRandomness]
-        [pallet_upgrade_origin, UpgradeOrigin]
-        [pallet_duniter_account, Account]
-        [pallet_quota, Quota]
-        [pallet_identity, Identity]
-        [pallet_membership, Membership]
-        [pallet_smith_members, SmithMembers]
-        [pallet_authority_members, AuthorityMembers]
-        // Substrate
-        [pallet_balances, Balances]
-        [frame_benchmarking::baseline, Baseline::<Runtime>]
-        [pallet_collective, TechnicalCommittee]
-        [pallet_session, SessionBench::<Runtime>]
-        [pallet_im_online, ImOnline]
-        [pallet_sudo, Sudo]
-        [pallet_multisig, Multisig]
-        [pallet_preimage, Preimage]
-        [pallet_proxy, Proxy]
-        [pallet_scheduler, Scheduler]
-        [frame_system, SystemBench::<Runtime>]
-        [pallet_timestamp, Timestamp]
-        [pallet_treasury, Treasury]
-        [pallet_utility, Utility]
-    );
-}
-
 pub struct BaseCallFilter;
 impl Contains<RuntimeCall> for BaseCallFilter {
     fn contains(call: &RuntimeCall) -> bool {
@@ -271,9 +231,6 @@ impl pallet_duniter_test_parameters::Config for Runtime {
     type PeriodCount = Balance;
     type SessionCount = u32;
 }
-#[cfg(feature = "runtime-benchmarks")]
-type WorstOrigin = RawOrigin<AccountId, TechnicalCommitteeInstance>;
-common_runtime::pallets_config!();
 
 // Create the runtime by composing the pallets that were previously configured.
 construct_runtime!(
@@ -333,22 +290,11 @@ construct_runtime!(
     }
 );
 
-impl<C> frame_system::offchain::SendTransactionTypes<C> for Runtime
-where
-    RuntimeCall: From<C>,
-{
-    type Extrinsic = UncheckedExtrinsic;
-    type OverarchingCall = RuntimeCall;
-}
-
 // All of our runtimes share most of their Runtime API implementations.
 // We use a macro to implement this common part and add runtime-specific additional implementations.
-// This macro expands to :
-// ```
-// impl_runtime_apis! {
-//     // All impl blocks shared between all runtimes.
-//
-//     // Specific impls provided to the `runtime_apis!` macro.
-// }
-// ```
+common_runtime::pallets_config!();
+common_runtime::declare_session_keys! {}
+#[cfg(feature = "runtime-benchmarks")]
+common_runtime::benchmarks_config!();
+common_runtime::offchain_config! {}
 common_runtime::runtime_apis! {}
diff --git a/runtime/gdev/src/weights.rs b/runtime/gdev/src/weights.rs
index 1bf51bdbb063859c33197a6251bf767ba1311442..8371a5d27816ee03cb0042f5a34957c28ebf570c 100644
--- a/runtime/gdev/src/weights.rs
+++ b/runtime/gdev/src/weights.rs
@@ -20,6 +20,8 @@
 #![allow(clippy::unnecessary_cast)]
 #![allow(unused_doc_comments)]
 
+pub mod frame_system_extensions;
+pub mod pallet_transaction_payment;
 pub mod block_weights;
 pub mod extrinsic_weights;
 pub mod frame_system;
diff --git a/runtime/gdev/src/weights/block_weights.rs b/runtime/gdev/src/weights/block_weights.rs
index 25e351c31779f2f95b3923c1133d57e2d38e26d0..571ac5c48d7b346e92a9b169a0e734a2359dc20f 100644
--- a/runtime/gdev/src/weights/block_weights.rs
+++ b/runtime/gdev/src/weights/block_weights.rs
@@ -1,6 +1,6 @@
 
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14 (Y/M/D)
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22 (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`
@@ -22,21 +22,21 @@ use sp_core::parameter_types;
 use sp_weights::{constants::WEIGHT_REF_TIME_PER_NANOS, Weight};
 
 parameter_types! {
-	/// Time to execute an empty block.
+	/// Weight of executing an empty block.
 	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
 	///
 	/// Stats nanoseconds:
-	///   Min, Max: 125_984, 207_856
-	///   Average:  133_878
-	///   Median:   130_736
-	///   Std-Dev:  10123.25
+	///   Min, Max: 122_545, 345_032
+	///   Average:  138_548
+	///   Median:   133_458
+	///   Std-Dev:  23871.28
 	///
 	/// Percentiles nanoseconds:
-	///   99th: 168_181
-	///   95th: 146_504
-	///   75th: 135_864
+	///   99th: 214_321
+	///   95th: 155_132
+	///   75th: 137_306
 	pub const BlockExecutionWeight: Weight =
-		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(133_878), 0);
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(138_548), 0);
 }
 
 #[cfg(test)]
diff --git a/runtime/gdev/src/weights/extrinsic_weights.rs b/runtime/gdev/src/weights/extrinsic_weights.rs
index 6a5a8422134fbf63203f7a8da120a9020a312e97..a1918cd1bad7cd740e9a1020bfb2bcbfb20cd5e3 100644
--- a/runtime/gdev/src/weights/extrinsic_weights.rs
+++ b/runtime/gdev/src/weights/extrinsic_weights.rs
@@ -1,6 +1,6 @@
 
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14 (Y/M/D)
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22 (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`
@@ -22,21 +22,21 @@ 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`.
+	/// Weight of executing a NO-OP extrinsic, for example `System::remark`.
 	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
 	///
 	/// Stats nanoseconds:
-	///   Min, Max: 87_363, 88_194
-	///   Average:  87_587
-	///   Median:   87_531
-	///   Std-Dev:  159.97
+	///   Min, Max: 92_602, 93_246
+	///   Average:  92_945
+	///   Median:   92_939
+	///   Std-Dev:  123.07
 	///
 	/// Percentiles nanoseconds:
-	///   99th: 88_182
-	///   95th: 87_891
-	///   75th: 87_627
+	///   99th: 93_229
+	///   95th: 93_175
+	///   75th: 93_023
 	pub const ExtrinsicBaseWeight: Weight =
-		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(87_587), 0);
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(92_945), 0);
 }
 
 #[cfg(test)]
diff --git a/runtime/gdev/src/weights/frame_benchmarking_baseline.rs b/runtime/gdev/src/weights/frame_benchmarking_baseline.rs
index 308b9fc55d5f2cc240e9e054244252c7da52a06d..1d593d03508653fc07feb3f9b8038d7b80cb61ee 100644
--- a/runtime/gdev/src/weights/frame_benchmarking_baseline.rs
+++ b/runtime/gdev/src/weights/frame_benchmarking_baseline.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `frame_benchmarking::baseline`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 81_000 picoseconds.
-		Weight::from_parts(111_848, 0)
+		// Minimum execution time: 83_000 picoseconds.
+		Weight::from_parts(120_949, 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: 82_000 picoseconds.
-		Weight::from_parts(113_145, 0)
+		// Minimum execution time: 83_000 picoseconds.
+		Weight::from_parts(112_667, 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: 82_000 picoseconds.
-		Weight::from_parts(115_439, 0)
+		// Minimum execution time: 84_000 picoseconds.
+		Weight::from_parts(112_957, 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: 82_000 picoseconds.
-		Weight::from_parts(113_450, 0)
+		// Minimum execution time: 83_000 picoseconds.
+		Weight::from_parts(112_463, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	fn hashing() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 20_005_636_000 picoseconds.
-		Weight::from_parts(20_077_845_000, 0)
+		// Minimum execution time: 19_580_244_000 picoseconds.
+		Weight::from_parts(19_630_816_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 100]`.
@@ -96,10 +96,10 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 96_000 picoseconds.
-		Weight::from_parts(28_362_958, 0)
+		// Minimum execution time: 97_000 picoseconds.
+		Weight::from_parts(27_435_845, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 13_596
-			.saturating_add(Weight::from_parts(31_132_724, 0).saturating_mul(i.into()))
+			// Standard Error: 12_491
+			.saturating_add(Weight::from_parts(31_686_916, 0).saturating_mul(i.into()))
 	}
 }
diff --git a/runtime/gdev/src/weights/frame_system.rs b/runtime/gdev/src/weights/frame_system.rs
index 9e8028672d2b27ed976082f2c2e84b7b59fc2c9e..6eeb709777e3e48b44a09e91cc49aa467608c7c4 100644
--- a/runtime/gdev/src/weights/frame_system.rs
+++ b/runtime/gdev/src/weights/frame_system.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `frame_system`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -52,8 +52,8 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_696_000 picoseconds.
-		Weight::from_parts(1_873_000, 0)
+		// Minimum execution time: 1_997_000 picoseconds.
+		Weight::from_parts(2_094_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 0
 			.saturating_add(Weight::from_parts(255, 0).saturating_mul(b.into()))
@@ -63,39 +63,33 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_763_000 picoseconds.
-		Weight::from_parts(5_017_000, 0)
+		// Minimum execution time: 4_988_000 picoseconds.
+		Weight::from_parts(5_038_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 0
-			.saturating_add(Weight::from_parts(1_033, 0).saturating_mul(b.into()))
+			.saturating_add(Weight::from_parts(1_039, 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: 3_242_000 picoseconds.
-		Weight::from_parts(3_651_000, 0)
-			.saturating_add(Weight::from_parts(0, 1485))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(2))
+		//  Estimated: `0`
+		// Minimum execution time: 3_352_000 picoseconds.
+		Weight::from_parts(3_521_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			.saturating_add(T::DbWeight::get().writes(1))
 	}
-	/// 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: 75_208_184_000 picoseconds.
-		Weight::from_parts(76_274_392_000, 0)
-			.saturating_add(Weight::from_parts(0, 1485))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(2))
+		//  Estimated: `0`
+		// Minimum execution time: 75_556_906_000 picoseconds.
+		Weight::from_parts(76_388_277_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			.saturating_add(T::DbWeight::get().writes(1))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
 	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -104,11 +98,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_810_000 picoseconds.
-		Weight::from_parts(1_896_000, 0)
+		// Minimum execution time: 1_910_000 picoseconds.
+		Weight::from_parts(2_007_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 595
-			.saturating_add(Weight::from_parts(573_002, 0).saturating_mul(i.into()))
+			// Standard Error: 579
+			.saturating_add(Weight::from_parts(586_595, 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 +112,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_800_000 picoseconds.
-		Weight::from_parts(1_962_000, 0)
+		// Minimum execution time: 1_817_000 picoseconds.
+		Weight::from_parts(2_003_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 658
-			.saturating_add(Weight::from_parts(456_239, 0).saturating_mul(i.into()))
+			// Standard Error: 759
+			.saturating_add(Weight::from_parts(464_650, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
@@ -130,13 +124,13 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 	/// 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: 3_436_000 picoseconds.
-		Weight::from_parts(3_503_000, 0)
-			.saturating_add(Weight::from_parts(0, 76))
-			// Standard Error: 1_081
-			.saturating_add(Weight::from_parts(1_048_984, 0).saturating_mul(p.into()))
+		//  Measured:  `78 + p * (69 ±0)`
+		//  Estimated: `75 + p * (70 ±0)`
+		// Minimum execution time: 3_438_000 picoseconds.
+		Weight::from_parts(3_566_000, 0)
+			.saturating_add(Weight::from_parts(0, 75))
+			// Standard Error: 755
+			.saturating_add(Weight::from_parts(1_043_550, 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,25 +141,23 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 7_901_000 picoseconds.
-		Weight::from_parts(8_927_000, 0)
+		// Minimum execution time: 8_179_000 picoseconds.
+		Weight::from_parts(9_190_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: 79_470_902_000 picoseconds.
-		Weight::from_parts(80_314_512_000, 0)
+		// Minimum execution time: 79_083_880_000 picoseconds.
+		Weight::from_parts(80_032_467_000, 0)
 			.saturating_add(Weight::from_parts(0, 1518))
-			.saturating_add(T::DbWeight::get().reads(2))
-			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(2))
 	}
 }
diff --git a/runtime/gdev/src/weights/frame_system_extensions.rs b/runtime/gdev/src/weights/frame_system_extensions.rs
new file mode 100644
index 0000000000000000000000000000000000000000..704f925d50e6432604408ea8bfd0c57030b855b5
--- /dev/null
+++ b/runtime/gdev/src/weights/frame_system_extensions.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 `frame_system_extensions`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --genesis-builder=spec-genesis
+// --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_extensions`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> frame_system::ExtensionsWeightInfo for WeightInfo<T> {
+	fn check_genesis() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `30`
+		//  Estimated: `0`
+		// Minimum execution time: 2_433_000 picoseconds.
+		Weight::from_parts(2_695_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_mortality_mortal_transaction() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `68`
+		//  Estimated: `0`
+		// Minimum execution time: 5_217_000 picoseconds.
+		Weight::from_parts(5_519_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_mortality_immortal_transaction() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `68`
+		//  Estimated: `0`
+		// Minimum execution time: 5_320_000 picoseconds.
+		Weight::from_parts(5_645_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_non_zero_sender() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 377_000 picoseconds.
+		Weight::from_parts(475_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 check_nonce() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `61`
+		//  Estimated: `3558`
+		// Minimum execution time: 5_905_000 picoseconds.
+		Weight::from_parts(6_222_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn check_spec_version() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 295_000 picoseconds.
+		Weight::from_parts(353_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_tx_version() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 301_000 picoseconds.
+		Weight::from_parts(351_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_weight() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_405_000 picoseconds.
+		Weight::from_parts(3_699_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+}
diff --git a/runtime/gdev/src/weights/pallet_authority_members.rs b/runtime/gdev/src/weights/pallet_authority_members.rs
index 336b241bb8feb4df7d9c94a66603b742fd8ae509..121c8a30421276c6c910e396f4bf274da420c883 100644
--- a/runtime/gdev/src/weights/pallet_authority_members.rs
+++ b/runtime/gdev/src/weights/pallet_authority_members.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_authority_members`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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:  `900`
-		//  Estimated: `4365`
-		// Minimum execution time: 24_733_000 picoseconds.
-		Weight::from_parts(25_917_000, 0)
-			.saturating_add(Weight::from_parts(0, 4365))
+		//  Measured:  `867`
+		//  Estimated: `4332`
+		// Minimum execution time: 22_932_000 picoseconds.
+		Weight::from_parts(24_576_000, 0)
+			.saturating_add(Weight::from_parts(0, 4332))
 			.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:  `1357`
-		//  Estimated: `4822`
-		// Minimum execution time: 34_853_000 picoseconds.
-		Weight::from_parts(37_363_000, 0)
-			.saturating_add(Weight::from_parts(0, 4822))
+		//  Measured:  `1324`
+		//  Estimated: `4789`
+		// Minimum execution time: 33_979_000 picoseconds.
+		Weight::from_parts(36_438_000, 0)
+			.saturating_add(Weight::from_parts(0, 4789))
 			.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:  `1806`
-		//  Estimated: `12696`
-		// Minimum execution time: 44_839_000 picoseconds.
-		Weight::from_parts(47_421_000, 0)
-			.saturating_add(Weight::from_parts(0, 12696))
+		//  Measured:  `1773`
+		//  Estimated: `12663`
+		// Minimum execution time: 42_263_000 picoseconds.
+		Weight::from_parts(43_544_000, 0)
+			.saturating_add(Weight::from_parts(0, 12663))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -135,8 +135,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `848`
 		//  Estimated: `4313`
-		// Minimum execution time: 39_034_000 picoseconds.
-		Weight::from_parts(40_210_000, 0)
+		// Minimum execution time: 36_170_000 picoseconds.
+		Weight::from_parts(37_876_000, 0)
 			.saturating_add(Weight::from_parts(0, 4313))
 			.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: 9_200_000 picoseconds.
-		Weight::from_parts(9_531_000, 0)
+		// Minimum execution time: 8_913_000 picoseconds.
+		Weight::from_parts(9_453_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_balances.rs b/runtime/gdev/src/weights/pallet_balances.rs
index 7fbe15f29230a31cb202f9ad1dbc149e1febd2bc..305c5bb8cdac45c2e142c6f8e21736f6bf25a678 100644
--- a/runtime/gdev/src/weights/pallet_balances.rs
+++ b/runtime/gdev/src/weights/pallet_balances.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_balances`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 49_369_000 picoseconds.
-		Weight::from_parts(50_998_000, 0)
+		// Minimum execution time: 48_945_000 picoseconds.
+		Weight::from_parts(50_657_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: 30_729_000 picoseconds.
-		Weight::from_parts(31_164_000, 0)
+		// Minimum execution time: 30_270_000 picoseconds.
+		Weight::from_parts(31_069_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -77,8 +77,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `134`
 		//  Estimated: `3558`
-		// Minimum execution time: 11_010_000 picoseconds.
-		Weight::from_parts(11_750_000, 0)
+		// Minimum execution time: 11_030_000 picoseconds.
+		Weight::from_parts(11_539_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -89,8 +89,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `134`
 		//  Estimated: `3558`
-		// Minimum execution time: 18_124_000 picoseconds.
-		Weight::from_parts(18_755_000, 0)
+		// Minimum execution time: 16_693_000 picoseconds.
+		Weight::from_parts(17_705_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: 51_160_000 picoseconds.
-		Weight::from_parts(52_812_000, 0)
+		// Minimum execution time: 51_017_000 picoseconds.
+		Weight::from_parts(52_495_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: 37_649_000 picoseconds.
-		Weight::from_parts(38_367_000, 0)
+		// Minimum execution time: 37_080_000 picoseconds.
+		Weight::from_parts(37_873_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -125,8 +125,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `134`
 		//  Estimated: `3558`
-		// Minimum execution time: 13_983_000 picoseconds.
-		Weight::from_parts(14_543_000, 0)
+		// Minimum execution time: 13_637_000 picoseconds.
+		Weight::from_parts(14_362_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,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 5_204_000 picoseconds.
-		Weight::from_parts(5_578_000, 0)
+		// Minimum execution time: 5_588_000 picoseconds.
+		Weight::from_parts(5_942_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `System::Account` (r:1 w:1)
@@ -145,8 +145,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `63`
 		//  Estimated: `3558`
-		// Minimum execution time: 35_473_000 picoseconds.
-		Weight::from_parts(39_186_000, 0)
+		// Minimum execution time: 34_789_000 picoseconds.
+		Weight::from_parts(36_021_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -155,8 +155,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 16_907_000 picoseconds.
-		Weight::from_parts(17_393_000, 0)
+		// Minimum execution time: 15_975_000 picoseconds.
+		Weight::from_parts(16_516_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/gdev/src/weights/pallet_certification.rs b/runtime/gdev/src/weights/pallet_certification.rs
index 73df17f4b80ad7deb0ff5c2a0ab985425abdb755..945112abfb76b636d20c31191b229775fd9ecfbd 100644
--- a/runtime/gdev/src/weights/pallet_certification.rs
+++ b/runtime/gdev/src/weights/pallet_certification.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_certification`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -63,8 +63,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `1074`
 		//  Estimated: `7014`
-		// Minimum execution time: 39_906_000 picoseconds.
-		Weight::from_parts(41_809_000, 0)
+		// Minimum execution time: 39_750_000 picoseconds.
+		Weight::from_parts(42_497_000, 0)
 			.saturating_add(Weight::from_parts(0, 7014))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -85,8 +85,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `1097`
 		//  Estimated: `7037`
-		// Minimum execution time: 39_926_000 picoseconds.
-		Weight::from_parts(42_291_000, 0)
+		// Minimum execution time: 38_013_000 picoseconds.
+		Weight::from_parts(39_453_000, 0)
 			.saturating_add(Weight::from_parts(0, 7037))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -101,8 +101,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `528`
 		//  Estimated: `6468`
-		// Minimum execution time: 22_280_000 picoseconds.
-		Weight::from_parts(23_811_000, 0)
+		// Minimum execution time: 19_735_000 picoseconds.
+		Weight::from_parts(20_458_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:  `665 + i * (35 ±0)`
-		//  Estimated: `4129 + i * (2511 ±0)`
-		// Minimum execution time: 33_392_000 picoseconds.
-		Weight::from_parts(34_295_000, 0)
-			.saturating_add(Weight::from_parts(0, 4129))
-			// Standard Error: 24_307
-			.saturating_add(Weight::from_parts(9_192_872, 0).saturating_mul(i.into()))
+		//  Measured:  `690 + i * (35 ±0)`
+		//  Estimated: `4160 + i * (2511 ±0)`
+		// Minimum execution time: 30_467_000 picoseconds.
+		Weight::from_parts(6_334_106, 0)
+			.saturating_add(Weight::from_parts(0, 4160))
+			// Standard Error: 3_509
+			.saturating_add(Weight::from_parts(4_753_946, 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: 3_418_000 picoseconds.
-		Weight::from_parts(3_641_000, 0)
+		// Minimum execution time: 3_239_000 picoseconds.
+		Weight::from_parts(3_566_000, 0)
 			.saturating_add(Weight::from_parts(0, 3604))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -148,8 +148,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `276`
 		//  Estimated: `3741`
-		// Minimum execution time: 5_155_000 picoseconds.
-		Weight::from_parts(5_554_000, 0)
+		// Minimum execution time: 5_082_000 picoseconds.
+		Weight::from_parts(5_456_000, 0)
 			.saturating_add(Weight::from_parts(0, 3741))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -166,30 +166,30 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `822`
 		//  Estimated: `6762`
-		// Minimum execution time: 29_437_000 picoseconds.
-		Weight::from_parts(30_429_000, 0)
+		// Minimum execution time: 28_090_000 picoseconds.
+		Weight::from_parts(29_822_000, 0)
 			.saturating_add(Weight::from_parts(0, 6762))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.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:1000 w:1000)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:100 w:100)
 	/// 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`)
 	/// 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]`.
+	/// The range of component `i` is `[2, 100]`.
 	fn do_remove_all_certs_received_by(i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `665 + i * (35 ±0)`
-		//  Estimated: `4129 + i * (2511 ±0)`
-		// Minimum execution time: 33_392_000 picoseconds.
-		Weight::from_parts(34_295_000, 0)
-			.saturating_add(Weight::from_parts(0, 4129))
-			// Standard Error: 24_307
-			.saturating_add(Weight::from_parts(9_192_872, 0).saturating_mul(i.into()))
+		//  Measured:  `654 + i * (35 ±0)`
+		//  Estimated: `4127 + i * (2511 ±0)`
+		// Minimum execution time: 27_313_000 picoseconds.
+		Weight::from_parts(22_400_854, 0)
+			.saturating_add(Weight::from_parts(0, 4127))
+			// Standard Error: 4_211
+			.saturating_add(Weight::from_parts(4_415_904, 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))
diff --git a/runtime/gdev/src/weights/pallet_collective.rs b/runtime/gdev/src/weights/pallet_collective.rs
index df49a9036093e7d45a86af39c9d0e698d5306ee3..569a635f1ef5d495eeb6dc93027415a9f1d67071 100644
--- a/runtime/gdev/src/weights/pallet_collective.rs
+++ b/runtime/gdev/src/weights/pallet_collective.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_collective`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 12_896_000 picoseconds.
-		Weight::from_parts(13_232_000, 0)
+		// Minimum execution time: 11_776_000 picoseconds.
+		Weight::from_parts(12_075_000, 0)
 			.saturating_add(Weight::from_parts(0, 10019))
-			// Standard Error: 9_909
-			.saturating_add(Weight::from_parts(743_142, 0).saturating_mul(m.into()))
-			// Standard Error: 48_986
-			.saturating_add(Weight::from_parts(6_907_561, 0).saturating_mul(p.into()))
+			// Standard Error: 12_024
+			.saturating_add(Weight::from_parts(865_492, 0).saturating_mul(m.into()))
+			// Standard Error: 59_440
+			.saturating_add(Weight::from_parts(7_683_599, 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: 10_945_000 picoseconds.
-		Weight::from_parts(9_945_180, 0)
+		// Minimum execution time: 11_127_000 picoseconds.
+		Weight::from_parts(10_511_151, 0)
 			.saturating_add(Weight::from_parts(0, 1518))
-			// Standard Error: 35
-			.saturating_add(Weight::from_parts(1_750, 0).saturating_mul(b.into()))
-			// Standard Error: 368
-			.saturating_add(Weight::from_parts(18_189, 0).saturating_mul(m.into()))
+			// Standard Error: 31
+			.saturating_add(Weight::from_parts(1_475, 0).saturating_mul(b.into()))
+			// Standard Error: 323
+			.saturating_add(Weight::from_parts(14_197, 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: 13_298_000 picoseconds.
-		Weight::from_parts(12_938_615, 0)
+		// Minimum execution time: 13_287_000 picoseconds.
+		Weight::from_parts(12_735_289, 0)
 			.saturating_add(Weight::from_parts(0, 3498))
-			// Standard Error: 47
-			.saturating_add(Weight::from_parts(1_337, 0).saturating_mul(b.into()))
-			// Standard Error: 490
-			.saturating_add(Weight::from_parts(20_333, 0).saturating_mul(m.into()))
+			// Standard Error: 45
+			.saturating_add(Weight::from_parts(1_457, 0).saturating_mul(b.into()))
+			// Standard Error: 465
+			.saturating_add(Weight::from_parts(21_400, 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: 19_181_000 picoseconds.
-		Weight::from_parts(19_061_296, 0)
+		// Minimum execution time: 18_162_000 picoseconds.
+		Weight::from_parts(16_614_247, 0)
 			.saturating_add(Weight::from_parts(0, 3461))
-			// Standard Error: 84
-			.saturating_add(Weight::from_parts(2_427, 0).saturating_mul(b.into()))
-			// Standard Error: 878
-			.saturating_add(Weight::from_parts(17_950, 0).saturating_mul(m.into()))
-			// Standard Error: 4_387
-			.saturating_add(Weight::from_parts(317_649, 0).saturating_mul(p.into()))
+			// Standard Error: 62
+			.saturating_add(Weight::from_parts(2_325, 0).saturating_mul(b.into()))
+			// Standard Error: 651
+			.saturating_add(Weight::from_parts(19_921, 0).saturating_mul(m.into()))
+			// Standard Error: 3_253
+			.saturating_add(Weight::from_parts(288_035, 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: 17_952_000 picoseconds.
-		Weight::from_parts(19_149_079, 0)
+		// Minimum execution time: 16_042_000 picoseconds.
+		Weight::from_parts(17_441_298, 0)
 			.saturating_add(Weight::from_parts(0, 4037))
-			// Standard Error: 704
-			.saturating_add(Weight::from_parts(37_189, 0).saturating_mul(m.into()))
+			// Standard Error: 728
+			.saturating_add(Weight::from_parts(38_625, 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: 21_558_000 picoseconds.
-		Weight::from_parts(20_999_360, 0)
+		// Minimum execution time: 20_982_000 picoseconds.
+		Weight::from_parts(19_417_230, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
-			// Standard Error: 691
-			.saturating_add(Weight::from_parts(29_228, 0).saturating_mul(m.into()))
-			// Standard Error: 3_412
-			.saturating_add(Weight::from_parts(257_256, 0).saturating_mul(p.into()))
+			// Standard Error: 679
+			.saturating_add(Weight::from_parts(32_252, 0).saturating_mul(m.into()))
+			// Standard Error: 3_355
+			.saturating_add(Weight::from_parts(248_611, 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: 31_206_000 picoseconds.
-		Weight::from_parts(29_531_688, 0)
+		// Minimum execution time: 28_988_000 picoseconds.
+		Weight::from_parts(27_951_530, 0)
 			.saturating_add(Weight::from_parts(0, 3619))
-			// Standard Error: 106
-			.saturating_add(Weight::from_parts(2_677, 0).saturating_mul(b.into()))
-			// Standard Error: 1_120
-			.saturating_add(Weight::from_parts(16_030, 0).saturating_mul(m.into()))
-			// Standard Error: 5_528
-			.saturating_add(Weight::from_parts(392_351, 0).saturating_mul(p.into()))
+			// Standard Error: 164
+			.saturating_add(Weight::from_parts(2_377, 0).saturating_mul(b.into()))
+			// Standard Error: 1_735
+			.saturating_add(Weight::from_parts(9_891, 0).saturating_mul(m.into()))
+			// Standard Error: 8_562
+			.saturating_add(Weight::from_parts(480_429, 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: 24_903_000 picoseconds.
-		Weight::from_parts(23_436_077, 0)
+		// Minimum execution time: 22_896_000 picoseconds.
+		Weight::from_parts(21_227_619, 0)
 			.saturating_add(Weight::from_parts(0, 3611))
-			// Standard Error: 639
-			.saturating_add(Weight::from_parts(34_121, 0).saturating_mul(m.into()))
-			// Standard Error: 3_160
-			.saturating_add(Weight::from_parts(277_625, 0).saturating_mul(p.into()))
+			// Standard Error: 631
+			.saturating_add(Weight::from_parts(32_963, 0).saturating_mul(m.into()))
+			// Standard Error: 3_117
+			.saturating_add(Weight::from_parts(266_136, 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: 33_181_000 picoseconds.
-		Weight::from_parts(32_018_425, 0)
+		// Minimum execution time: 31_007_000 picoseconds.
+		Weight::from_parts(30_074_134, 0)
 			.saturating_add(Weight::from_parts(0, 3639))
-			// Standard Error: 103
-			.saturating_add(Weight::from_parts(2_307, 0).saturating_mul(b.into()))
-			// Standard Error: 1_099
-			.saturating_add(Weight::from_parts(14_575, 0).saturating_mul(m.into()))
-			// Standard Error: 5_421
-			.saturating_add(Weight::from_parts(406_067, 0).saturating_mul(p.into()))
+			// Standard Error: 118
+			.saturating_add(Weight::from_parts(2_519, 0).saturating_mul(b.into()))
+			// Standard Error: 1_253
+			.saturating_add(Weight::from_parts(25_021, 0).saturating_mul(m.into()))
+			// Standard Error: 6_182
+			.saturating_add(Weight::from_parts(417_952, 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,13 +290,50 @@ 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: 11_094_000 picoseconds.
-		Weight::from_parts(12_093_992, 0)
+		// Minimum execution time: 11_060_000 picoseconds.
+		Weight::from_parts(11_988_016, 0)
 			.saturating_add(Weight::from_parts(0, 1674))
-			// Standard Error: 1_913
-			.saturating_add(Weight::from_parts(178_945, 0).saturating_mul(p.into()))
+			// Standard Error: 1_654
+			.saturating_add(Weight::from_parts(150_655, 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()))
 	}
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::CostOf` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::CostOf` (`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::Voting` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `d` is `[0, 1]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn kill(d: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1243 + p * (55 ±0)`
+		//  Estimated: `4710 + d * (5 ±1) + p * (55 ±0)`
+		// Minimum execution time: 16_269_000 picoseconds.
+		Weight::from_parts(17_903_116, 0)
+			.saturating_add(Weight::from_parts(0, 4710))
+			// Standard Error: 2_954
+			.saturating_add(Weight::from_parts(262_949, 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, 5).saturating_mul(d.into()))
+			.saturating_add(Weight::from_parts(0, 55).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::CostOf` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::CostOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn release_proposal_cost() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `676`
+		//  Estimated: `4141`
+		// Minimum execution time: 10_685_000 picoseconds.
+		Weight::from_parts(11_385_000, 0)
+			.saturating_add(Weight::from_parts(0, 4141))
+			.saturating_add(T::DbWeight::get().reads(2))
+	}
 }
diff --git a/runtime/gdev/src/weights/pallet_distance.rs b/runtime/gdev/src/weights/pallet_distance.rs
index e0766a3b7c3f62918c4383d44446af10c8f698ce..ed5d61dfeea100ac3734ccb86fa4c1fd565fa292 100644
--- a/runtime/gdev/src/weights/pallet_distance.rs
+++ b/runtime/gdev/src/weights/pallet_distance.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_distance`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -59,20 +59,20 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// Proof: `Parameters::ParametersStorage` (`max_values`: Some(1), `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::CurrentPeriodIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPeriodIndex` (`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`)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(89), added: 2564, mode: `MaxEncodedLen`)
 	fn request_distance_evaluation() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `1245`
 		//  Estimated: `4710`
-		// Minimum execution time: 69_475_000 picoseconds.
-		Weight::from_parts(71_693_000, 0)
+		// Minimum execution time: 66_372_000 picoseconds.
+		Weight::from_parts(67_880_000, 0)
 			.saturating_add(Weight::from_parts(0, 4710))
 			.saturating_add(T::DbWeight::get().reads(10))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -89,52 +89,48 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// Proof: `Parameters::ParametersStorage` (`max_values`: Some(1), `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::CurrentPeriodIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPeriodIndex` (`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`)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(89), added: 2564, mode: `MaxEncodedLen`)
 	fn request_distance_evaluation_for() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `1274`
 		//  Estimated: `7214`
-		// Minimum execution time: 71_428_000 picoseconds.
-		Weight::from_parts(73_490_000, 0)
+		// Minimum execution time: 70_152_000 picoseconds.
+		Weight::from_parts(71_537_000, 0)
 			.saturating_add(Weight::from_parts(0, 7214))
 			.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`)
-	/// 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::CurrentPeriodIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPeriodIndex` (`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:  `425 + i * (10 ±0)`
-		//  Estimated: `1910 + i * (10 ±0)`
-		// Minimum execution time: 18_304_000 picoseconds.
-		Weight::from_parts(20_533_001, 0)
-			.saturating_add(Weight::from_parts(0, 1910))
-			// Standard Error: 75
-			.saturating_add(Weight::from_parts(104_774, 0).saturating_mul(i.into()))
-			.saturating_add(T::DbWeight::get().reads(6))
-			.saturating_add(T::DbWeight::get().writes(3))
+		//  Measured:  `304 + i * (10 ±0)`
+		//  Estimated: `1789 + i * (10 ±0)`
+		// Minimum execution time: 12_055_000 picoseconds.
+		Weight::from_parts(14_797_886, 0)
+			.saturating_add(Weight::from_parts(0, 1789))
+			// Standard Error: 441
+			.saturating_add(Weight::from_parts(114_780, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(2))
 			.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::CurrentPeriodIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPeriodIndex` (`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]`.
@@ -142,11 +138,11 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `162 + i * (10 ±0)`
 		//  Estimated: `1647 + i * (10 ±0)`
-		// Minimum execution time: 7_608_000 picoseconds.
-		Weight::from_parts(9_640_107, 0)
+		// Minimum execution time: 7_280_000 picoseconds.
+		Weight::from_parts(9_370_149, 0)
 			.saturating_add(Weight::from_parts(0, 1647))
-			// Standard Error: 115
-			.saturating_add(Weight::from_parts(103_664, 0).saturating_mul(i.into()))
+			// Standard Error: 111
+			.saturating_add(Weight::from_parts(113_125, 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()))
@@ -163,8 +159,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `650`
 		//  Estimated: `6590`
-		// Minimum execution time: 34_178_000 picoseconds.
-		Weight::from_parts(35_265_000, 0)
+		// Minimum execution time: 31_735_000 picoseconds.
+		Weight::from_parts(32_730_000, 0)
 			.saturating_add(Weight::from_parts(0, 6590))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -173,8 +169,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 90_000 picoseconds.
-		Weight::from_parts(121_000, 0)
+		// Minimum execution time: 87_000 picoseconds.
+		Weight::from_parts(110_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `System::ParentHash` (r:1 w:0)
@@ -186,7 +182,7 @@ impl<T: frame_system::Config> pallet_distance::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`)
 	/// Storage: `Balances::Holds` (r:1 w:1)
-	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(89), added: 2564, 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)
@@ -201,8 +197,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1062`
 		//  Estimated: `7002`
-		// Minimum execution time: 65_468_000 picoseconds.
-		Weight::from_parts(66_665_000, 0)
+		// Minimum execution time: 61_602_000 picoseconds.
+		Weight::from_parts(63_515_000, 0)
 			.saturating_add(Weight::from_parts(0, 7002))
 			.saturating_add(T::DbWeight::get().reads(10))
 			.saturating_add(T::DbWeight::get().writes(8))
@@ -214,7 +210,7 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// 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`)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(89), added: 2564, mode: `MaxEncodedLen`)
 	/// Storage: `System::Account` (r:2 w:2)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	/// Storage: `Distance::EvaluationBlock` (r:0 w:1)
@@ -223,8 +219,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `475`
 		//  Estimated: `6126`
-		// Minimum execution time: 41_904_000 picoseconds.
-		Weight::from_parts(43_199_000, 0)
+		// Minimum execution time: 41_612_000 picoseconds.
+		Weight::from_parts(43_127_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(6))
@@ -239,8 +235,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `136`
 		//  Estimated: `1621`
-		// Minimum execution time: 4_377_000 picoseconds.
-		Weight::from_parts(4_693_000, 0)
+		// Minimum execution time: 4_339_000 picoseconds.
+		Weight::from_parts(4_590_000, 0)
 			.saturating_add(Weight::from_parts(0, 1621))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -251,8 +247,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `157`
 		//  Estimated: `1642`
-		// Minimum execution time: 3_919_000 picoseconds.
-		Weight::from_parts(4_248_000, 0)
+		// Minimum execution time: 3_914_000 picoseconds.
+		Weight::from_parts(4_212_000, 0)
 			.saturating_add(Weight::from_parts(0, 1642))
 			.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
index 93a07cf65a36346deb70414bc6e17aceb941597b..3f4d9cd5cb418c678cd52d22a81426c426c51dcb 100644
--- a/runtime/gdev/src/weights/pallet_duniter_account.rs
+++ b/runtime/gdev/src/weights/pallet_duniter_account.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_duniter_account`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 4_201_000 picoseconds.
-		Weight::from_parts(4_489_000, 0)
+		// Minimum execution time: 4_307_000 picoseconds.
+		Weight::from_parts(4_532_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_identity.rs b/runtime/gdev/src/weights/pallet_identity.rs
index b42e2bfe2d2fbb7472e31fac3a841459fe64b073..bcb29a76cf39e391e061deba3db54df21d352585 100644
--- a/runtime/gdev/src/weights/pallet_identity.rs
+++ b/runtime/gdev/src/weights/pallet_identity.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_identity`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -73,8 +73,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1153`
 		//  Estimated: `7093`
-		// Minimum execution time: 74_883_000 picoseconds.
-		Weight::from_parts(76_913_000, 0)
+		// Minimum execution time: 74_576_000 picoseconds.
+		Weight::from_parts(76_469_000, 0)
 			.saturating_add(Weight::from_parts(0, 7093))
 			.saturating_add(T::DbWeight::get().reads(13))
 			.saturating_add(T::DbWeight::get().writes(12))
@@ -91,8 +91,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `784`
 		//  Estimated: `6724`
-		// Minimum execution time: 33_847_000 picoseconds.
-		Weight::from_parts(35_691_000, 0)
+		// Minimum execution time: 31_821_000 picoseconds.
+		Weight::from_parts(33_505_000, 0)
 			.saturating_add(Weight::from_parts(0, 6724))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -109,11 +109,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:  `964`
-		//  Estimated: `6904`
-		// Minimum execution time: 85_653_000 picoseconds.
-		Weight::from_parts(87_817_000, 0)
-			.saturating_add(Weight::from_parts(0, 6904))
+		//  Measured:  `936`
+		//  Estimated: `6876`
+		// Minimum execution time: 80_805_000 picoseconds.
+		Weight::from_parts(84_585_000, 0)
+			.saturating_add(Weight::from_parts(0, 6876))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(5))
 	}
@@ -129,21 +129,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:  `697`
-		//  Estimated: `6637`
-		// Minimum execution time: 70_095_000 picoseconds.
-		Weight::from_parts(71_457_000, 0)
-			.saturating_add(Weight::from_parts(0, 6637))
-			.saturating_add(T::DbWeight::get().reads(5))
-			.saturating_add(T::DbWeight::get().writes(5))
-	}
-	fn revoke_identity_legacy() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `697`
-		//  Estimated: `6637`
-		// Minimum execution time: 70_095_000 picoseconds.
-		Weight::from_parts(71_457_000, 0)
-			.saturating_add(Weight::from_parts(0, 6637))
+		//  Measured:  `673`
+		//  Estimated: `6613`
+		// Minimum execution time: 66_551_000 picoseconds.
+		Weight::from_parts(68_053_000, 0)
+			.saturating_add(Weight::from_parts(0, 6613))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(5))
 	}
@@ -154,11 +144,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_026_000 picoseconds.
-		Weight::from_parts(4_134_000, 0)
+		// Minimum execution time: 4_016_000 picoseconds.
+		Weight::from_parts(4_355_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_522
-			.saturating_add(Weight::from_parts(1_203_862, 0).saturating_mul(i.into()))
+			// Standard Error: 1_990
+			.saturating_add(Weight::from_parts(1_228_452, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes(1))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
@@ -168,8 +158,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `104`
 		//  Estimated: `3558`
-		// Minimum execution time: 7_211_000 picoseconds.
-		Weight::from_parts(7_534_000, 0)
+		// Minimum execution time: 7_463_000 picoseconds.
+		Weight::from_parts(7_953_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -182,11 +172,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: 53_282_000 picoseconds.
-		Weight::from_parts(55_526_000, 0)
-			.saturating_add(Weight::from_parts(0, 3868))
+		//  Measured:  `379`
+		//  Estimated: `3844`
+		// Minimum execution time: 51_695_000 picoseconds.
+		Weight::from_parts(53_039_000, 0)
+			.saturating_add(Weight::from_parts(0, 3844))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -194,8 +184,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 93_000 picoseconds.
-		Weight::from_parts(122_000, 0)
+		// Minimum execution time: 90_000 picoseconds.
+		Weight::from_parts(121_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Identity::Identities` (r:1 w:0)
@@ -204,8 +194,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `327`
 		//  Estimated: `3792`
-		// Minimum execution time: 4_944_000 picoseconds.
-		Weight::from_parts(5_504_000, 0)
+		// Minimum execution time: 4_865_000 picoseconds.
+		Weight::from_parts(5_170_000, 0)
 			.saturating_add(Weight::from_parts(0, 3792))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -241,11 +231,11 @@ 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:  `1874`
-		//  Estimated: `15239`
-		// Minimum execution time: 109_544_000 picoseconds.
-		Weight::from_parts(114_718_000, 0)
-			.saturating_add(Weight::from_parts(0, 15239))
+		//  Measured:  `1841`
+		//  Estimated: `15206`
+		// Minimum execution time: 103_189_000 picoseconds.
+		Weight::from_parts(107_250_000, 0)
+			.saturating_add(Weight::from_parts(0, 15206))
 			.saturating_add(T::DbWeight::get().reads(18))
 			.saturating_add(T::DbWeight::get().writes(21))
 	}
@@ -255,8 +245,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `327`
 		//  Estimated: `3792`
-		// Minimum execution time: 5_122_000 picoseconds.
-		Weight::from_parts(5_538_000, 0)
+		// Minimum execution time: 4_637_000 picoseconds.
+		Weight::from_parts(5_088_000, 0)
 			.saturating_add(Weight::from_parts(0, 3792))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -286,7 +276,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:6 w:6)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:5 w:5)
 	/// 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`)
@@ -298,13 +288,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:  `2433`
-		//  Estimated: `18273`
-		// Minimum execution time: 156_609_000 picoseconds.
-		Weight::from_parts(159_518_000, 0)
-			.saturating_add(Weight::from_parts(0, 18273))
-			.saturating_add(T::DbWeight::get().reads(25))
-			.saturating_add(T::DbWeight::get().writes(30))
+		//  Measured:  `2400`
+		//  Estimated: `15765`
+		// Minimum execution time: 144_575_000 picoseconds.
+		Weight::from_parts(151_054_000, 0)
+			.saturating_add(Weight::from_parts(0, 15765))
+			.saturating_add(T::DbWeight::get().reads(24))
+			.saturating_add(T::DbWeight::get().writes(29))
 	}
 	/// Storage: `Membership::Membership` (r:1 w:1)
 	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -334,7 +324,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:6 w:6)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:5 w:5)
 	/// 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`)
@@ -344,13 +334,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:  `2426`
-		//  Estimated: `18266`
-		// Minimum execution time: 150_300_000 picoseconds.
-		Weight::from_parts(156_007_000, 0)
-			.saturating_add(Weight::from_parts(0, 18266))
-			.saturating_add(T::DbWeight::get().reads(26))
-			.saturating_add(T::DbWeight::get().writes(28))
+		//  Measured:  `2393`
+		//  Estimated: `15758`
+		// Minimum execution time: 139_758_000 picoseconds.
+		Weight::from_parts(144_021_000, 0)
+			.saturating_add(Weight::from_parts(0, 15758))
+			.saturating_add(T::DbWeight::get().reads(25))
+			.saturating_add(T::DbWeight::get().writes(27))
 	}
 	/// Storage: `Identity::Identities` (r:1 w:1)
 	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -360,8 +350,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `407`
 		//  Estimated: `6347`
-		// Minimum execution time: 16_757_000 picoseconds.
-		Weight::from_parts(17_538_000, 0)
+		// Minimum execution time: 15_592_000 picoseconds.
+		Weight::from_parts(16_929_000, 0)
 			.saturating_add(Weight::from_parts(0, 6347))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -372,8 +362,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `108`
 		//  Estimated: `3573`
-		// Minimum execution time: 2_751_000 picoseconds.
-		Weight::from_parts(2_919_000, 0)
+		// Minimum execution time: 2_792_000 picoseconds.
+		Weight::from_parts(2_912_000, 0)
 			.saturating_add(Weight::from_parts(0, 3573))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -385,8 +375,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `325`
 		//  Estimated: `3790`
-		// Minimum execution time: 7_669_000 picoseconds.
-		Weight::from_parts(7_936_000, 0)
+		// Minimum execution time: 7_711_000 picoseconds.
+		Weight::from_parts(8_022_000, 0)
 			.saturating_add(Weight::from_parts(0, 3790))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -411,10 +401,30 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `915`
 		//  Estimated: `4380`
-		// Minimum execution time: 36_670_000 picoseconds.
-		Weight::from_parts(38_294_000, 0)
+		// Minimum execution time: 36_567_000 picoseconds.
+		Weight::from_parts(37_661_000, 0)
 			.saturating_add(Weight::from_parts(0, 4380))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(7))
 	}
+	/// Storage: `Identity::IdentitiesNames` (r:1 w:0)
+	/// Proof: `Identity::IdentitiesNames` (`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: `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_legacy() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `823`
+		//  Estimated: `6763`
+		// Minimum execution time: 131_539_000 picoseconds.
+		Weight::from_parts(137_406_000, 0)
+			.saturating_add(Weight::from_parts(0, 6763))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
 }
diff --git a/runtime/gdev/src/weights/pallet_im_online.rs b/runtime/gdev/src/weights/pallet_im_online.rs
index 6ceb3a37d3b1d79ee4d9a2d1fc291ca2b965e829..22b6e4e7fbfd04e9a70bf10c593e9da1c43b1f7a 100644
--- a/runtime/gdev/src/weights/pallet_im_online.rs
+++ b/runtime/gdev/src/weights/pallet_im_online.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_im_online`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -64,11 +64,11 @@ impl<T: frame_system::Config> pallet_im_online::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `636 + k * (32 ±0)`
 		//  Estimated: `33487 + k * (1761 ±0)`
-		// Minimum execution time: 57_925_000 picoseconds.
-		Weight::from_parts(68_829_380, 0)
+		// Minimum execution time: 55_259_000 picoseconds.
+		Weight::from_parts(66_675_104, 0)
 			.saturating_add(Weight::from_parts(0, 33487))
-			// Standard Error: 511
-			.saturating_add(Weight::from_parts(42_097, 0).saturating_mul(k.into()))
+			// Standard Error: 535
+			.saturating_add(Weight::from_parts(43_488, 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
index 65ecfe1fbfc04fede4f98472a307a5d8a52ba176..e145d220a57872b061a38909bb49f1d5ed09c9af 100644
--- a/runtime/gdev/src/weights/pallet_membership.rs
+++ b/runtime/gdev/src/weights/pallet_membership.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_membership`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 92_000 picoseconds.
-		Weight::from_parts(134_000, 0)
+		// Minimum execution time: 89_000 picoseconds.
+		Weight::from_parts(114_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Membership::MembershipsExpireOn` (r:2 w:1)
@@ -86,13 +86,13 @@ 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:  `139 + i * (964 ±0)`
-		//  Estimated: `15003 + i * (2695 ±1)`
-		// Minimum execution time: 5_291_000 picoseconds.
-		Weight::from_parts(14_481_254, 0)
-			.saturating_add(Weight::from_parts(0, 15003))
-			// Standard Error: 621_173
-			.saturating_add(Weight::from_parts(75_965_540, 0).saturating_mul(i.into()))
+		//  Measured:  `139 + i * (948 ±0)`
+		//  Estimated: `14969 + i * (2695 ±1)`
+		// Minimum execution time: 5_129_000 picoseconds.
+		Weight::from_parts(13_219_960, 0)
+			.saturating_add(Weight::from_parts(0, 14969))
+			// Standard Error: 548_425
+			.saturating_add(Weight::from_parts(76_556_811, 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))
diff --git a/runtime/gdev/src/weights/pallet_multisig.rs b/runtime/gdev/src/weights/pallet_multisig.rs
index 46e943144efb1d6561ddafe212eece485178c965..8e5f050b53de4d0f919fbe8eaed353fc7620d8f0 100644
--- a/runtime/gdev/src/weights/pallet_multisig.rs
+++ b/runtime/gdev/src/weights/pallet_multisig.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_multisig`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 5_396_000 picoseconds.
-		Weight::from_parts(5_623_779, 0)
+		// Minimum execution time: 5_506_000 picoseconds.
+		Weight::from_parts(5_701_498, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(333, 0).saturating_mul(z.into()))
+			.saturating_add(Weight::from_parts(329, 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: 26_997_000 picoseconds.
-		Weight::from_parts(26_773_838, 0)
+		// Minimum execution time: 25_853_000 picoseconds.
+		Weight::from_parts(25_225_087, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 6_870
-			.saturating_add(Weight::from_parts(183_324, 0).saturating_mul(s.into()))
+			// Standard Error: 5_945
+			.saturating_add(Weight::from_parts(177_177, 0).saturating_mul(s.into()))
 			// Standard Error: 5
-			.saturating_add(Weight::from_parts(1_065, 0).saturating_mul(z.into()))
+			.saturating_add(Weight::from_parts(1_186, 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: 14_928_000 picoseconds.
-		Weight::from_parts(15_130_376, 0)
+		// Minimum execution time: 14_911_000 picoseconds.
+		Weight::from_parts(14_454_223, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 16_514
-			.saturating_add(Weight::from_parts(129_475, 0).saturating_mul(s.into()))
-			// Standard Error: 12
-			.saturating_add(Weight::from_parts(1_047, 0).saturating_mul(z.into()))
+			// Standard Error: 4_014
+			.saturating_add(Weight::from_parts(135_672, 0).saturating_mul(s.into()))
+			// Standard Error: 3
+			.saturating_add(Weight::from_parts(1_182, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -104,58 +104,65 @@ 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: 29_450_000 picoseconds.
-		Weight::from_parts(29_552_613, 0)
+		// Minimum execution time: 28_341_000 picoseconds.
+		Weight::from_parts(27_994_989, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 6_111
-			.saturating_add(Weight::from_parts(140_936, 0).saturating_mul(s.into()))
+			// Standard Error: 6_349
+			.saturating_add(Weight::from_parts(142_210, 0).saturating_mul(s.into()))
 			// Standard Error: 5
-			.saturating_add(Weight::from_parts(1_092, 0).saturating_mul(z.into()))
+			.saturating_add(Weight::from_parts(1_178, 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 {
+	/// The range of component `z` is `[0, 10000]`.
+	fn approve_as_multi_create(s: u32, _z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `130 + s * (5 ±0)`
+		//  Measured:  `125 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 24_939_000 picoseconds.
-		Weight::from_parts(26_105_489, 0)
+		// Minimum execution time: 23_483_000 picoseconds.
+		Weight::from_parts(24_952_296, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_762
-			.saturating_add(Weight::from_parts(152_946, 0).saturating_mul(s.into()))
+			// Standard Error: 5_534
+			.saturating_add(Weight::from_parts(113_991, 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 {
+	/// The range of component `z` is `[0, 10000]`.
+	fn approve_as_multi_approve(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `240`
 		//  Estimated: `3922`
-		// Minimum execution time: 13_390_000 picoseconds.
-		Weight::from_parts(14_151_697, 0)
+		// Minimum execution time: 13_311_000 picoseconds.
+		Weight::from_parts(13_758_567, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 3_383
-			.saturating_add(Weight::from_parts(131_761, 0).saturating_mul(s.into()))
+			// Standard Error: 3_248
+			.saturating_add(Weight::from_parts(116_307, 0).saturating_mul(s.into()))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(13, 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 `[2, 10]`.
-	fn cancel_as_multi(s: u32, ) -> Weight {
+	/// The range of component `z` is `[0, 10000]`.
+	fn cancel_as_multi(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `328 + s * (5 ±0)`
+		//  Measured:  `323 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 25_586_000 picoseconds.
-		Weight::from_parts(27_011_290, 0)
+		// Minimum execution time: 24_173_000 picoseconds.
+		Weight::from_parts(25_074_971, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_695
-			.saturating_add(Weight::from_parts(154_316, 0).saturating_mul(s.into()))
+			// Standard Error: 4_814
+			.saturating_add(Weight::from_parts(143_700, 0).saturating_mul(s.into()))
+			// Standard Error: 4
+			.saturating_add(Weight::from_parts(4, 0).saturating_mul(z.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
index 32ac3a66850a0fee1cd6472ad5cca4182cf907c1..f0cf897a7370252761fd5613ff747b87e2cad09f 100644
--- a/runtime/gdev/src/weights/pallet_oneshot_account.rs
+++ b/runtime/gdev/src/weights/pallet_oneshot_account.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_oneshot_account`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 21_295_000 picoseconds.
-		Weight::from_parts(22_329_000, 0)
+		// Minimum execution time: 21_680_000 picoseconds.
+		Weight::from_parts(22_713_000, 0)
 			.saturating_add(Weight::from_parts(0, 3507))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -67,11 +67,11 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 	/// 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: 30_393_000 picoseconds.
-		Weight::from_parts(31_667_000, 0)
-			.saturating_add(Weight::from_parts(0, 3706))
+		//  Measured:  `217`
+		//  Estimated: `3682`
+		// Minimum execution time: 27_526_000 picoseconds.
+		Weight::from_parts(28_813_000, 0)
+			.saturating_add(Weight::from_parts(0, 3682))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -83,10 +83,10 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 	/// 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`
+		//  Measured:  `277`
 		//  Estimated: `6126`
-		// Minimum execution time: 44_652_000 picoseconds.
-		Weight::from_parts(46_144_000, 0)
+		// Minimum execution time: 40_479_000 picoseconds.
+		Weight::from_parts(42_055_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/gdev/src/weights/pallet_preimage.rs b/runtime/gdev/src/weights/pallet_preimage.rs
index 9bb623ab01ac3c3ecf214f0cc7b221648bdeef57..3bf35076f4b46db47119ea391927449d03c5fe9f 100644
--- a/runtime/gdev/src/weights/pallet_preimage.rs
+++ b/runtime/gdev/src/weights/pallet_preimage.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_preimage`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -56,13 +56,13 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 4194304]`.
 	fn note_preimage(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `42`
+		//  Measured:  `4`
 		//  Estimated: `3548`
-		// Minimum execution time: 12_318_000 picoseconds.
-		Weight::from_parts(12_671_000, 0)
+		// Minimum execution time: 11_194_000 picoseconds.
+		Weight::from_parts(11_607_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_273, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_278, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -75,13 +75,13 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 4194304]`.
 	fn note_requested_preimage(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `106`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 15_487_000 picoseconds.
-		Weight::from_parts(15_753_000, 0)
+		// Minimum execution time: 14_050_000 picoseconds.
+		Weight::from_parts(14_538_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_275, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_277, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -94,13 +94,13 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 4194304]`.
 	fn note_no_deposit_preimage(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `106`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 13_320_000 picoseconds.
-		Weight::from_parts(13_857_000, 0)
+		// Minimum execution time: 12_563_000 picoseconds.
+		Weight::from_parts(12_951_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_354, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_359, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -112,10 +112,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `134`
 		//  Estimated: `3548`
-		// Minimum execution time: 21_740_000 picoseconds.
-		Weight::from_parts(23_847_000, 0)
+		// Minimum execution time: 20_248_000 picoseconds.
+		Weight::from_parts(21_940_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -128,10 +128,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 21_736_000 picoseconds.
-		Weight::from_parts(24_224_000, 0)
+		// Minimum execution time: 21_065_000 picoseconds.
+		Weight::from_parts(23_146_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -142,10 +142,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `134`
 		//  Estimated: `3548`
-		// Minimum execution time: 19_972_000 picoseconds.
-		Weight::from_parts(21_350_000, 0)
+		// Minimum execution time: 18_721_000 picoseconds.
+		Weight::from_parts(19_939_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -156,10 +156,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 13_084_000 picoseconds.
-		Weight::from_parts(14_779_000, 0)
+		// Minimum execution time: 12_874_000 picoseconds.
+		Weight::from_parts(13_758_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -170,10 +170,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `4`
 		//  Estimated: `3548`
-		// Minimum execution time: 11_191_000 picoseconds.
-		Weight::from_parts(12_377_000, 0)
+		// Minimum execution time: 9_930_000 picoseconds.
+		Weight::from_parts(11_095_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -184,10 +184,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 8_595_000 picoseconds.
-		Weight::from_parts(9_097_000, 0)
+		// Minimum execution time: 7_985_000 picoseconds.
+		Weight::from_parts(8_841_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -200,10 +200,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 20_225_000 picoseconds.
-		Weight::from_parts(21_820_000, 0)
+		// Minimum execution time: 19_542_000 picoseconds.
+		Weight::from_parts(21_141_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -214,10 +214,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 8_694_000 picoseconds.
-		Weight::from_parts(9_454_000, 0)
+		// Minimum execution time: 8_077_000 picoseconds.
+		Weight::from_parts(8_630_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -228,10 +228,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 8_925_000 picoseconds.
-		Weight::from_parts(9_566_000, 0)
+		// Minimum execution time: 8_165_000 picoseconds.
+		Weight::from_parts(8_469_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: 19_791_000 picoseconds.
-		Weight::from_parts(20_108_000, 0)
+		// Minimum execution time: 17_598_000 picoseconds.
+		Weight::from_parts(18_031_000, 0)
 			.saturating_add(Weight::from_parts(0, 990))
-			// Standard Error: 17_300
-			.saturating_add(Weight::from_parts(14_844_340, 0).saturating_mul(n.into()))
+			// Standard Error: 16_856
+			.saturating_add(Weight::from_parts(14_805_401, 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
index 0c2b9a639e5e96c187d08ba6b2def241de3e212a..a48c417eea3507e7a572fbeffda902af8f17794f 100644
--- a/runtime/gdev/src/weights/pallet_provide_randomness.rs
+++ b/runtime/gdev/src/weights/pallet_provide_randomness.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_provide_randomness`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 44_575_000 picoseconds.
-		Weight::from_parts(47_011_000, 0)
+		// Minimum execution time: 42_076_000 picoseconds.
+		Weight::from_parts(43_495_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: 20_874_000 picoseconds.
-		Weight::from_parts(19_045_479, 0)
+		// Minimum execution time: 17_883_000 picoseconds.
+		Weight::from_parts(17_853_913, 0)
 			.saturating_add(Weight::from_parts(0, 1827))
-			// Standard Error: 7_105
-			.saturating_add(Weight::from_parts(5_453_140, 0).saturating_mul(i.into()))
+			// Standard Error: 4_614
+			.saturating_add(Weight::from_parts(5_513_242, 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: 22_278_000 picoseconds.
-		Weight::from_parts(19_797_191, 0)
+		// Minimum execution time: 20_291_000 picoseconds.
+		Weight::from_parts(18_256_563, 0)
 			.saturating_add(Weight::from_parts(0, 3817))
-			// Standard Error: 7_776
-			.saturating_add(Weight::from_parts(5_818_616, 0).saturating_mul(i.into()))
+			// Standard Error: 7_669
+			.saturating_add(Weight::from_parts(5_893_603, 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/gdev/src/weights/pallet_proxy.rs b/runtime/gdev/src/weights/pallet_proxy.rs
index fb8ebbc053221870cf487630fcd0bb5adb9d1f41..5ab8e184d906dfd7313c0ec6f74cbcd521fbfca3 100644
--- a/runtime/gdev/src/weights/pallet_proxy.rs
+++ b/runtime/gdev/src/weights/pallet_proxy.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_proxy`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 13_770_000 picoseconds.
-		Weight::from_parts(14_738_500, 0)
+		// Minimum execution time: 12_484_000 picoseconds.
+		Weight::from_parts(13_232_490, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_456
-			.saturating_add(Weight::from_parts(28_918, 0).saturating_mul(p.into()))
+			// Standard Error: 1_396
+			.saturating_add(Weight::from_parts(32_074, 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: 32_466_000 picoseconds.
-		Weight::from_parts(32_848_501, 0)
+		// Minimum execution time: 32_776_000 picoseconds.
+		Weight::from_parts(32_523_433, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 2_267
-			.saturating_add(Weight::from_parts(119_635, 0).saturating_mul(a.into()))
-			// Standard Error: 2_342
-			.saturating_add(Weight::from_parts(50_345, 0).saturating_mul(p.into()))
+			// Standard Error: 2_021
+			.saturating_add(Weight::from_parts(149_951, 0).saturating_mul(a.into()))
+			// Standard Error: 2_088
+			.saturating_add(Weight::from_parts(39_110, 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: 22_317_000 picoseconds.
-		Weight::from_parts(22_877_072, 0)
+		// Minimum execution time: 20_355_000 picoseconds.
+		Weight::from_parts(20_928_430, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_686
-			.saturating_add(Weight::from_parts(135_993, 0).saturating_mul(a.into()))
-			// Standard Error: 1_742
-			.saturating_add(Weight::from_parts(4_969, 0).saturating_mul(p.into()))
+			// Standard Error: 1_500
+			.saturating_add(Weight::from_parts(151_831, 0).saturating_mul(a.into()))
+			// Standard Error: 1_550
+			.saturating_add(Weight::from_parts(7_288, 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: 21_963_000 picoseconds.
-		Weight::from_parts(22_871_897, 0)
+		// Minimum execution time: 20_280_000 picoseconds.
+		Weight::from_parts(20_856_473, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_832
-			.saturating_add(Weight::from_parts(129_560, 0).saturating_mul(a.into()))
-			// Standard Error: 1_893
-			.saturating_add(Weight::from_parts(2_625, 0).saturating_mul(p.into()))
+			// Standard Error: 1_529
+			.saturating_add(Weight::from_parts(152_620, 0).saturating_mul(a.into()))
+			// Standard Error: 1_580
+			.saturating_add(Weight::from_parts(8_879, 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: 29_737_000 picoseconds.
-		Weight::from_parts(29_740_954, 0)
+		// Minimum execution time: 27_438_000 picoseconds.
+		Weight::from_parts(29_938_929, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_918
-			.saturating_add(Weight::from_parts(125_550, 0).saturating_mul(a.into()))
-			// Standard Error: 1_982
-			.saturating_add(Weight::from_parts(39_824, 0).saturating_mul(p.into()))
+			// Standard Error: 2_158
+			.saturating_add(Weight::from_parts(139_207, 0).saturating_mul(a.into()))
+			// Standard Error: 2_230
+			.saturating_add(Weight::from_parts(40_223, 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: 21_180_000 picoseconds.
-		Weight::from_parts(22_215_284, 0)
+		// Minimum execution time: 19_382_000 picoseconds.
+		Weight::from_parts(20_702_268, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_824
-			.saturating_add(Weight::from_parts(30_745, 0).saturating_mul(p.into()))
+			// Standard Error: 2_013
+			.saturating_add(Weight::from_parts(30_874, 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: 20_959_000 picoseconds.
-		Weight::from_parts(21_872_797, 0)
+		// Minimum execution time: 19_528_000 picoseconds.
+		Weight::from_parts(20_602_835, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_574
-			.saturating_add(Weight::from_parts(46_005, 0).saturating_mul(p.into()))
+			// Standard Error: 1_589
+			.saturating_add(Weight::from_parts(45_702, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -182,24 +182,26 @@ 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: 19_114_000 picoseconds.
-		Weight::from_parts(20_199_043, 0)
+		// Minimum execution time: 17_879_000 picoseconds.
+		Weight::from_parts(18_870_910, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_422
-			.saturating_add(Weight::from_parts(28_009, 0).saturating_mul(p.into()))
+			// Standard Error: 1_320
+			.saturating_add(Weight::from_parts(29_602, 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 {
+	fn create_pure(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `177`
 		//  Estimated: `4698`
-		// Minimum execution time: 22_060_000 picoseconds.
-		Weight::from_parts(23_628_371, 0)
+		// Minimum execution time: 20_362_000 picoseconds.
+		Weight::from_parts(21_690_825, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 1_342
+			.saturating_add(Weight::from_parts(1_243, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -210,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: 19_566_000 picoseconds.
-		Weight::from_parts(20_932_812, 0)
+		// Minimum execution time: 18_050_000 picoseconds.
+		Weight::from_parts(19_218_794, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_650
-			.saturating_add(Weight::from_parts(26_740, 0).saturating_mul(p.into()))
+			// Standard Error: 1_507
+			.saturating_add(Weight::from_parts(46_562, 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
index 18e1a48f20e5c17e0eb2b73ed3f63ecf5b0d53fc..5259610f99d94c67d6a5c6503eac9f91706e588b 100644
--- a/runtime/gdev/src/weights/pallet_quota.rs
+++ b/runtime/gdev/src/weights/pallet_quota.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_quota`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -53,8 +53,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `11288`
 		//  Estimated: `12751`
-		// Minimum execution time: 8_844_000 picoseconds.
-		Weight::from_parts(9_252_000, 0)
+		// Minimum execution time: 8_580_000 picoseconds.
+		Weight::from_parts(9_093_000, 0)
 			.saturating_add(Weight::from_parts(0, 12751))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -65,8 +65,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `172`
 		//  Estimated: `3489`
-		// Minimum execution time: 6_358_000 picoseconds.
-		Weight::from_parts(6_625_000, 0)
+		// Minimum execution time: 6_319_000 picoseconds.
+		Weight::from_parts(6_633_000, 0)
 			.saturating_add(Weight::from_parts(0, 3489))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -79,8 +79,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `235`
 		//  Estimated: `6126`
-		// Minimum execution time: 25_563_000 picoseconds.
-		Weight::from_parts(26_725_000, 0)
+		// Minimum execution time: 25_932_000 picoseconds.
+		Weight::from_parts(26_479_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -93,8 +93,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `235`
 		//  Estimated: `6126`
-		// Minimum execution time: 25_827_000 picoseconds.
-		Weight::from_parts(26_695_000, 0)
+		// Minimum execution time: 25_508_000 picoseconds.
+		Weight::from_parts(26_559_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -105,8 +105,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `43`
 		//  Estimated: `12751`
-		// Minimum execution time: 2_460_000 picoseconds.
-		Weight::from_parts(2_643_000, 0)
+		// Minimum execution time: 2_538_000 picoseconds.
+		Weight::from_parts(2_731_000, 0)
 			.saturating_add(Weight::from_parts(0, 12751))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -122,11 +122,11 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `260 + i * (44 ±0)`
 		//  Estimated: `12751`
-		// Minimum execution time: 29_618_000 picoseconds.
-		Weight::from_parts(44_430_771, 0)
+		// Minimum execution time: 27_660_000 picoseconds.
+		Weight::from_parts(41_942_219, 0)
 			.saturating_add(Weight::from_parts(0, 12751))
-			// Standard Error: 1_578
-			.saturating_add(Weight::from_parts(1_241_604, 0).saturating_mul(i.into()))
+			// Standard Error: 1_688
+			.saturating_add(Weight::from_parts(1_293_110, 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
index f8e6394235e4731fd36df8dd89bc33ab7b2da798..cc7e7fff8e320134086849935089b2e1eba086f7 100644
--- a/runtime/gdev/src/weights/pallet_scheduler.rs
+++ b/runtime/gdev/src/weights/pallet_scheduler.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_scheduler`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -51,10 +51,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `31`
 		//  Estimated: `1489`
 		// Minimum execution time: 3_162_000 picoseconds.
-		Weight::from_parts(3_403_000, 0)
+		Weight::from_parts(3_372_000, 0)
 			.saturating_add(Weight::from_parts(0, 1489))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -64,13 +64,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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)`
+		//  Measured:  `78 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 3_124_000 picoseconds.
-		Weight::from_parts(6_689_137, 0)
+		// Minimum execution time: 3_260_000 picoseconds.
+		Weight::from_parts(6_745_431, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_824
-			.saturating_add(Weight::from_parts(265_025, 0).saturating_mul(s.into()))
+			// Standard Error: 1_899
+			.saturating_add(Weight::from_parts(298_644, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -78,8 +78,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_671_000 picoseconds.
-		Weight::from_parts(2_908_000, 0)
+		// Minimum execution time: 2_893_000 picoseconds.
+		Weight::from_parts(3_103_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Preimage::PreimageFor` (r:1 w:1)
@@ -91,13 +91,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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)`
+		//  Measured:  `141 + s * (1 ±0)`
 		//  Estimated: `4197809`
-		// Minimum execution time: 16_303_000 picoseconds.
-		Weight::from_parts(16_934_000, 0)
+		// Minimum execution time: 16_131_000 picoseconds.
+		Weight::from_parts(16_663_000, 0)
 			.saturating_add(Weight::from_parts(0, 4197809))
 			// Standard Error: 2
-			.saturating_add(Weight::from_parts(880, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(877, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -107,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: 4_048_000 picoseconds.
-		Weight::from_parts(4_258_000, 0)
+		// Minimum execution time: 4_200_000 picoseconds.
+		Weight::from_parts(4_495_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -116,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_719_000 picoseconds.
-		Weight::from_parts(2_909_000, 0)
+		// Minimum execution time: 2_766_000 picoseconds.
+		Weight::from_parts(2_979_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_761_000 picoseconds.
-		Weight::from_parts(1_923_000, 0)
+		// Minimum execution time: 1_917_000 picoseconds.
+		Weight::from_parts(2_139_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_840_000 picoseconds.
-		Weight::from_parts(1_942_000, 0)
+		// Minimum execution time: 1_925_000 picoseconds.
+		Weight::from_parts(2_060_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Scheduler::Agenda` (r:1 w:1)
@@ -141,13 +141,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 49]`.
 	fn schedule(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `77 + s * (177 ±0)`
+		//  Measured:  `78 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 8_558_000 picoseconds.
-		Weight::from_parts(12_732_074, 0)
+		// Minimum execution time: 8_898_000 picoseconds.
+		Weight::from_parts(12_092_492, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 3_010
-			.saturating_add(Weight::from_parts(268_942, 0).saturating_mul(s.into()))
+			// Standard Error: 1_801
+			.saturating_add(Weight::from_parts(314_018, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -160,13 +160,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[1, 50]`.
 	fn cancel(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `77 + s * (177 ±0)`
+		//  Measured:  `78 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 13_871_000 picoseconds.
-		Weight::from_parts(14_876_912, 0)
+		// Minimum execution time: 13_473_000 picoseconds.
+		Weight::from_parts(14_552_201, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_746
-			.saturating_add(Weight::from_parts(417_942, 0).saturating_mul(s.into()))
+			// Standard Error: 1_615
+			.saturating_add(Weight::from_parts(501_240, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -177,13 +177,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 49]`.
 	fn schedule_named(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `254 + s * (185 ±0)`
+		//  Measured:  `255 + s * (185 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 11_493_000 picoseconds.
-		Weight::from_parts(16_883_559, 0)
+		// Minimum execution time: 11_592_000 picoseconds.
+		Weight::from_parts(16_434_186, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 4_280
-			.saturating_add(Weight::from_parts(331_178, 0).saturating_mul(s.into()))
+			// Standard Error: 3_124
+			.saturating_add(Weight::from_parts(344_014, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -196,13 +196,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[1, 50]`.
 	fn cancel_named(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `280 + s * (185 ±0)`
+		//  Measured:  `281 + s * (185 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 15_677_000 picoseconds.
-		Weight::from_parts(19_002_832, 0)
+		// Minimum execution time: 15_768_000 picoseconds.
+		Weight::from_parts(17_372_599, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 2_530
-			.saturating_add(Weight::from_parts(453_797, 0).saturating_mul(s.into()))
+			// Standard Error: 2_081
+			.saturating_add(Weight::from_parts(539_564, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -213,13 +213,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[1, 50]`.
 	fn schedule_retry(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `117`
+		//  Measured:  `118`
 		//  Estimated: `13928`
-		// Minimum execution time: 8_468_000 picoseconds.
-		Weight::from_parts(9_150_074, 0)
+		// Minimum execution time: 8_448_000 picoseconds.
+		Weight::from_parts(9_289_693, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 514
-			.saturating_add(Weight::from_parts(25_549, 0).saturating_mul(s.into()))
+			// Standard Error: 488
+			.saturating_add(Weight::from_parts(21_370, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -229,10 +229,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `8928`
 		//  Estimated: `13928`
-		// Minimum execution time: 20_462_000 picoseconds.
-		Weight::from_parts(21_510_000, 0)
+		// Minimum execution time: 22_257_000 picoseconds.
+		Weight::from_parts(23_163_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -245,10 +245,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `9606`
 		//  Estimated: `13928`
-		// Minimum execution time: 27_795_000 picoseconds.
-		Weight::from_parts(28_824_000, 0)
+		// Minimum execution time: 28_395_000 picoseconds.
+		Weight::from_parts(29_448_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -259,10 +259,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `8940`
 		//  Estimated: `13928`
-		// Minimum execution time: 19_959_000 picoseconds.
-		Weight::from_parts(20_448_000, 0)
+		// Minimum execution time: 21_017_000 picoseconds.
+		Weight::from_parts(22_130_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -275,10 +275,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `9618`
 		//  Estimated: `13928`
-		// Minimum execution time: 26_532_000 picoseconds.
-		Weight::from_parts(27_482_000, 0)
+		// Minimum execution time: 26_945_000 picoseconds.
+		Weight::from_parts(28_036_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
index 4496a206c712818b22abdd1a43d98e4a2cb16b62..a6b4f2dd43c64092910c1509b745436b4b2be97a 100644
--- a/runtime/gdev/src/weights/pallet_session.rs
+++ b/runtime/gdev/src/weights/pallet_session.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_session`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -55,8 +55,8 @@ impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `811`
 		//  Estimated: `11701`
-		// Minimum execution time: 29_028_000 picoseconds.
-		Weight::from_parts(30_439_000, 0)
+		// Minimum execution time: 25_427_000 picoseconds.
+		Weight::from_parts(26_403_000, 0)
 			.saturating_add(Weight::from_parts(0, 11701))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(5))
@@ -69,8 +69,8 @@ impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `478`
 		//  Estimated: `3943`
-		// Minimum execution time: 17_154_000 picoseconds.
-		Weight::from_parts(17_837_000, 0)
+		// Minimum execution time: 15_272_000 picoseconds.
+		Weight::from_parts(15_827_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/gdev/src/weights/pallet_smith_members.rs b/runtime/gdev/src/weights/pallet_smith_members.rs
index 7353ba23046503690268b234e6ae339e0e3bb82e..6d3cb563b5244e8bc0b989438712b41b23aee642 100644
--- a/runtime/gdev/src/weights/pallet_smith_members.rs
+++ b/runtime/gdev/src/weights/pallet_smith_members.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_smith_members`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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:  `912`
-		//  Estimated: `6852`
-		// Minimum execution time: 35_593_000 picoseconds.
-		Weight::from_parts(36_660_000, 0)
-			.saturating_add(Weight::from_parts(0, 6852))
+		//  Measured:  `859`
+		//  Estimated: `6799`
+		// Minimum execution time: 33_261_000 picoseconds.
+		Weight::from_parts(35_800_000, 0)
+			.saturating_add(Weight::from_parts(0, 6799))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -77,8 +77,8 @@ impl<T: frame_system::Config> pallet_smith_members::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `566`
 		//  Estimated: `4031`
-		// Minimum execution time: 18_567_000 picoseconds.
-		Weight::from_parts(19_297_000, 0)
+		// Minimum execution time: 16_752_000 picoseconds.
+		Weight::from_parts(17_731_000, 0)
 			.saturating_add(Weight::from_parts(0, 4031))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -95,11 +95,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 certify_smith() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `722`
-		//  Estimated: `6662`
-		// Minimum execution time: 31_100_000 picoseconds.
-		Weight::from_parts(32_379_000, 0)
-			.saturating_add(Weight::from_parts(0, 6662))
+		//  Measured:  `702`
+		//  Estimated: `6642`
+		// Minimum execution time: 30_848_000 picoseconds.
+		Weight::from_parts(32_753_000, 0)
+			.saturating_add(Weight::from_parts(0, 6642))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -121,11 +121,11 @@ 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:  `1205`
-		//  Estimated: `14570`
-		// Minimum execution time: 67_548_000 picoseconds.
-		Weight::from_parts(75_861_000, 0)
-			.saturating_add(Weight::from_parts(0, 14570))
+		//  Measured:  `1172`
+		//  Estimated: `14537`
+		// Minimum execution time: 65_984_000 picoseconds.
+		Weight::from_parts(68_428_000, 0)
+			.saturating_add(Weight::from_parts(0, 14537))
 			.saturating_add(T::DbWeight::get().reads(11))
 			.saturating_add(T::DbWeight::get().writes(15))
 	}
@@ -133,11 +133,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 on_removed_wot_member_empty() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `253`
-		//  Estimated: `3718`
-		// Minimum execution time: 3_721_000 picoseconds.
-		Weight::from_parts(4_227_000, 0)
-			.saturating_add(Weight::from_parts(0, 3718))
+		//  Measured:  `220`
+		//  Estimated: `3685`
+		// Minimum execution time: 3_936_000 picoseconds.
+		Weight::from_parts(4_132_000, 0)
+			.saturating_add(Weight::from_parts(0, 3685))
 			.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
index b00be628e27adcc96523dc8aaee2a07b64680653..9acb4a1decf99de9d6f2eb9d74de172ef7179f57 100644
--- a/runtime/gdev/src/weights/pallet_sudo.rs
+++ b/runtime/gdev/src/weights/pallet_sudo.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_sudo`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 8_437_000 picoseconds.
-		Weight::from_parts(8_831_000, 0)
+		// Minimum execution time: 8_486_000 picoseconds.
+		Weight::from_parts(8_930_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: 9_036_000 picoseconds.
-		Weight::from_parts(9_449_000, 0)
+		// Minimum execution time: 9_087_000 picoseconds.
+		Weight::from_parts(9_430_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: 9_073_000 picoseconds.
-		Weight::from_parts(9_526_000, 0)
+		// Minimum execution time: 8_928_000 picoseconds.
+		Weight::from_parts(9_213_000, 0)
 			.saturating_add(Weight::from_parts(0, 1517))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -87,10 +87,21 @@ impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `165`
 		//  Estimated: `1517`
-		// Minimum execution time: 7_809_000 picoseconds.
-		Weight::from_parts(8_282_000, 0)
+		// Minimum execution time: 7_877_000 picoseconds.
+		Weight::from_parts(8_205_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 check_only_sudo_account() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `165`
+		//  Estimated: `1517`
+		// Minimum execution time: 3_204_000 picoseconds.
+		Weight::from_parts(3_395_000, 0)
+			.saturating_add(Weight::from_parts(0, 1517))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
 }
diff --git a/runtime/gdev/src/weights/pallet_timestamp.rs b/runtime/gdev/src/weights/pallet_timestamp.rs
index 5798f1da245ee263a94863b2752868ae47c10522..bfae62180f7eefe174331c6a5a8573a1648495fa 100644
--- a/runtime/gdev/src/weights/pallet_timestamp.rs
+++ b/runtime/gdev/src/weights/pallet_timestamp.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_timestamp`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 15_904_000 picoseconds.
-		Weight::from_parts(16_611_000, 0)
+		// Minimum execution time: 13_427_000 picoseconds.
+		Weight::from_parts(14_258_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: 3_335_000 picoseconds.
-		Weight::from_parts(3_743_000, 0)
+		// Minimum execution time: 3_508_000 picoseconds.
+		Weight::from_parts(3_712_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/gdev/src/weights/pallet_transaction_payment.rs b/runtime/gdev/src/weights/pallet_transaction_payment.rs
new file mode 100644
index 0000000000000000000000000000000000000000..23ec20493de9c5f69c4e89e920efa209823dfbd0
--- /dev/null
+++ b/runtime/gdev/src/weights/pallet_transaction_payment.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_transaction_payment`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --genesis-builder=spec-genesis
+// --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_transaction_payment`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_transaction_payment::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 charge_transaction_payment() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `124`
+		//  Estimated: `6126`
+		// Minimum execution time: 47_953_000 picoseconds.
+		Weight::from_parts(48_752_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+}
diff --git a/runtime/gdev/src/weights/pallet_treasury.rs b/runtime/gdev/src/weights/pallet_treasury.rs
index 5652b085ecc30b03b93192bc8268b0e3823e084e..1d8b9ffb1c5a32bb1051f3c73c3f540a5acc2fd1 100644
--- a/runtime/gdev/src/weights/pallet_treasury.rs
+++ b/runtime/gdev/src/weights/pallet_treasury.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_treasury`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -61,8 +61,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `6`
 		//  Estimated: `1887`
-		// Minimum execution time: 3_326_000 picoseconds.
-		Weight::from_parts(3_567_000, 0)
+		// Minimum execution time: 3_605_000 picoseconds.
+		Weight::from_parts(3_896_000, 0)
 			.saturating_add(Weight::from_parts(0, 1887))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -70,18 +70,18 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 	/// 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::LastSpendPeriod` (r:1 w:1)
+	/// Proof: `Treasury::LastSpendPeriod` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
 	/// The range of component `p` is `[0, 99]`.
 	fn on_initialize_proposals(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `82 + p * (1 ±0)`
 		//  Estimated: `3558`
-		// Minimum execution time: 14_684_000 picoseconds.
-		Weight::from_parts(16_161_715, 0)
+		// Minimum execution time: 10_805_000 picoseconds.
+		Weight::from_parts(12_178_298, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
-			// Standard Error: 704
-			.saturating_add(Weight::from_parts(32_706, 0).saturating_mul(p.into()))
+			// Standard Error: 476
+			.saturating_add(Weight::from_parts(26_138, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -99,8 +99,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `6`
 		//  Estimated: `3526`
-		// Minimum execution time: 4_747_000 picoseconds.
-		Weight::from_parts(4_997_000, 0)
+		// Minimum execution time: 4_499_000 picoseconds.
+		Weight::from_parts(4_892_000, 0)
 			.saturating_add(Weight::from_parts(0, 3526))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -110,8 +110,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `6`
 		//  Estimated: `3526`
-		// Minimum execution time: 4_864_000 picoseconds.
-		Weight::from_parts(5_074_000, 0)
+		// Minimum execution time: 4_644_000 picoseconds.
+		Weight::from_parts(4_823_000, 0)
 			.saturating_add(Weight::from_parts(0, 3526))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -121,8 +121,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `6`
 		//  Estimated: `3526`
-		// Minimum execution time: 3_944_000 picoseconds.
-		Weight::from_parts(4_268_000, 0)
+		// Minimum execution time: 4_098_000 picoseconds.
+		Weight::from_parts(4_374_000, 0)
 			.saturating_add(Weight::from_parts(0, 3526))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
diff --git a/runtime/gdev/src/weights/pallet_universal_dividend.rs b/runtime/gdev/src/weights/pallet_universal_dividend.rs
index bbbc2924fb84697d47981becd96f71d1a9340071..e6ebe439a3587fa6db13eab318defce941cd2e4b 100644
--- a/runtime/gdev/src/weights/pallet_universal_dividend.rs
+++ b/runtime/gdev/src/weights/pallet_universal_dividend.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_universal_dividend`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -62,8 +62,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `676`
 		//  Estimated: `4141`
-		// Minimum execution time: 34_902_000 picoseconds.
-		Weight::from_parts(37_575_396, 0)
+		// Minimum execution time: 33_238_000 picoseconds.
+		Weight::from_parts(35_217_292, 0)
 			.saturating_add(Weight::from_parts(0, 4141))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -76,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: 53_697_000 picoseconds.
-		Weight::from_parts(55_108_000, 0)
+		// Minimum execution time: 52_547_000 picoseconds.
+		Weight::from_parts(53_796_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -90,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: 33_465_000 picoseconds.
-		Weight::from_parts(34_434_000, 0)
+		// Minimum execution time: 35_267_000 picoseconds.
+		Weight::from_parts(36_250_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -107,8 +107,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `181`
 		//  Estimated: `3558`
-		// Minimum execution time: 19_800_000 picoseconds.
-		Weight::from_parts(20_954_204, 0)
+		// Minimum execution time: 19_520_000 picoseconds.
+		Weight::from_parts(20_568_903, 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/gdev/src/weights/pallet_upgrade_origin.rs b/runtime/gdev/src/weights/pallet_upgrade_origin.rs
index 72c7879ea1f82eff2f5d165de20ef8b2d5621e62..796535ee540f29cdc70dfa226fd64fa395a47112 100644
--- a/runtime/gdev/src/weights/pallet_upgrade_origin.rs
+++ b/runtime/gdev/src/weights/pallet_upgrade_origin.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_upgrade_origin`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 5_677_000 picoseconds.
-		Weight::from_parts(5_910_000, 0)
+		// Minimum execution time: 5_799_000 picoseconds.
+		Weight::from_parts(6_189_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
index 95c289e00556845666f8569ee42845aa612983fb..6765040d8134bcbeaba00bdde1c5134194b93668 100644
--- a/runtime/gdev/src/weights/pallet_utility.rs
+++ b/runtime/gdev/src/weights/pallet_utility.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_utility`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 4_502_000 picoseconds.
-		Weight::from_parts(6_701_915, 0)
+		// Minimum execution time: 4_231_000 picoseconds.
+		Weight::from_parts(7_319_644, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_379
-			.saturating_add(Weight::from_parts(2_058_130, 0).saturating_mul(c.into()))
+			// Standard Error: 891
+			.saturating_add(Weight::from_parts(2_204_220, 0).saturating_mul(c.into()))
 	}
 	fn as_derivative() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_663_000 picoseconds.
-		Weight::from_parts(3_787_000, 0)
+		// Minimum execution time: 3_803_000 picoseconds.
+		Weight::from_parts(3_992_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: 4_406_000 picoseconds.
-		Weight::from_parts(9_695_617, 0)
+		// Minimum execution time: 4_409_000 picoseconds.
+		Weight::from_parts(7_086_404, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_358
-			.saturating_add(Weight::from_parts(2_198_757, 0).saturating_mul(c.into()))
+			// Standard Error: 785
+			.saturating_add(Weight::from_parts(2_359_740, 0).saturating_mul(c.into()))
 	}
 	fn dispatch_as() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 5_621_000 picoseconds.
-		Weight::from_parts(6_120_000, 0)
+		// Minimum execution time: 6_090_000 picoseconds.
+		Weight::from_parts(6_341_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: 4_323_000 picoseconds.
-		Weight::from_parts(9_287_821, 0)
+		// Minimum execution time: 4_465_000 picoseconds.
+		Weight::from_parts(7_309_929, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_105
-			.saturating_add(Weight::from_parts(2_051_272, 0).saturating_mul(c.into()))
+			// Standard Error: 831
+			.saturating_add(Weight::from_parts(2_203_128, 0).saturating_mul(c.into()))
 	}
 }
diff --git a/runtime/gdev/src/weights/paritydb_weights.rs b/runtime/gdev/src/weights/paritydb_weights.rs
index 112932d6b56df8d9706196065cec205956783063..5b3a01c49cdff16ceefc6a2543c172df61fc75b6 100644
--- a/runtime/gdev/src/weights/paritydb_weights.rs
+++ b/runtime/gdev/src/weights/paritydb_weights.rs
@@ -1,6 +1,6 @@
 
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14 (Y/M/D)
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22 (Y/M/D)
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //!
 //! DATABASE: `ParityDb`, RUNTIME: `Ğdev Local Testnet`
@@ -34,31 +34,31 @@ pub mod constants {
 			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
 			///
 			/// Stats nanoseconds:
-			///   Min, Max: 965, 1_385_968
-			///   Average:  10_520
-			///   Median:   1_692
-			///   Std-Dev:  109086.73
+			///   Min, Max: 775, 912_008
+			///   Average:  7_157
+			///   Median:   1_243
+			///   Std-Dev:  72016.2
 			///
 			/// Percentiles nanoseconds:
-			///   99th: 13_234
-			///   95th: 2_658
-			///   75th: 2_000
-			read: 21_040 * constants::WEIGHT_REF_TIME_PER_NANOS,
+			///   99th: 27_305
+			///   95th: 1_759
+			///   75th: 1_404
+			read: 14_314 * 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_511, 6_408_141
-			///   Average:  52_016
-			///   Median:   9_227
-			///   Std-Dev:  505441.82
+			///   Min, Max: 3_875, 6_414_394
+			///   Average:  49_821
+			///   Median:   9_993
+			///   Std-Dev:  506345.67
 			///
 			/// Percentiles nanoseconds:
-			///   99th: 479_523
-			///   95th: 13_065
-			///   75th: 11_279
-			write: 104_032 * constants::WEIGHT_REF_TIME_PER_NANOS,
+			///   99th: 16_487
+			///   95th: 13_490
+			///   75th: 11_894
+			write: 99_642 * constants::WEIGHT_REF_TIME_PER_NANOS,
 		};
 	}
 
diff --git a/runtime/gdev/tests/common/mod.rs b/runtime/gdev/tests/common/mod.rs
index 82b5ade8d586dfb587c83b5ebd850b5d6b303500..b8d13eaefae415969b7c4c2f295931f6042966b5 100644
--- a/runtime/gdev/tests/common/mod.rs
+++ b/runtime/gdev/tests/common/mod.rs
@@ -30,7 +30,7 @@ use sp_membership::MembershipData;
 use sp_runtime::{
     generic::SignedPayload,
     testing::{Digest, DigestItem},
-    traits::{Extrinsic, IdentifyAccount, Verify},
+    traits::{ExtrinsicLike, IdentifyAccount, Verify},
 };
 use std::collections::BTreeMap;
 
@@ -492,25 +492,29 @@ pub fn get_unchecked_extrinsic(
     tip: Balance,
     nonce: u32,
 ) -> gdev_runtime::UncheckedExtrinsic {
-    let extra: gdev_runtime::SignedExtra = (
+    let tx_ext: gdev_runtime::TxExtension = (
         frame_system::CheckNonZeroSender::<gdev_runtime::Runtime>::new(),
         frame_system::CheckSpecVersion::<gdev_runtime::Runtime>::new(),
         frame_system::CheckTxVersion::<gdev_runtime::Runtime>::new(),
         frame_system::CheckGenesis::<gdev_runtime::Runtime>::new(),
-        frame_system::CheckMortality::<gdev_runtime::Runtime>::from(
-            sp_runtime::generic::Era::mortal(era, block),
+        frame_system::CheckEra::<gdev_runtime::Runtime>::from(sp_runtime::generic::Era::mortal(
+            era, block,
+        )),
+        pallet_oneshot_account::CheckNonce::<gdev_runtime::Runtime>::from(
+            frame_system::CheckNonce::<gdev_runtime::Runtime>::from(nonce),
         ),
-        frame_system::CheckNonce::<gdev_runtime::Runtime>::from(nonce).into(),
         frame_system::CheckWeight::<gdev_runtime::Runtime>::new(),
         pallet_transaction_payment::ChargeTransactionPayment::<gdev_runtime::Runtime>::from(tip),
+        frame_metadata_hash_extension::CheckMetadataHash::<gdev_runtime::Runtime>::new(false),
     );
-    let payload = SignedPayload::new(call.clone(), extra.clone()).unwrap();
+    let payload = SignedPayload::new(call.clone(), tx_ext.clone()).unwrap();
     let origin = signer;
     let sig = payload.using_encoded(|payload| origin.pair().sign(payload));
 
-    gdev_runtime::UncheckedExtrinsic::new(
+    gdev_runtime::UncheckedExtrinsic::new_signed(
         call,
-        Some((origin.to_account_id().into(), sig.into(), extra)),
+        origin.to_account_id().into(),
+        sig.into(),
+        tx_ext,
     )
-    .unwrap()
 }
diff --git a/runtime/gtest/Cargo.toml b/runtime/gtest/Cargo.toml
index 1b09c9ca1d9dea331c3f9bcf2923ca163cb25c55..eec845490068e5a32ed691442cc6c605bbdb1878 100644
--- a/runtime/gtest/Cargo.toml
+++ b/runtime/gtest/Cargo.toml
@@ -12,6 +12,14 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [features]
 default = ["std"]
+# Enable the metadata hash generation.
+#
+# This is hidden behind a feature because it increases the compile time.
+# The wasm binary needs to be compiled twice, once to fetch the metadata,
+# generate the metadata hash and then a second time with the
+# `RUNTIME_METADATA_HASH` environment variable set for the `CheckMetadataHash`
+# extension.
+metadata-hash = ["substrate-wasm-builder/metadata-hash"]
 constant-fees = ["common-runtime/constant-fees"]
 runtime-benchmarks = [
 	"common-runtime/runtime-benchmarks",
@@ -43,6 +51,7 @@ runtime-benchmarks = [
 	"pallet-smith-members/runtime-benchmarks",
 	"pallet-sudo/runtime-benchmarks",
 	"pallet-timestamp/runtime-benchmarks",
+	"pallet-transaction-payment/runtime-benchmarks",
 	"pallet-treasury/runtime-benchmarks",
 	"pallet-universal-dividend/runtime-benchmarks",
 	"pallet-upgrade-origin/runtime-benchmarks",
@@ -176,6 +185,7 @@ frame-support = { workspace = true }
 frame-system = { workspace = true }
 frame-system-rpc-runtime-api = { workspace = true }
 frame-try-runtime = { workspace = true, optional = true }
+frame-metadata-hash-extension = { workspace = true }
 hex-literal = { workspace = true, optional = true }
 pallet-session-benchmarking = { workspace = true }
 log = { workspace = true }
diff --git a/runtime/gtest/build.rs b/runtime/gtest/build.rs
index b31efa2f039949719cab9bfdcb170c98d4cb542f..450a6eba8252f849fa8cc94bec8026736e5953c5 100644
--- a/runtime/gtest/build.rs
+++ b/runtime/gtest/build.rs
@@ -17,10 +17,12 @@
 fn main() {
     #[cfg(feature = "std")]
     {
-        substrate_wasm_builder::WasmBuilder::new()
-            .with_current_project()
-            .export_heap_base()
-            .import_memory()
+        #[cfg(not(feature = "metadata-hash"))]
+        substrate_wasm_builder::WasmBuilder::init_with_defaults().build();
+
+        #[cfg(feature = "metadata-hash")]
+        substrate_wasm_builder::WasmBuilder::init_with_defaults()
+            .enable_metadata_hash("ĞD", 2)
             .build();
     }
 }
diff --git a/runtime/gtest/src/lib.rs b/runtime/gtest/src/lib.rs
index 842fc6a387814272075a72aad5a8ee5ca3508b6c..6876b754ab58cee5cd2e86b39c0cafe03fe9cd52 100644
--- a/runtime/gtest/src/lib.rs
+++ b/runtime/gtest/src/lib.rs
@@ -22,10 +22,6 @@
 #[cfg(feature = "std")]
 include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
 
-#[cfg(feature = "runtime-benchmarks")]
-#[macro_use]
-extern crate frame_benchmarking;
-
 pub mod parameters;
 pub mod weights;
 
@@ -39,8 +35,6 @@ use frame_support::{traits::Contains, PalletId};
 pub use frame_system::Call as SystemCall;
 use frame_system::EnsureRoot;
 pub use pallet_balances::Call as BalancesCall;
-#[cfg(feature = "runtime-benchmarks")]
-pub use pallet_collective::RawOrigin;
 use pallet_grandpa::{
     fg_primitives, AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList,
 };
@@ -55,10 +49,10 @@ use sp_core::OpaqueMetadata;
 #[cfg(any(feature = "std", test))]
 pub use sp_runtime::BuildStorage;
 use sp_runtime::{
-    create_runtime_str, generic, impl_opaque_keys,
+    generic, impl_opaque_keys,
     traits::{AccountIdLookup, BlakeTwo256, Block as BlockT, NumberFor, OpaqueKeys},
     transaction_validity::{TransactionSource, TransactionValidity},
-    ApplyExtrinsicResult, Perquintill,
+    ApplyExtrinsicResult, Cow, Perquintill,
 };
 pub use sp_runtime::{KeyTypeId, Perbill, Permill};
 #[cfg(feature = "std")]
@@ -78,14 +72,12 @@ pub use frame_support::{
     StorageValue,
 };
 
-common_runtime::declare_session_keys! {}
-
 // To learn more about runtime versioning and what each of the following value means:
 //   https://substrate.dev/docs/en/knowledgebase/runtime/upgrades#runtime-versioning
 #[sp_version::runtime_version]
 pub const VERSION: RuntimeVersion = RuntimeVersion {
-    spec_name: create_runtime_str!("gtest"),
-    impl_name: create_runtime_str!("duniter-gtest"),
+    spec_name: Cow::Borrowed("gtest"),
+    impl_name: Cow::Borrowed("duniter-gtest"),
     authoring_version: 1,
     // The version of the runtime specification. A full node will not attempt to use its native
     //   runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`,
@@ -96,7 +88,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
     impl_version: 1,
     apis: RUNTIME_API_VERSIONS,
     transaction_version: 1,
-    state_version: 1,
+    system_version: 1,
 };
 
 /// The version information used to identify this runtime when compiled natively.
@@ -112,9 +104,9 @@ pub fn native_version() -> NativeVersion {
 pub type Block = sp_runtime::generic::Block<Header, UncheckedExtrinsic>;
 /// Unchecked extrinsic type as expected by this runtime.
 pub type UncheckedExtrinsic =
-    generic::UncheckedExtrinsic<Address, RuntimeCall, Signature, SignedExtra>;
-/// The SignedExtension to the basic transaction logic.
-pub type SignedExtra = (
+    generic::UncheckedExtrinsic<Address, RuntimeCall, Signature, TxExtension>;
+/// The `TransactionExtension` to the basic transaction logic.
+pub type TxExtension = (
     frame_system::CheckNonZeroSender<Runtime>,
     frame_system::CheckSpecVersion<Runtime>,
     frame_system::CheckTxVersion<Runtime>,
@@ -123,6 +115,7 @@ pub type SignedExtra = (
     pallet_oneshot_account::CheckNonce<Runtime>,
     frame_system::CheckWeight<Runtime>,
     pallet_transaction_payment::ChargeTransactionPayment<Runtime>,
+    frame_metadata_hash_extension::CheckMetadataHash<Runtime>,
 );
 
 /// Executive: handles dispatch to the various modules.
@@ -136,38 +129,6 @@ pub type Executive = frame_executive::Executive<
 
 pub type TechnicalCommitteeInstance = Instance2;
 
-#[cfg(feature = "runtime-benchmarks")]
-mod benches {
-    define_benchmarks!(
-        [pallet_certification, Certification]
-        [pallet_distance, Distance]
-        [pallet_oneshot_account, OneshotAccount]
-        [pallet_universal_dividend, UniversalDividend]
-        [pallet_provide_randomness, ProvideRandomness]
-        [pallet_upgrade_origin, UpgradeOrigin]
-        [pallet_duniter_account, Account]
-        [pallet_identity, Identity]
-        [pallet_membership, Membership]
-        [pallet_smith_members, SmithMembers]
-        [pallet_authority_members, AuthorityMembers]
-        // Substrate
-        [pallet_balances, Balances]
-        [frame_benchmarking::baseline, Baseline::<Runtime>]
-        [pallet_collective, TechnicalCommittee]
-        [pallet_session, SessionBench::<Runtime>]
-        [pallet_im_online, ImOnline]
-        [pallet_multisig, Multisig]
-        [pallet_preimage, Preimage]
-        [pallet_proxy, Proxy]
-        [pallet_sudo, Sudo]
-        [pallet_scheduler, Scheduler]
-        [frame_system, SystemBench::<Runtime>]
-        [pallet_timestamp, Timestamp]
-        [pallet_treasury, Treasury]
-        [pallet_utility, Utility]
-    );
-}
-
 pub struct BaseCallFilter;
 impl Contains<RuntimeCall> for BaseCallFilter {
     fn contains(call: &RuntimeCall) -> bool {
@@ -235,11 +196,6 @@ impl frame_support::traits::InstanceFilter<RuntimeCall> for ProxyType {
     }
 }
 
-// Configure pallets to include in runtime.
-#[cfg(feature = "runtime-benchmarks")]
-type WorstOrigin = RawOrigin<AccountId, TechnicalCommitteeInstance>;
-common_runtime::pallets_config!();
-
 // Create the runtime by composing the pallets that were previously configured.
 construct_runtime!(
     pub enum Runtime
@@ -296,22 +252,11 @@ construct_runtime!(
     }
 );
 
-impl<C> frame_system::offchain::SendTransactionTypes<C> for Runtime
-where
-    RuntimeCall: From<C>,
-{
-    type Extrinsic = UncheckedExtrinsic;
-    type OverarchingCall = RuntimeCall;
-}
-
 // All of our runtimes share most of their Runtime API implementations.
 // We use a macro to implement this common part and add runtime-specific additional implementations.
-// This macro expands to :
-// ```
-// impl_runtime_apis! {
-//     // All impl blocks shared between all runtimes.
-//
-//     // Specific impls provided to the `runtime_apis!` macro.
-// }
-// ```
+common_runtime::pallets_config!();
+common_runtime::declare_session_keys! {}
+#[cfg(feature = "runtime-benchmarks")]
+common_runtime::benchmarks_config!();
+common_runtime::offchain_config! {}
 common_runtime::runtime_apis! {}
diff --git a/runtime/gtest/src/weights.rs b/runtime/gtest/src/weights.rs
index 1bf51bdbb063859c33197a6251bf767ba1311442..8371a5d27816ee03cb0042f5a34957c28ebf570c 100644
--- a/runtime/gtest/src/weights.rs
+++ b/runtime/gtest/src/weights.rs
@@ -20,6 +20,8 @@
 #![allow(clippy::unnecessary_cast)]
 #![allow(unused_doc_comments)]
 
+pub mod frame_system_extensions;
+pub mod pallet_transaction_payment;
 pub mod block_weights;
 pub mod extrinsic_weights;
 pub mod frame_system;
diff --git a/runtime/gtest/src/weights/block_weights.rs b/runtime/gtest/src/weights/block_weights.rs
index f048f6b1e5d74b73f8f2d5704410ca2e2d694715..1c655c4b63802a2fbf6b04524b38042619256e59 100644
--- a/runtime/gtest/src/weights/block_weights.rs
+++ b/runtime/gtest/src/weights/block_weights.rs
@@ -1,6 +1,6 @@
 
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14 (Y/M/D)
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22 (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`
@@ -22,21 +22,21 @@ use sp_core::parameter_types;
 use sp_weights::{constants::WEIGHT_REF_TIME_PER_NANOS, Weight};
 
 parameter_types! {
-	/// Time to execute an empty block.
+	/// Weight of executing an empty block.
 	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
 	///
 	/// Stats nanoseconds:
-	///   Min, Max: 118_723, 182_138
-	///   Average:  126_773
-	///   Median:   126_090
-	///   Std-Dev:  6674.36
+	///   Min, Max: 119_474, 184_642
+	///   Average:  127_731
+	///   Median:   126_405
+	///   Std-Dev:  8203.13
 	///
 	/// Percentiles nanoseconds:
-	///   99th: 149_828
-	///   95th: 132_085
-	///   75th: 127_166
+	///   99th: 161_562
+	///   95th: 133_670
+	///   75th: 127_726
 	pub const BlockExecutionWeight: Weight =
-		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(126_773), 0);
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(127_731), 0);
 }
 
 #[cfg(test)]
diff --git a/runtime/gtest/src/weights/extrinsic_weights.rs b/runtime/gtest/src/weights/extrinsic_weights.rs
index f41d2f86f287ecc5add7b3d2788dbd3a0d04e3c8..bf1a07dcbf36dc4ebce9e1461ae3008e73c694d1 100644
--- a/runtime/gtest/src/weights/extrinsic_weights.rs
+++ b/runtime/gtest/src/weights/extrinsic_weights.rs
@@ -1,6 +1,6 @@
 
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14 (Y/M/D)
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22 (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`
@@ -22,21 +22,21 @@ 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`.
+	/// Weight of executing a NO-OP extrinsic, for example `System::remark`.
 	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
 	///
 	/// Stats nanoseconds:
-	///   Min, Max: 89_055, 90_073
-	///   Average:  89_280
-	///   Median:   89_260
-	///   Std-Dev:  144.55
+	///   Min, Max: 93_611, 95_512
+	///   Average:  94_010
+	///   Median:   93_971
+	///   Std-Dev:  322.63
 	///
 	/// Percentiles nanoseconds:
-	///   99th: 90_011
-	///   95th: 89_428
-	///   75th: 89_312
+	///   99th: 95_222
+	///   95th: 94_605
+	///   75th: 94_088
 	pub const ExtrinsicBaseWeight: Weight =
-		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(89_280), 0);
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(94_010), 0);
 }
 
 #[cfg(test)]
diff --git a/runtime/gtest/src/weights/frame_benchmarking_baseline.rs b/runtime/gtest/src/weights/frame_benchmarking_baseline.rs
index 06871d60e83848ae016af2b95f475928f0be69bc..db7a90f11e14c662a6e085a58579329306b9ca1e 100644
--- a/runtime/gtest/src/weights/frame_benchmarking_baseline.rs
+++ b/runtime/gtest/src/weights/frame_benchmarking_baseline.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `frame_benchmarking::baseline`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 87_000 picoseconds.
-		Weight::from_parts(110_887, 0)
+		// Minimum execution time: 81_000 picoseconds.
+		Weight::from_parts(108_311, 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: 85_000 picoseconds.
-		Weight::from_parts(109_517, 0)
+		// Minimum execution time: 81_000 picoseconds.
+		Weight::from_parts(113_015, 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: 86_000 picoseconds.
-		Weight::from_parts(111_444, 0)
+		// Minimum execution time: 81_000 picoseconds.
+		Weight::from_parts(115_324, 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: 86_000 picoseconds.
-		Weight::from_parts(110_205, 0)
+		// Minimum execution time: 81_000 picoseconds.
+		Weight::from_parts(105_344, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	fn hashing() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 20_287_014_000 picoseconds.
-		Weight::from_parts(20_339_196_000, 0)
+		// Minimum execution time: 19_581_925_000 picoseconds.
+		Weight::from_parts(19_626_302_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 100]`.
@@ -96,10 +96,10 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 89_000 picoseconds.
-		Weight::from_parts(28_337_683, 0)
+		// Minimum execution time: 94_000 picoseconds.
+		Weight::from_parts(29_519_877, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 12_719
-			.saturating_add(Weight::from_parts(31_054_033, 0).saturating_mul(i.into()))
+			// Standard Error: 12_461
+			.saturating_add(Weight::from_parts(33_989_148, 0).saturating_mul(i.into()))
 	}
 }
diff --git a/runtime/gtest/src/weights/frame_system.rs b/runtime/gtest/src/weights/frame_system.rs
index e5fda44044b676e3ee5d691dd600fbf98219fc82..e35effe658a9c04e46671ca9ce5150d1df910891 100644
--- a/runtime/gtest/src/weights/frame_system.rs
+++ b/runtime/gtest/src/weights/frame_system.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `frame_system`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -52,50 +52,44 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_785_000 picoseconds.
-		Weight::from_parts(1_883_000, 0)
+		// Minimum execution time: 1_920_000 picoseconds.
+		Weight::from_parts(427_866, 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(255, 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: 5_136_000 picoseconds.
-		Weight::from_parts(5_186_000, 0)
+		// Minimum execution time: 4_987_000 picoseconds.
+		Weight::from_parts(5_159_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 0
-			.saturating_add(Weight::from_parts(1_035, 0).saturating_mul(b.into()))
+			.saturating_add(Weight::from_parts(1_038, 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: 3_577_000 picoseconds.
-		Weight::from_parts(3_731_000, 0)
-			.saturating_add(Weight::from_parts(0, 1485))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(2))
+		//  Estimated: `0`
+		// Minimum execution time: 3_234_000 picoseconds.
+		Weight::from_parts(3_614_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			.saturating_add(T::DbWeight::get().writes(1))
 	}
-	/// 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: 75_137_658_000 picoseconds.
-		Weight::from_parts(75_762_126_000, 0)
-			.saturating_add(Weight::from_parts(0, 1485))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(2))
+		//  Estimated: `0`
+		// Minimum execution time: 75_492_960_000 picoseconds.
+		Weight::from_parts(76_325_406_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+			.saturating_add(T::DbWeight::get().writes(1))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
 	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -104,11 +98,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_804_000 picoseconds.
-		Weight::from_parts(1_945_000, 0)
+		// Minimum execution time: 1_917_000 picoseconds.
+		Weight::from_parts(2_080_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 726
-			.saturating_add(Weight::from_parts(572_839, 0).saturating_mul(i.into()))
+			// Standard Error: 493
+			.saturating_add(Weight::from_parts(558_660, 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 +112,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_744_000 picoseconds.
-		Weight::from_parts(1_972_000, 0)
+		// Minimum execution time: 1_889_000 picoseconds.
+		Weight::from_parts(1_984_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 733
-			.saturating_add(Weight::from_parts(459_317, 0).saturating_mul(i.into()))
+			// Standard Error: 624
+			.saturating_add(Weight::from_parts(445_291, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
@@ -131,12 +125,12 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 	fn kill_prefix(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + p * (69 ±0)`
-		//  Estimated: `76 + p * (70 ±0)`
-		// Minimum execution time: 3_542_000 picoseconds.
-		Weight::from_parts(3_654_000, 0)
-			.saturating_add(Weight::from_parts(0, 76))
-			// Standard Error: 722
-			.saturating_add(Weight::from_parts(1_051_560, 0).saturating_mul(p.into()))
+		//  Estimated: `75 + p * (70 ±0)`
+		// Minimum execution time: 3_552_000 picoseconds.
+		Weight::from_parts(3_670_000, 0)
+			.saturating_add(Weight::from_parts(0, 75))
+			// Standard Error: 686
+			.saturating_add(Weight::from_parts(1_013_103, 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,25 +141,23 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 8_421_000 picoseconds.
-		Weight::from_parts(9_720_000, 0)
+		// Minimum execution time: 8_152_000 picoseconds.
+		Weight::from_parts(8_900_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: 79_149_753_000 picoseconds.
-		Weight::from_parts(80_077_256_000, 0)
+		// Minimum execution time: 79_836_271_000 picoseconds.
+		Weight::from_parts(80_190_659_000, 0)
 			.saturating_add(Weight::from_parts(0, 1518))
-			.saturating_add(T::DbWeight::get().reads(2))
-			.saturating_add(T::DbWeight::get().writes(3))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(2))
 	}
 }
diff --git a/runtime/gtest/src/weights/frame_system_extensions.rs b/runtime/gtest/src/weights/frame_system_extensions.rs
new file mode 100644
index 0000000000000000000000000000000000000000..52451b4ef5ef610aecff1d88ff22db07bfe29899
--- /dev/null
+++ b/runtime/gtest/src/weights/frame_system_extensions.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 `frame_system_extensions`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --genesis-builder=spec-genesis
+// --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_extensions`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> frame_system::ExtensionsWeightInfo for WeightInfo<T> {
+	fn check_genesis() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `30`
+		//  Estimated: `0`
+		// Minimum execution time: 2_663_000 picoseconds.
+		Weight::from_parts(2_864_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_mortality_mortal_transaction() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `68`
+		//  Estimated: `0`
+		// Minimum execution time: 5_051_000 picoseconds.
+		Weight::from_parts(5_486_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_mortality_immortal_transaction() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `68`
+		//  Estimated: `0`
+		// Minimum execution time: 5_128_000 picoseconds.
+		Weight::from_parts(5_367_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_non_zero_sender() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 400_000 picoseconds.
+		Weight::from_parts(459_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 check_nonce() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `61`
+		//  Estimated: `3558`
+		// Minimum execution time: 5_759_000 picoseconds.
+		Weight::from_parts(6_175_000, 0)
+			.saturating_add(Weight::from_parts(0, 3558))
+			.saturating_add(T::DbWeight::get().reads(1))
+			.saturating_add(T::DbWeight::get().writes(1))
+	}
+	fn check_spec_version() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 326_000 picoseconds.
+		Weight::from_parts(370_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_tx_version() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 327_000 picoseconds.
+		Weight::from_parts(356_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+	fn check_weight() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 3_193_000 picoseconds.
+		Weight::from_parts(3_427_000, 0)
+			.saturating_add(Weight::from_parts(0, 0))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_authority_members.rs b/runtime/gtest/src/weights/pallet_authority_members.rs
index 408c3def8b1a4ec6745e3bf3c1a6129c9c17f9e4..c5e0fa55dae30b418d556a44c1ce5d91c5464b2f 100644
--- a/runtime/gtest/src/weights/pallet_authority_members.rs
+++ b/runtime/gtest/src/weights/pallet_authority_members.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_authority_members`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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:  `900`
-		//  Estimated: `4365`
-		// Minimum execution time: 27_099_000 picoseconds.
-		Weight::from_parts(28_465_000, 0)
-			.saturating_add(Weight::from_parts(0, 4365))
+		//  Measured:  `867`
+		//  Estimated: `4332`
+		// Minimum execution time: 22_888_000 picoseconds.
+		Weight::from_parts(23_672_000, 0)
+			.saturating_add(Weight::from_parts(0, 4332))
 			.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:  `1356`
-		//  Estimated: `4821`
-		// Minimum execution time: 34_323_000 picoseconds.
-		Weight::from_parts(36_620_000, 0)
-			.saturating_add(Weight::from_parts(0, 4821))
+		//  Measured:  `1323`
+		//  Estimated: `4788`
+		// Minimum execution time: 33_561_000 picoseconds.
+		Weight::from_parts(34_785_000, 0)
+			.saturating_add(Weight::from_parts(0, 4788))
 			.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:  `1805`
-		//  Estimated: `12695`
-		// Minimum execution time: 45_331_000 picoseconds.
-		Weight::from_parts(46_694_000, 0)
-			.saturating_add(Weight::from_parts(0, 12695))
+		//  Measured:  `1772`
+		//  Estimated: `12662`
+		// Minimum execution time: 41_274_000 picoseconds.
+		Weight::from_parts(43_100_000, 0)
+			.saturating_add(Weight::from_parts(0, 12662))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -135,8 +135,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `847`
 		//  Estimated: `4312`
-		// Minimum execution time: 40_181_000 picoseconds.
-		Weight::from_parts(42_171_000, 0)
+		// Minimum execution time: 36_076_000 picoseconds.
+		Weight::from_parts(37_850_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: 9_395_000 picoseconds.
-		Weight::from_parts(9_779_000, 0)
+		// Minimum execution time: 9_265_000 picoseconds.
+		Weight::from_parts(9_709_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_balances.rs b/runtime/gtest/src/weights/pallet_balances.rs
index 1a52cda3789faa09392aae2a78a6bbcde69ecdf1..f25c05ce23230400af70e40daa9f899efbf54b60 100644
--- a/runtime/gtest/src/weights/pallet_balances.rs
+++ b/runtime/gtest/src/weights/pallet_balances.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_balances`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 50_426_000 picoseconds.
-		Weight::from_parts(51_887_000, 0)
+		// Minimum execution time: 49_468_000 picoseconds.
+		Weight::from_parts(50_819_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: 30_975_000 picoseconds.
-		Weight::from_parts(32_312_000, 0)
+		// Minimum execution time: 30_497_000 picoseconds.
+		Weight::from_parts(31_209_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -77,8 +77,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `134`
 		//  Estimated: `3558`
-		// Minimum execution time: 11_813_000 picoseconds.
-		Weight::from_parts(12_390_000, 0)
+		// Minimum execution time: 11_245_000 picoseconds.
+		Weight::from_parts(11_554_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -89,8 +89,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `134`
 		//  Estimated: `3558`
-		// Minimum execution time: 17_089_000 picoseconds.
-		Weight::from_parts(17_901_000, 0)
+		// Minimum execution time: 17_197_000 picoseconds.
+		Weight::from_parts(18_105_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: 51_663_000 picoseconds.
-		Weight::from_parts(53_176_000, 0)
+		// Minimum execution time: 50_992_000 picoseconds.
+		Weight::from_parts(52_033_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: 37_803_000 picoseconds.
-		Weight::from_parts(39_141_000, 0)
+		// Minimum execution time: 36_879_000 picoseconds.
+		Weight::from_parts(38_622_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -125,8 +125,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `134`
 		//  Estimated: `3558`
-		// Minimum execution time: 14_471_000 picoseconds.
-		Weight::from_parts(14_947_000, 0)
+		// Minimum execution time: 14_387_000 picoseconds.
+		Weight::from_parts(14_913_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,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 5_329_000 picoseconds.
-		Weight::from_parts(5_674_000, 0)
+		// Minimum execution time: 5_324_000 picoseconds.
+		Weight::from_parts(5_646_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `System::Account` (r:1 w:1)
@@ -145,8 +145,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `63`
 		//  Estimated: `3558`
-		// Minimum execution time: 35_600_000 picoseconds.
-		Weight::from_parts(36_606_000, 0)
+		// Minimum execution time: 35_274_000 picoseconds.
+		Weight::from_parts(36_186_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -155,8 +155,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 16_326_000 picoseconds.
-		Weight::from_parts(16_670_000, 0)
+		// Minimum execution time: 16_029_000 picoseconds.
+		Weight::from_parts(16_620_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
index 6c9f58a2c7e403c39c300978ad204a62ba96619e..28c09713453787f4370ecdefda25a8f07cbbf66a 100644
--- a/runtime/gtest/src/weights/pallet_certification.rs
+++ b/runtime/gtest/src/weights/pallet_certification.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_certification`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -61,8 +61,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `996`
 		//  Estimated: `6936`
-		// Minimum execution time: 39_728_000 picoseconds.
-		Weight::from_parts(40_728_000, 0)
+		// Minimum execution time: 39_823_000 picoseconds.
+		Weight::from_parts(41_151_000, 0)
 			.saturating_add(Weight::from_parts(0, 6936))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -81,8 +81,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `1019`
 		//  Estimated: `6959`
-		// Minimum execution time: 36_707_000 picoseconds.
-		Weight::from_parts(38_672_000, 0)
+		// Minimum execution time: 35_882_000 picoseconds.
+		Weight::from_parts(37_430_000, 0)
 			.saturating_add(Weight::from_parts(0, 6959))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -119,11 +119,11 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 	/// 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: 120_946_000 picoseconds.
-		Weight::from_parts(124_950_000, 0)
-			.saturating_add(Weight::from_parts(0, 15567))
+		//  Measured:  `2169`
+		//  Estimated: `15534`
+		// Minimum execution time: 117_223_000 picoseconds.
+		Weight::from_parts(121_172_000, 0)
+			.saturating_add(Weight::from_parts(0, 15534))
 			.saturating_add(T::DbWeight::get().reads(20))
 			.saturating_add(T::DbWeight::get().writes(22))
 	}
@@ -136,13 +136,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:  `554 + i * (35 ±0)`
-		//  Estimated: `4018 + i * (2511 ±0)`
-		// Minimum execution time: 29_810_000 picoseconds.
-		Weight::from_parts(30_875_000, 0)
-			.saturating_add(Weight::from_parts(0, 4018))
-			// Standard Error: 25_367
-			.saturating_add(Weight::from_parts(8_966_191, 0).saturating_mul(i.into()))
+		//  Measured:  `579 + i * (35 ±0)`
+		//  Estimated: `4049 + i * (2511 ±0)`
+		// Minimum execution time: 28_240_000 picoseconds.
+		Weight::from_parts(22_150_515, 0)
+			.saturating_add(Weight::from_parts(0, 4049))
+			// Standard Error: 3_438
+			.saturating_add(Weight::from_parts(4_233_010, 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))
@@ -155,8 +155,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `138`
 		//  Estimated: `3603`
-		// Minimum execution time: 3_455_000 picoseconds.
-		Weight::from_parts(3_692_000, 0)
+		// Minimum execution time: 3_352_000 picoseconds.
+		Weight::from_parts(3_607_000, 0)
 			.saturating_add(Weight::from_parts(0, 3603))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -166,8 +166,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `275`
 		//  Estimated: `3740`
-		// Minimum execution time: 5_287_000 picoseconds.
-		Weight::from_parts(5_663_000, 0)
+		// Minimum execution time: 5_201_000 picoseconds.
+		Weight::from_parts(5_439_000, 0)
 			.saturating_add(Weight::from_parts(0, 3740))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -182,28 +182,28 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `711`
 		//  Estimated: `6651`
-		// Minimum execution time: 26_471_000 picoseconds.
-		Weight::from_parts(27_567_000, 0)
+		// Minimum execution time: 23_016_000 picoseconds.
+		Weight::from_parts(24_017_000, 0)
 			.saturating_add(Weight::from_parts(0, 6651))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.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:1000 w:1000)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:100 w:100)
 	/// 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]`.
+	/// The range of component `i` is `[2, 100]`.
 	fn do_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: 29_810_000 picoseconds.
-		Weight::from_parts(30_875_000, 0)
-			.saturating_add(Weight::from_parts(0, 4018))
-			// Standard Error: 25_367
-			.saturating_add(Weight::from_parts(8_966_191, 0).saturating_mul(i.into()))
+		//  Measured:  `543 + i * (35 ±0)`
+		//  Estimated: `4016 + i * (2511 ±0)`
+		// Minimum execution time: 24_193_000 picoseconds.
+		Weight::from_parts(21_404_968, 0)
+			.saturating_add(Weight::from_parts(0, 4016))
+			// Standard Error: 4_541
+			.saturating_add(Weight::from_parts(3_957_096, 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))
diff --git a/runtime/gtest/src/weights/pallet_collective.rs b/runtime/gtest/src/weights/pallet_collective.rs
index 05218fc1fd00a9bba5dcef66340321081ebc1151..548d3ac57c02567f8e38ef361a5b10b189a37788 100644
--- a/runtime/gtest/src/weights/pallet_collective.rs
+++ b/runtime/gtest/src/weights/pallet_collective.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_collective`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -61,14 +61,14 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 	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: 12_349_000 picoseconds.
-		Weight::from_parts(12_614_000, 0)
+		//  Estimated: `10019 + m * (416 ±4) + p * (4183 ±23)`
+		// Minimum execution time: 11_891_000 picoseconds.
+		Weight::from_parts(12_212_000, 0)
 			.saturating_add(Weight::from_parts(0, 10019))
-			// Standard Error: 9_948
-			.saturating_add(Weight::from_parts(748_087, 0).saturating_mul(m.into()))
-			// Standard Error: 49_177
-			.saturating_add(Weight::from_parts(7_077_641, 0).saturating_mul(p.into()))
+			// Standard Error: 12_659
+			.saturating_add(Weight::from_parts(946_151, 0).saturating_mul(m.into()))
+			// Standard Error: 62_578
+			.saturating_add(Weight::from_parts(7_875_983, 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: 11_215_000 picoseconds.
-		Weight::from_parts(10_887_105, 0)
+		// Minimum execution time: 11_195_000 picoseconds.
+		Weight::from_parts(10_344_707, 0)
 			.saturating_add(Weight::from_parts(0, 1518))
-			// Standard Error: 28
-			.saturating_add(Weight::from_parts(1_365, 0).saturating_mul(b.into()))
-			// Standard Error: 295
-			.saturating_add(Weight::from_parts(12_516, 0).saturating_mul(m.into()))
+			// Standard Error: 35
+			.saturating_add(Weight::from_parts(1_618, 0).saturating_mul(b.into()))
+			// Standard Error: 361
+			.saturating_add(Weight::from_parts(14_708, 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: 13_358_000 picoseconds.
-		Weight::from_parts(13_161_879, 0)
+		// Minimum execution time: 13_308_000 picoseconds.
+		Weight::from_parts(12_851_450, 0)
 			.saturating_add(Weight::from_parts(0, 3498))
-			// Standard Error: 39
-			.saturating_add(Weight::from_parts(1_356, 0).saturating_mul(b.into()))
-			// Standard Error: 403
-			.saturating_add(Weight::from_parts(20_334, 0).saturating_mul(m.into()))
+			// Standard Error: 43
+			.saturating_add(Weight::from_parts(1_543, 0).saturating_mul(b.into()))
+			// Standard Error: 445
+			.saturating_add(Weight::from_parts(20_698, 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: 19_584_000 picoseconds.
-		Weight::from_parts(18_895_212, 0)
+		// Minimum execution time: 18_036_000 picoseconds.
+		Weight::from_parts(17_078_345, 0)
 			.saturating_add(Weight::from_parts(0, 3461))
-			// Standard Error: 78
-			.saturating_add(Weight::from_parts(2_755, 0).saturating_mul(b.into()))
-			// Standard Error: 823
-			.saturating_add(Weight::from_parts(21_823, 0).saturating_mul(m.into()))
-			// Standard Error: 4_115
-			.saturating_add(Weight::from_parts(320_679, 0).saturating_mul(p.into()))
+			// Standard Error: 64
+			.saturating_add(Weight::from_parts(2_307, 0).saturating_mul(b.into()))
+			// Standard Error: 669
+			.saturating_add(Weight::from_parts(19_414, 0).saturating_mul(m.into()))
+			// Standard Error: 3_343
+			.saturating_add(Weight::from_parts(271_842, 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: 18_494_000 picoseconds.
-		Weight::from_parts(19_588_027, 0)
+		// Minimum execution time: 16_851_000 picoseconds.
+		Weight::from_parts(17_633_841, 0)
 			.saturating_add(Weight::from_parts(0, 4037))
-			// Standard Error: 752
-			.saturating_add(Weight::from_parts(39_906, 0).saturating_mul(m.into()))
+			// Standard Error: 714
+			.saturating_add(Weight::from_parts(36_440, 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: 22_737_000 picoseconds.
-		Weight::from_parts(21_875_501, 0)
+		// Minimum execution time: 21_065_000 picoseconds.
+		Weight::from_parts(19_516_922, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
-			// Standard Error: 656
-			.saturating_add(Weight::from_parts(27_704, 0).saturating_mul(m.into()))
-			// Standard Error: 3_242
-			.saturating_add(Weight::from_parts(249_506, 0).saturating_mul(p.into()))
+			// Standard Error: 643
+			.saturating_add(Weight::from_parts(31_818, 0).saturating_mul(m.into()))
+			// Standard Error: 3_175
+			.saturating_add(Weight::from_parts(263_070, 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: 31_951_000 picoseconds.
-		Weight::from_parts(30_230_575, 0)
+		// Minimum execution time: 29_533_000 picoseconds.
+		Weight::from_parts(27_963_006, 0)
 			.saturating_add(Weight::from_parts(0, 3619))
-			// Standard Error: 105
-			.saturating_add(Weight::from_parts(2_734, 0).saturating_mul(b.into()))
-			// Standard Error: 1_114
-			.saturating_add(Weight::from_parts(15_971, 0).saturating_mul(m.into()))
-			// Standard Error: 5_498
-			.saturating_add(Weight::from_parts(404_478, 0).saturating_mul(p.into()))
+			// Standard Error: 159
+			.saturating_add(Weight::from_parts(2_509, 0).saturating_mul(b.into()))
+			// Standard Error: 1_681
+			.saturating_add(Weight::from_parts(11_763, 0).saturating_mul(m.into()))
+			// Standard Error: 8_295
+			.saturating_add(Weight::from_parts(479_099, 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: 25_846_000 picoseconds.
-		Weight::from_parts(24_354_983, 0)
+		// Minimum execution time: 23_249_000 picoseconds.
+		Weight::from_parts(21_517_463, 0)
 			.saturating_add(Weight::from_parts(0, 3611))
-			// Standard Error: 666
-			.saturating_add(Weight::from_parts(32_377, 0).saturating_mul(m.into()))
-			// Standard Error: 3_289
-			.saturating_add(Weight::from_parts(273_346, 0).saturating_mul(p.into()))
+			// Standard Error: 605
+			.saturating_add(Weight::from_parts(32_353, 0).saturating_mul(m.into()))
+			// Standard Error: 2_988
+			.saturating_add(Weight::from_parts(271_500, 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: 33_758_000 picoseconds.
-		Weight::from_parts(32_799_938, 0)
+		// Minimum execution time: 31_217_000 picoseconds.
+		Weight::from_parts(31_357_799, 0)
 			.saturating_add(Weight::from_parts(0, 3639))
-			// Standard Error: 104
-			.saturating_add(Weight::from_parts(2_470, 0).saturating_mul(b.into()))
-			// Standard Error: 1_104
-			.saturating_add(Weight::from_parts(15_104, 0).saturating_mul(m.into()))
-			// Standard Error: 5_448
-			.saturating_add(Weight::from_parts(405_491, 0).saturating_mul(p.into()))
+			// Standard Error: 111
+			.saturating_add(Weight::from_parts(2_367, 0).saturating_mul(b.into()))
+			// Standard Error: 1_179
+			.saturating_add(Weight::from_parts(17_343, 0).saturating_mul(m.into()))
+			// Standard Error: 5_817
+			.saturating_add(Weight::from_parts(421_956, 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,13 +290,50 @@ 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: 11_568_000 picoseconds.
-		Weight::from_parts(12_560_378, 0)
+		// Minimum execution time: 10_974_000 picoseconds.
+		Weight::from_parts(12_128_634, 0)
 			.saturating_add(Weight::from_parts(0, 1674))
-			// Standard Error: 1_913
-			.saturating_add(Weight::from_parts(159_858, 0).saturating_mul(p.into()))
+			// Standard Error: 2_474
+			.saturating_add(Weight::from_parts(146_734, 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()))
 	}
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:1)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::CostOf` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::CostOf` (`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::Voting` (r:0 w:1)
+	/// Proof: `TechnicalCommittee::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// The range of component `d` is `[0, 1]`.
+	/// The range of component `p` is `[1, 20]`.
+	fn kill(d: u32, p: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1243 + p * (55 ±0)`
+		//  Estimated: `4710 + d * (5 ±1) + p * (55 ±0)`
+		// Minimum execution time: 16_348_000 picoseconds.
+		Weight::from_parts(17_897_162, 0)
+			.saturating_add(Weight::from_parts(0, 4710))
+			// Standard Error: 2_632
+			.saturating_add(Weight::from_parts(259_366, 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, 5).saturating_mul(d.into()))
+			.saturating_add(Weight::from_parts(0, 55).saturating_mul(p.into()))
+	}
+	/// Storage: `TechnicalCommittee::ProposalOf` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `TechnicalCommittee::CostOf` (r:1 w:0)
+	/// Proof: `TechnicalCommittee::CostOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn release_proposal_cost() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `676`
+		//  Estimated: `4141`
+		// Minimum execution time: 10_662_000 picoseconds.
+		Weight::from_parts(11_158_000, 0)
+			.saturating_add(Weight::from_parts(0, 4141))
+			.saturating_add(T::DbWeight::get().reads(2))
+	}
 }
diff --git a/runtime/gtest/src/weights/pallet_distance.rs b/runtime/gtest/src/weights/pallet_distance.rs
index 6dc7c7d6a5d04f15aeb2ec5e475d5da66dcb543b..6a8334769f8f58c74973042a4e8f4c8de59735fe 100644
--- a/runtime/gtest/src/weights/pallet_distance.rs
+++ b/runtime/gtest/src/weights/pallet_distance.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_distance`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -57,20 +57,20 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// 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::CurrentPeriodIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPeriodIndex` (`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`)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(89), added: 2564, mode: `MaxEncodedLen`)
 	fn request_distance_evaluation() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `1134`
 		//  Estimated: `4599`
-		// Minimum execution time: 66_312_000 picoseconds.
-		Weight::from_parts(68_392_000, 0)
+		// Minimum execution time: 62_278_000 picoseconds.
+		Weight::from_parts(63_831_000, 0)
 			.saturating_add(Weight::from_parts(0, 4599))
 			.saturating_add(T::DbWeight::get().reads(9))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -85,52 +85,48 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// 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::CurrentPeriodIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPeriodIndex` (`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`)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(89), added: 2564, mode: `MaxEncodedLen`)
 	fn request_distance_evaluation_for() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `1163`
 		//  Estimated: `7103`
-		// Minimum execution time: 68_981_000 picoseconds.
-		Weight::from_parts(70_908_000, 0)
+		// Minimum execution time: 64_754_000 picoseconds.
+		Weight::from_parts(67_520_000, 0)
 			.saturating_add(Weight::from_parts(0, 7103))
 			.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::CurrentPeriodIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPeriodIndex` (`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:  `424 + i * (10 ±0)`
-		//  Estimated: `1909 + i * (10 ±0)`
-		// Minimum execution time: 18_863_000 picoseconds.
-		Weight::from_parts(21_326_139, 0)
-			.saturating_add(Weight::from_parts(0, 1909))
-			// Standard Error: 293
-			.saturating_add(Weight::from_parts(105_268, 0).saturating_mul(i.into()))
-			.saturating_add(T::DbWeight::get().reads(6))
-			.saturating_add(T::DbWeight::get().writes(3))
+		//  Measured:  `303 + i * (10 ±0)`
+		//  Estimated: `1788 + i * (10 ±0)`
+		// Minimum execution time: 12_163_000 picoseconds.
+		Weight::from_parts(14_600_703, 0)
+			.saturating_add(Weight::from_parts(0, 1788))
+			// Standard Error: 98
+			.saturating_add(Weight::from_parts(101_914, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(4))
+			.saturating_add(T::DbWeight::get().writes(2))
 			.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::CurrentPeriodIndex` (r:1 w:0)
+	/// Proof: `Distance::CurrentPeriodIndex` (`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]`.
@@ -138,11 +134,11 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `162 + i * (10 ±0)`
 		//  Estimated: `1647 + i * (10 ±0)`
-		// Minimum execution time: 7_715_000 picoseconds.
-		Weight::from_parts(9_191_420, 0)
+		// Minimum execution time: 7_354_000 picoseconds.
+		Weight::from_parts(9_938_924, 0)
 			.saturating_add(Weight::from_parts(0, 1647))
-			// Standard Error: 215
-			.saturating_add(Weight::from_parts(105_937, 0).saturating_mul(i.into()))
+			// Standard Error: 94
+			.saturating_add(Weight::from_parts(101_291, 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,8 +153,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `539`
 		//  Estimated: `6479`
-		// Minimum execution time: 29_644_000 picoseconds.
-		Weight::from_parts(31_245_000, 0)
+		// Minimum execution time: 26_164_000 picoseconds.
+		Weight::from_parts(27_897_000, 0)
 			.saturating_add(Weight::from_parts(0, 6479))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -167,8 +163,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 86_000 picoseconds.
-		Weight::from_parts(105_000, 0)
+		// Minimum execution time: 97_000 picoseconds.
+		Weight::from_parts(119_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `System::ParentHash` (r:1 w:0)
@@ -180,7 +176,7 @@ impl<T: frame_system::Config> pallet_distance::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`)
 	/// Storage: `Balances::Holds` (r:1 w:1)
-	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(89), added: 2564, 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,8 +189,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `951`
 		//  Estimated: `6891`
-		// Minimum execution time: 62_874_000 picoseconds.
-		Weight::from_parts(65_306_000, 0)
+		// Minimum execution time: 58_667_000 picoseconds.
+		Weight::from_parts(60_042_000, 0)
 			.saturating_add(Weight::from_parts(0, 6891))
 			.saturating_add(T::DbWeight::get().reads(9))
 			.saturating_add(T::DbWeight::get().writes(8))
@@ -206,7 +202,7 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 	/// 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`)
+	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(89), added: 2564, mode: `MaxEncodedLen`)
 	/// Storage: `System::Account` (r:2 w:2)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	/// Storage: `Distance::EvaluationBlock` (r:0 w:1)
@@ -215,8 +211,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `475`
 		//  Estimated: `6126`
-		// Minimum execution time: 42_378_000 picoseconds.
-		Weight::from_parts(43_369_000, 0)
+		// Minimum execution time: 42_034_000 picoseconds.
+		Weight::from_parts(43_262_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(6))
@@ -231,8 +227,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `136`
 		//  Estimated: `1621`
-		// Minimum execution time: 4_389_000 picoseconds.
-		Weight::from_parts(4_695_000, 0)
+		// Minimum execution time: 4_261_000 picoseconds.
+		Weight::from_parts(4_580_000, 0)
 			.saturating_add(Weight::from_parts(0, 1621))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -243,8 +239,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `157`
 		//  Estimated: `1642`
-		// Minimum execution time: 4_213_000 picoseconds.
-		Weight::from_parts(4_441_000, 0)
+		// Minimum execution time: 4_060_000 picoseconds.
+		Weight::from_parts(4_312_000, 0)
 			.saturating_add(Weight::from_parts(0, 1642))
 			.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
index d13bf5b85ab5dbca0094127446b74d54de82bd7f..9731c3b385dada7e749e390f1fd03ce30b49afb5 100644
--- a/runtime/gtest/src/weights/pallet_duniter_account.rs
+++ b/runtime/gtest/src/weights/pallet_duniter_account.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_duniter_account`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 4_308_000 picoseconds.
-		Weight::from_parts(4_654_000, 0)
+		// Minimum execution time: 4_257_000 picoseconds.
+		Weight::from_parts(4_495_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_identity.rs b/runtime/gtest/src/weights/pallet_identity.rs
index ece6cef2de8ad008479ac1e986016814eec7b05e..bc74383d962f53858155ae6903a7e45e78fcdcd7 100644
--- a/runtime/gtest/src/weights/pallet_identity.rs
+++ b/runtime/gtest/src/weights/pallet_identity.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_identity`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -71,8 +71,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1042`
 		//  Estimated: `6982`
-		// Minimum execution time: 68_755_000 picoseconds.
-		Weight::from_parts(71_780_000, 0)
+		// Minimum execution time: 66_537_000 picoseconds.
+		Weight::from_parts(68_909_000, 0)
 			.saturating_add(Weight::from_parts(0, 6982))
 			.saturating_add(T::DbWeight::get().reads(12))
 			.saturating_add(T::DbWeight::get().writes(12))
@@ -89,8 +89,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `784`
 		//  Estimated: `6724`
-		// Minimum execution time: 34_442_000 picoseconds.
-		Weight::from_parts(36_111_000, 0)
+		// Minimum execution time: 31_674_000 picoseconds.
+		Weight::from_parts(33_740_000, 0)
 			.saturating_add(Weight::from_parts(0, 6724))
 			.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:  `964`
-		//  Estimated: `6904`
-		// Minimum execution time: 82_826_000 picoseconds.
-		Weight::from_parts(85_543_000, 0)
-			.saturating_add(Weight::from_parts(0, 6904))
+		//  Measured:  `960`
+		//  Estimated: `6900`
+		// Minimum execution time: 81_164_000 picoseconds.
+		Weight::from_parts(83_820_000, 0)
+			.saturating_add(Weight::from_parts(0, 6900))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(5))
 	}
@@ -127,21 +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:  `697`
-		//  Estimated: `6637`
-		// Minimum execution time: 69_941_000 picoseconds.
-		Weight::from_parts(71_920_000, 0)
-			.saturating_add(Weight::from_parts(0, 6637))
-			.saturating_add(T::DbWeight::get().reads(5))
-			.saturating_add(T::DbWeight::get().writes(5))
-	}
-	fn revoke_identity_legacy() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `697`
-		//  Estimated: `6637`
-		// Minimum execution time: 69_941_000 picoseconds.
-		Weight::from_parts(71_920_000, 0)
-			.saturating_add(Weight::from_parts(0, 6637))
+		//  Measured:  `673`
+		//  Estimated: `6613`
+		// Minimum execution time: 67_207_000 picoseconds.
+		Weight::from_parts(68_700_000, 0)
+			.saturating_add(Weight::from_parts(0, 6613))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(5))
 	}
@@ -152,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: 4_036_000 picoseconds.
-		Weight::from_parts(4_192_000, 0)
+		// Minimum execution time: 4_206_000 picoseconds.
+		Weight::from_parts(4_292_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_414
-			.saturating_add(Weight::from_parts(1_234_192, 0).saturating_mul(i.into()))
+			// Standard Error: 1_418
+			.saturating_add(Weight::from_parts(1_184_565, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes(1))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
@@ -166,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: 7_560_000 picoseconds.
-		Weight::from_parts(7_947_000, 0)
+		// Minimum execution time: 7_283_000 picoseconds.
+		Weight::from_parts(7_864_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -180,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: 54_978_000 picoseconds.
-		Weight::from_parts(56_729_000, 0)
-			.saturating_add(Weight::from_parts(0, 3868))
+		//  Measured:  `379`
+		//  Estimated: `3844`
+		// Minimum execution time: 51_963_000 picoseconds.
+		Weight::from_parts(53_708_000, 0)
+			.saturating_add(Weight::from_parts(0, 3844))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -192,8 +182,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 85_000 picoseconds.
-		Weight::from_parts(105_000, 0)
+		// Minimum execution time: 89_000 picoseconds.
+		Weight::from_parts(111_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Identity::Identities` (r:1 w:0)
@@ -202,8 +192,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `327`
 		//  Estimated: `3792`
-		// Minimum execution time: 5_215_000 picoseconds.
-		Weight::from_parts(5_477_000, 0)
+		// Minimum execution time: 4_839_000 picoseconds.
+		Weight::from_parts(5_163_000, 0)
 			.saturating_add(Weight::from_parts(0, 3792))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -239,11 +229,11 @@ 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:  `1873`
-		//  Estimated: `15238`
-		// Minimum execution time: 106_753_000 picoseconds.
-		Weight::from_parts(110_773_000, 0)
-			.saturating_add(Weight::from_parts(0, 15238))
+		//  Measured:  `1840`
+		//  Estimated: `15205`
+		// Minimum execution time: 103_148_000 picoseconds.
+		Weight::from_parts(107_169_000, 0)
+			.saturating_add(Weight::from_parts(0, 15205))
 			.saturating_add(T::DbWeight::get().reads(18))
 			.saturating_add(T::DbWeight::get().writes(21))
 	}
@@ -253,8 +243,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `327`
 		//  Estimated: `3792`
-		// Minimum execution time: 4_861_000 picoseconds.
-		Weight::from_parts(5_300_000, 0)
+		// Minimum execution time: 4_856_000 picoseconds.
+		Weight::from_parts(5_168_000, 0)
 			.saturating_add(Weight::from_parts(0, 3792))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -284,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:6 w:6)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:5 w:5)
 	/// 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`)
@@ -294,13 +284,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:  `2322`
-		//  Estimated: `18162`
-		// Minimum execution time: 153_390_000 picoseconds.
-		Weight::from_parts(165_702_000, 0)
-			.saturating_add(Weight::from_parts(0, 18162))
-			.saturating_add(T::DbWeight::get().reads(24))
-			.saturating_add(T::DbWeight::get().writes(30))
+		//  Measured:  `2289`
+		//  Estimated: `15654`
+		// Minimum execution time: 144_145_000 picoseconds.
+		Weight::from_parts(152_631_000, 0)
+			.saturating_add(Weight::from_parts(0, 15654))
+			.saturating_add(T::DbWeight::get().reads(23))
+			.saturating_add(T::DbWeight::get().writes(29))
 	}
 	/// Storage: `Membership::Membership` (r:1 w:1)
 	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -330,7 +320,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:6 w:6)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:5 w:5)
 	/// 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`)
@@ -338,13 +328,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:  `2315`
-		//  Estimated: `18155`
-		// Minimum execution time: 149_574_000 picoseconds.
-		Weight::from_parts(155_209_000, 0)
-			.saturating_add(Weight::from_parts(0, 18155))
-			.saturating_add(T::DbWeight::get().reads(25))
-			.saturating_add(T::DbWeight::get().writes(28))
+		//  Measured:  `2282`
+		//  Estimated: `15647`
+		// Minimum execution time: 132_636_000 picoseconds.
+		Weight::from_parts(138_006_000, 0)
+			.saturating_add(Weight::from_parts(0, 15647))
+			.saturating_add(T::DbWeight::get().reads(24))
+			.saturating_add(T::DbWeight::get().writes(27))
 	}
 	/// Storage: `Identity::Identities` (r:1 w:1)
 	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -354,8 +344,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `407`
 		//  Estimated: `6347`
-		// Minimum execution time: 17_050_000 picoseconds.
-		Weight::from_parts(18_246_000, 0)
+		// Minimum execution time: 15_981_000 picoseconds.
+		Weight::from_parts(16_564_000, 0)
 			.saturating_add(Weight::from_parts(0, 6347))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -366,8 +356,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `108`
 		//  Estimated: `3573`
-		// Minimum execution time: 2_963_000 picoseconds.
-		Weight::from_parts(3_155_000, 0)
+		// Minimum execution time: 2_741_000 picoseconds.
+		Weight::from_parts(2_990_000, 0)
 			.saturating_add(Weight::from_parts(0, 3573))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -379,8 +369,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `325`
 		//  Estimated: `3790`
-		// Minimum execution time: 7_923_000 picoseconds.
-		Weight::from_parts(8_194_000, 0)
+		// Minimum execution time: 7_492_000 picoseconds.
+		Weight::from_parts(8_063_000, 0)
 			.saturating_add(Weight::from_parts(0, 3790))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -405,10 +395,30 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `914`
 		//  Estimated: `4379`
-		// Minimum execution time: 37_843_000 picoseconds.
-		Weight::from_parts(39_298_000, 0)
+		// Minimum execution time: 36_776_000 picoseconds.
+		Weight::from_parts(37_873_000, 0)
 			.saturating_add(Weight::from_parts(0, 4379))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(7))
 	}
+	/// Storage: `Identity::IdentitiesNames` (r:1 w:0)
+	/// Proof: `Identity::IdentitiesNames` (`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: `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_legacy() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `823`
+		//  Estimated: `6763`
+		// Minimum execution time: 129_759_000 picoseconds.
+		Weight::from_parts(132_851_000, 0)
+			.saturating_add(Weight::from_parts(0, 6763))
+			.saturating_add(T::DbWeight::get().reads(5))
+			.saturating_add(T::DbWeight::get().writes(5))
+	}
 }
diff --git a/runtime/gtest/src/weights/pallet_im_online.rs b/runtime/gtest/src/weights/pallet_im_online.rs
index 8d3e4f80ca95739e35e58670105ef16d3e06d757..bea96f15d5863d8ee7871a30f7981bfdff3c9eff 100644
--- a/runtime/gtest/src/weights/pallet_im_online.rs
+++ b/runtime/gtest/src/weights/pallet_im_online.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_im_online`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -62,11 +62,11 @@ impl<T: frame_system::Config> pallet_im_online::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `525 + k * (32 ±0)`
 		//  Estimated: `33487 + k * (1761 ±0)`
-		// Minimum execution time: 54_826_000 picoseconds.
-		Weight::from_parts(66_447_730, 0)
+		// Minimum execution time: 53_395_000 picoseconds.
+		Weight::from_parts(63_370_698, 0)
 			.saturating_add(Weight::from_parts(0, 33487))
-			// Standard Error: 562
-			.saturating_add(Weight::from_parts(42_980, 0).saturating_mul(k.into()))
+			// Standard Error: 534
+			.saturating_add(Weight::from_parts(47_692, 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
index 40a2d645addf77f18340032953c523f9d10ba9cc..bc72ee4225356e14da876c9e127d3dde0387c895 100644
--- a/runtime/gtest/src/weights/pallet_membership.rs
+++ b/runtime/gtest/src/weights/pallet_membership.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_membership`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 105_000 picoseconds.
-		Weight::from_parts(137_000, 0)
+		// Minimum execution time: 92_000 picoseconds.
+		Weight::from_parts(112_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Membership::MembershipsExpireOn` (r:2 w:1)
@@ -86,13 +86,13 @@ 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:  `139 + i * (960 ±0)`
-		//  Estimated: `14995 + i * (2695 ±1)`
-		// Minimum execution time: 5_479_000 picoseconds.
-		Weight::from_parts(14_151_165, 0)
-			.saturating_add(Weight::from_parts(0, 14995))
-			// Standard Error: 592_743
-			.saturating_add(Weight::from_parts(76_914_637, 0).saturating_mul(i.into()))
+		//  Measured:  `139 + i * (944 ±0)`
+		//  Estimated: `14961 + i * (2695 ±1)`
+		// Minimum execution time: 5_196_000 picoseconds.
+		Weight::from_parts(13_837_036, 0)
+			.saturating_add(Weight::from_parts(0, 14961))
+			// Standard Error: 589_032
+			.saturating_add(Weight::from_parts(73_758_233, 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))
diff --git a/runtime/gtest/src/weights/pallet_multisig.rs b/runtime/gtest/src/weights/pallet_multisig.rs
index 44ef717a6703283bea9e0267728b72f7b76e2730..4461c1a0e75a633e588c36b577a12c76649e0de7 100644
--- a/runtime/gtest/src/weights/pallet_multisig.rs
+++ b/runtime/gtest/src/weights/pallet_multisig.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_multisig`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 5_402_000 picoseconds.
-		Weight::from_parts(5_734_667, 0)
+		// Minimum execution time: 5_364_000 picoseconds.
+		Weight::from_parts(5_785_043, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 2
-			.saturating_add(Weight::from_parts(334, 0).saturating_mul(z.into()))
+			.saturating_add(Weight::from_parts(322, 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: 27_930_000 picoseconds.
-		Weight::from_parts(28_061_965, 0)
+		// Minimum execution time: 26_417_000 picoseconds.
+		Weight::from_parts(25_303_288, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 6_976
-			.saturating_add(Weight::from_parts(140_667, 0).saturating_mul(s.into()))
-			// Standard Error: 6
-			.saturating_add(Weight::from_parts(1_068, 0).saturating_mul(z.into()))
+			// Standard Error: 5_707
+			.saturating_add(Weight::from_parts(178_274, 0).saturating_mul(s.into()))
+			// Standard Error: 4
+			.saturating_add(Weight::from_parts(1_182, 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: 15_840_000 picoseconds.
-		Weight::from_parts(16_001_349, 0)
+		// Minimum execution time: 15_145_000 picoseconds.
+		Weight::from_parts(14_782_120, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 4_919
-			.saturating_add(Weight::from_parts(70_289, 0).saturating_mul(s.into()))
+			// Standard Error: 4_703
+			.saturating_add(Weight::from_parts(125_383, 0).saturating_mul(s.into()))
 			// Standard Error: 3
-			.saturating_add(Weight::from_parts(1_070, 0).saturating_mul(z.into()))
+			.saturating_add(Weight::from_parts(1_172, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -104,58 +104,67 @@ 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: 30_254_000 picoseconds.
-		Weight::from_parts(31_261_609, 0)
+		// Minimum execution time: 28_907_000 picoseconds.
+		Weight::from_parts(27_961_807, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 6_677
-			.saturating_add(Weight::from_parts(73_545, 0).saturating_mul(s.into()))
+			// Standard Error: 6_354
+			.saturating_add(Weight::from_parts(176_201, 0).saturating_mul(s.into()))
 			// Standard Error: 5
-			.saturating_add(Weight::from_parts(1_061, 0).saturating_mul(z.into()))
+			.saturating_add(Weight::from_parts(1_166, 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 {
+	/// The range of component `z` is `[0, 10000]`.
+	fn approve_as_multi_create(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `130 + s * (5 ±0)`
+		//  Measured:  `125 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 25_378_000 picoseconds.
-		Weight::from_parts(26_802_406, 0)
+		// Minimum execution time: 23_743_000 picoseconds.
+		Weight::from_parts(24_364_063, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 7_813
-			.saturating_add(Weight::from_parts(167_683, 0).saturating_mul(s.into()))
+			// Standard Error: 5_325
+			.saturating_add(Weight::from_parts(186_053, 0).saturating_mul(s.into()))
+			// Standard Error: 4
+			.saturating_add(Weight::from_parts(27, 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 `[2, 10]`.
-	fn approve_as_multi_approve(s: u32, ) -> Weight {
+	/// The range of component `z` is `[0, 10000]`.
+	fn approve_as_multi_approve(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `240`
 		//  Estimated: `3922`
-		// Minimum execution time: 14_013_000 picoseconds.
-		Weight::from_parts(14_774_271, 0)
+		// Minimum execution time: 13_679_000 picoseconds.
+		Weight::from_parts(13_991_998, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 3_855
-			.saturating_add(Weight::from_parts(111_703, 0).saturating_mul(s.into()))
+			// Standard Error: 3_512
+			.saturating_add(Weight::from_parts(114_530, 0).saturating_mul(s.into()))
+			// Standard Error: 3
+			.saturating_add(Weight::from_parts(20, 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 `[2, 10]`.
-	fn cancel_as_multi(s: u32, ) -> Weight {
+	/// The range of component `z` is `[0, 10000]`.
+	fn cancel_as_multi(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `328 + s * (5 ±0)`
+		//  Measured:  `323 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 25_931_000 picoseconds.
-		Weight::from_parts(27_792_486, 0)
+		// Minimum execution time: 24_305_000 picoseconds.
+		Weight::from_parts(24_929_839, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_947
-			.saturating_add(Weight::from_parts(132_444, 0).saturating_mul(s.into()))
+			// Standard Error: 4_352
+			.saturating_add(Weight::from_parts(160_571, 0).saturating_mul(s.into()))
+			// Standard Error: 3
+			.saturating_add(Weight::from_parts(21, 0).saturating_mul(z.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
index 4cfc554734a2ba08a255c57e9673d8a448d5fe18..b085e4d1b3719f7a6aeb5affef5f953aed7b5f6a 100644
--- a/runtime/gtest/src/weights/pallet_oneshot_account.rs
+++ b/runtime/gtest/src/weights/pallet_oneshot_account.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_oneshot_account`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 21_166_000 picoseconds.
-		Weight::from_parts(21_892_000, 0)
+		// Minimum execution time: 21_304_000 picoseconds.
+		Weight::from_parts(22_409_000, 0)
 			.saturating_add(Weight::from_parts(0, 3507))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -67,11 +67,11 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 	/// 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: 30_530_000 picoseconds.
-		Weight::from_parts(31_743_000, 0)
-			.saturating_add(Weight::from_parts(0, 3706))
+		//  Measured:  `217`
+		//  Estimated: `3682`
+		// Minimum execution time: 28_122_000 picoseconds.
+		Weight::from_parts(28_814_000, 0)
+			.saturating_add(Weight::from_parts(0, 3682))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -83,10 +83,10 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 	/// 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`
+		//  Measured:  `277`
 		//  Estimated: `6126`
-		// Minimum execution time: 44_700_000 picoseconds.
-		Weight::from_parts(47_037_000, 0)
+		// Minimum execution time: 41_170_000 picoseconds.
+		Weight::from_parts(42_802_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
index 8673588f3a98e39341077ea4210aef84e6c18cb4..6bc43bfdd4aab051510c49d753c37c099249f450 100644
--- a/runtime/gtest/src/weights/pallet_preimage.rs
+++ b/runtime/gtest/src/weights/pallet_preimage.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_preimage`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -56,13 +56,13 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 4194304]`.
 	fn note_preimage(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `42`
+		//  Measured:  `4`
 		//  Estimated: `3548`
-		// Minimum execution time: 11_995_000 picoseconds.
-		Weight::from_parts(12_438_000, 0)
+		// Minimum execution time: 11_400_000 picoseconds.
+		Weight::from_parts(11_727_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_276, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_277, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -75,13 +75,13 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 4194304]`.
 	fn note_requested_preimage(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `106`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 15_871_000 picoseconds.
-		Weight::from_parts(16_038_000, 0)
+		// Minimum execution time: 13_370_000 picoseconds.
+		Weight::from_parts(13_819_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_277, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_276, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -94,13 +94,13 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 4194304]`.
 	fn note_no_deposit_preimage(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `106`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 13_450_000 picoseconds.
-		Weight::from_parts(13_904_000, 0)
+		// Minimum execution time: 12_797_000 picoseconds.
+		Weight::from_parts(13_127_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_357, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_359, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -112,10 +112,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `134`
 		//  Estimated: `3548`
-		// Minimum execution time: 22_973_000 picoseconds.
-		Weight::from_parts(24_538_000, 0)
+		// Minimum execution time: 19_865_000 picoseconds.
+		Weight::from_parts(21_735_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -128,10 +128,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 22_976_000 picoseconds.
-		Weight::from_parts(24_675_000, 0)
+		// Minimum execution time: 20_597_000 picoseconds.
+		Weight::from_parts(22_866_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -142,10 +142,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `134`
 		//  Estimated: `3548`
-		// Minimum execution time: 21_408_000 picoseconds.
-		Weight::from_parts(22_984_000, 0)
+		// Minimum execution time: 17_511_000 picoseconds.
+		Weight::from_parts(18_345_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -156,10 +156,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 13_888_000 picoseconds.
-		Weight::from_parts(15_741_000, 0)
+		// Minimum execution time: 12_009_000 picoseconds.
+		Weight::from_parts(12_814_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -170,10 +170,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `4`
 		//  Estimated: `3548`
-		// Minimum execution time: 10_826_000 picoseconds.
-		Weight::from_parts(11_410_000, 0)
+		// Minimum execution time: 9_896_000 picoseconds.
+		Weight::from_parts(11_114_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -184,10 +184,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 9_166_000 picoseconds.
-		Weight::from_parts(10_050_000, 0)
+		// Minimum execution time: 7_939_000 picoseconds.
+		Weight::from_parts(8_424_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -200,10 +200,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 20_526_000 picoseconds.
-		Weight::from_parts(22_704_000, 0)
+		// Minimum execution time: 18_338_000 picoseconds.
+		Weight::from_parts(19_844_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -214,10 +214,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 8_648_000 picoseconds.
-		Weight::from_parts(9_293_000, 0)
+		// Minimum execution time: 8_162_000 picoseconds.
+		Weight::from_parts(9_031_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -228,10 +228,10 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `68`
 		//  Estimated: `3548`
-		// Minimum execution time: 8_596_000 picoseconds.
-		Weight::from_parts(9_282_000, 0)
+		// Minimum execution time: 7_889_000 picoseconds.
+		Weight::from_parts(8_941_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: 19_474_000 picoseconds.
-		Weight::from_parts(20_048_000, 0)
+		// Minimum execution time: 18_723_000 picoseconds.
+		Weight::from_parts(18_962_000, 0)
 			.saturating_add(Weight::from_parts(0, 990))
-			// Standard Error: 17_666
-			.saturating_add(Weight::from_parts(15_238_060, 0).saturating_mul(n.into()))
+			// Standard Error: 15_841
+			.saturating_add(Weight::from_parts(14_499_057, 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
index 885a31777ee6ad322e5bcae030c6bfc78d7238fc..08c2b4f927d2b8ed32e925fdc76cc9f3be714791 100644
--- a/runtime/gtest/src/weights/pallet_provide_randomness.rs
+++ b/runtime/gtest/src/weights/pallet_provide_randomness.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_provide_randomness`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 45_460_000 picoseconds.
-		Weight::from_parts(46_779_000, 0)
+		// Minimum execution time: 42_091_000 picoseconds.
+		Weight::from_parts(43_488_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: 20_516_000 picoseconds.
-		Weight::from_parts(18_960_016, 0)
+		// Minimum execution time: 18_327_000 picoseconds.
+		Weight::from_parts(19_227_339, 0)
 			.saturating_add(Weight::from_parts(0, 1827))
-			// Standard Error: 4_979
-			.saturating_add(Weight::from_parts(5_509_698, 0).saturating_mul(i.into()))
+			// Standard Error: 9_787
+			.saturating_add(Weight::from_parts(5_408_556, 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: 22_272_000 picoseconds.
-		Weight::from_parts(20_784_912, 0)
+		// Minimum execution time: 19_658_000 picoseconds.
+		Weight::from_parts(18_373_418, 0)
 			.saturating_add(Weight::from_parts(0, 3817))
-			// Standard Error: 9_029
-			.saturating_add(Weight::from_parts(5_915_066, 0).saturating_mul(i.into()))
+			// Standard Error: 6_234
+			.saturating_add(Weight::from_parts(5_823_862, 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/gtest/src/weights/pallet_proxy.rs b/runtime/gtest/src/weights/pallet_proxy.rs
index 245d3a9619643d5fbd8c450af28d1e6e6374f103..d2a8a94a7f1a5ba0617961b98896006a149e2cf4 100644
--- a/runtime/gtest/src/weights/pallet_proxy.rs
+++ b/runtime/gtest/src/weights/pallet_proxy.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_proxy`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 13_847_000 picoseconds.
-		Weight::from_parts(14_157_757, 0)
+		// Minimum execution time: 12_080_000 picoseconds.
+		Weight::from_parts(12_953_694, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 11_841
-			.saturating_add(Weight::from_parts(96_916, 0).saturating_mul(p.into()))
+			// Standard Error: 1_411
+			.saturating_add(Weight::from_parts(31_386, 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: 32_798_000 picoseconds.
-		Weight::from_parts(33_437_104, 0)
+		// Minimum execution time: 31_980_000 picoseconds.
+		Weight::from_parts(33_042_619, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 2_218
-			.saturating_add(Weight::from_parts(129_003, 0).saturating_mul(a.into()))
-			// Standard Error: 2_291
-			.saturating_add(Weight::from_parts(34_559, 0).saturating_mul(p.into()))
+			// Standard Error: 2_556
+			.saturating_add(Weight::from_parts(126_904, 0).saturating_mul(a.into()))
+			// Standard Error: 2_641
+			.saturating_add(Weight::from_parts(36_564, 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: 22_460_000 picoseconds.
-		Weight::from_parts(22_931_792, 0)
+		// Minimum execution time: 20_496_000 picoseconds.
+		Weight::from_parts(21_369_049, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_607
-			.saturating_add(Weight::from_parts(149_039, 0).saturating_mul(a.into()))
-			// Standard Error: 1_660
-			.saturating_add(Weight::from_parts(12_237, 0).saturating_mul(p.into()))
+			// Standard Error: 1_497
+			.saturating_add(Weight::from_parts(134_327, 0).saturating_mul(a.into()))
+			// Standard Error: 1_547
+			.saturating_add(Weight::from_parts(2_837, 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: 22_374_000 picoseconds.
-		Weight::from_parts(23_055_158, 0)
+		// Minimum execution time: 20_074_000 picoseconds.
+		Weight::from_parts(20_788_282, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_686
-			.saturating_add(Weight::from_parts(136_722, 0).saturating_mul(a.into()))
-			// Standard Error: 1_742
-			.saturating_add(Weight::from_parts(11_068, 0).saturating_mul(p.into()))
+			// Standard Error: 1_804
+			.saturating_add(Weight::from_parts(147_279, 0).saturating_mul(a.into()))
+			// Standard Error: 1_864
+			.saturating_add(Weight::from_parts(13_614, 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: 29_361_000 picoseconds.
-		Weight::from_parts(29_911_130, 0)
+		// Minimum execution time: 27_325_000 picoseconds.
+		Weight::from_parts(29_532_669, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_868
-			.saturating_add(Weight::from_parts(143_513, 0).saturating_mul(a.into()))
-			// Standard Error: 1_930
-			.saturating_add(Weight::from_parts(40_046, 0).saturating_mul(p.into()))
+			// Standard Error: 1_989
+			.saturating_add(Weight::from_parts(143_167, 0).saturating_mul(a.into()))
+			// Standard Error: 2_055
+			.saturating_add(Weight::from_parts(44_734, 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: 21_235_000 picoseconds.
-		Weight::from_parts(22_514_912, 0)
+		// Minimum execution time: 19_246_000 picoseconds.
+		Weight::from_parts(20_200_151, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_976
-			.saturating_add(Weight::from_parts(41_364, 0).saturating_mul(p.into()))
+			// Standard Error: 1_581
+			.saturating_add(Weight::from_parts(47_338, 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: 21_548_000 picoseconds.
-		Weight::from_parts(22_466_787, 0)
+		// Minimum execution time: 19_136_000 picoseconds.
+		Weight::from_parts(20_453_597, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_893
-			.saturating_add(Weight::from_parts(46_469, 0).saturating_mul(p.into()))
+			// Standard Error: 1_810
+			.saturating_add(Weight::from_parts(44_406, 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: 19_311_000 picoseconds.
-		Weight::from_parts(20_351_733, 0)
+		// Minimum execution time: 17_393_000 picoseconds.
+		Weight::from_parts(18_608_520, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_377
-			.saturating_add(Weight::from_parts(47_135, 0).saturating_mul(p.into()))
+			// Standard Error: 1_837
+			.saturating_add(Weight::from_parts(27_026, 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: 22_541_000 picoseconds.
-		Weight::from_parts(23_604_024, 0)
+		// Minimum execution time: 20_391_000 picoseconds.
+		Weight::from_parts(21_824_221, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_187
-			.saturating_add(Weight::from_parts(13_008, 0).saturating_mul(p.into()))
+			// Standard Error: 1_581
+			.saturating_add(Weight::from_parts(2_212, 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: 19_371_000 picoseconds.
-		Weight::from_parts(20_993_121, 0)
+		// Minimum execution time: 17_990_000 picoseconds.
+		Weight::from_parts(19_139_776, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_372
-			.saturating_add(Weight::from_parts(38_268, 0).saturating_mul(p.into()))
+			// Standard Error: 5_685
+			.saturating_add(Weight::from_parts(31_285, 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_scheduler.rs b/runtime/gtest/src/weights/pallet_scheduler.rs
index 18e5ac1218163e516bfe329387d998f161458ba5..fa06c800832d4a9f86de10e6567b3a9edafdfda0 100644
--- a/runtime/gtest/src/weights/pallet_scheduler.rs
+++ b/runtime/gtest/src/weights/pallet_scheduler.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_scheduler`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -51,10 +51,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `31`
 		//  Estimated: `1489`
-		// Minimum execution time: 3_302_000 picoseconds.
-		Weight::from_parts(3_504_000, 0)
+		// Minimum execution time: 3_093_000 picoseconds.
+		Weight::from_parts(3_273_000, 0)
 			.saturating_add(Weight::from_parts(0, 1489))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -64,13 +64,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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)`
+		//  Measured:  `78 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 3_285_000 picoseconds.
-		Weight::from_parts(6_925_828, 0)
+		// Minimum execution time: 3_251_000 picoseconds.
+		Weight::from_parts(6_678_343, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_944
-			.saturating_add(Weight::from_parts(264_477, 0).saturating_mul(s.into()))
+			// Standard Error: 1_681
+			.saturating_add(Weight::from_parts(249_048, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -78,8 +78,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_830_000 picoseconds.
-		Weight::from_parts(3_038_000, 0)
+		// Minimum execution time: 2_918_000 picoseconds.
+		Weight::from_parts(3_249_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Preimage::PreimageFor` (r:1 w:1)
@@ -91,13 +91,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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)`
+		//  Measured:  `141 + s * (1 ±0)`
 		//  Estimated: `4197809`
-		// Minimum execution time: 17_515_000 picoseconds.
-		Weight::from_parts(17_805_000, 0)
+		// Minimum execution time: 15_525_000 picoseconds.
+		Weight::from_parts(15_681_000, 0)
 			.saturating_add(Weight::from_parts(0, 4197809))
 			// Standard Error: 2
-			.saturating_add(Weight::from_parts(881, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(877, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -107,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: 4_313_000 picoseconds.
-		Weight::from_parts(4_580_000, 0)
+		// Minimum execution time: 4_209_000 picoseconds.
+		Weight::from_parts(4_560_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -116,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_837_000 picoseconds.
-		Weight::from_parts(3_142_000, 0)
+		// Minimum execution time: 2_765_000 picoseconds.
+		Weight::from_parts(3_002_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_902_000 picoseconds.
-		Weight::from_parts(2_064_000, 0)
+		// Minimum execution time: 1_957_000 picoseconds.
+		Weight::from_parts(2_170_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_798_000 picoseconds.
-		Weight::from_parts(1_969_000, 0)
+		// Minimum execution time: 2_028_000 picoseconds.
+		Weight::from_parts(2_184_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Scheduler::Agenda` (r:1 w:1)
@@ -141,13 +141,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 49]`.
 	fn schedule(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `77 + s * (177 ±0)`
+		//  Measured:  `78 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 9_118_000 picoseconds.
-		Weight::from_parts(12_701_049, 0)
+		// Minimum execution time: 8_554_000 picoseconds.
+		Weight::from_parts(12_083_564, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_936
-			.saturating_add(Weight::from_parts(278_755, 0).saturating_mul(s.into()))
+			// Standard Error: 1_745
+			.saturating_add(Weight::from_parts(266_177, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -160,13 +160,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[1, 50]`.
 	fn cancel(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `77 + s * (177 ±0)`
+		//  Measured:  `78 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 14_061_000 picoseconds.
-		Weight::from_parts(15_394_385, 0)
+		// Minimum execution time: 13_516_000 picoseconds.
+		Weight::from_parts(14_830_688, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 2_000
-			.saturating_add(Weight::from_parts(422_004, 0).saturating_mul(s.into()))
+			// Standard Error: 1_317
+			.saturating_add(Weight::from_parts(389_932, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -177,13 +177,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[0, 49]`.
 	fn schedule_named(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `254 + s * (185 ±0)`
+		//  Measured:  `255 + s * (185 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 11_605_000 picoseconds.
-		Weight::from_parts(17_353_573, 0)
+		// Minimum execution time: 11_545_000 picoseconds.
+		Weight::from_parts(16_355_221, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 4_377
-			.saturating_add(Weight::from_parts(329_843, 0).saturating_mul(s.into()))
+			// Standard Error: 2_856
+			.saturating_add(Weight::from_parts(300_083, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -196,13 +196,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[1, 50]`.
 	fn cancel_named(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `280 + s * (185 ±0)`
+		//  Measured:  `281 + s * (185 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 16_525_000 picoseconds.
-		Weight::from_parts(19_625_188, 0)
+		// Minimum execution time: 15_996_000 picoseconds.
+		Weight::from_parts(17_919_238, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 2_786
-			.saturating_add(Weight::from_parts(462_345, 0).saturating_mul(s.into()))
+			// Standard Error: 2_252
+			.saturating_add(Weight::from_parts(424_280, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -213,13 +213,13 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// The range of component `s` is `[1, 50]`.
 	fn schedule_retry(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `117`
+		//  Measured:  `118`
 		//  Estimated: `13928`
-		// Minimum execution time: 8_585_000 picoseconds.
-		Weight::from_parts(9_321_715, 0)
+		// Minimum execution time: 8_383_000 picoseconds.
+		Weight::from_parts(9_121_245, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 619
-			.saturating_add(Weight::from_parts(26_959, 0).saturating_mul(s.into()))
+			// Standard Error: 590
+			.saturating_add(Weight::from_parts(27_124, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -229,10 +229,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `8928`
 		//  Estimated: `13928`
-		// Minimum execution time: 20_927_000 picoseconds.
-		Weight::from_parts(21_777_000, 0)
+		// Minimum execution time: 19_798_000 picoseconds.
+		Weight::from_parts(20_980_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -245,10 +245,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `9606`
 		//  Estimated: `13928`
-		// Minimum execution time: 28_020_000 picoseconds.
-		Weight::from_parts(29_238_000, 0)
+		// Minimum execution time: 25_627_000 picoseconds.
+		Weight::from_parts(26_536_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -259,10 +259,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `8940`
 		//  Estimated: `13928`
-		// Minimum execution time: 20_075_000 picoseconds.
-		Weight::from_parts(21_511_000, 0)
+		// Minimum execution time: 19_394_000 picoseconds.
+		Weight::from_parts(19_828_000, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -275,10 +275,10 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 	/// 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`
+		//  Measured:  `9618`
 		//  Estimated: `13928`
-		// Minimum execution time: 27_430_000 picoseconds.
-		Weight::from_parts(28_593_000, 0)
+		// Minimum execution time: 24_693_000 picoseconds.
+		Weight::from_parts(25_438_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
index fe69fdcd512f9960c643124b5fca1961530a111a..3eafd76d0d7e2916b0a65ed40b704b3b84766b24 100644
--- a/runtime/gtest/src/weights/pallet_session.rs
+++ b/runtime/gtest/src/weights/pallet_session.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_session`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -55,8 +55,8 @@ impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `810`
 		//  Estimated: `11700`
-		// Minimum execution time: 29_118_000 picoseconds.
-		Weight::from_parts(29_902_000, 0)
+		// Minimum execution time: 25_575_000 picoseconds.
+		Weight::from_parts(26_268_000, 0)
 			.saturating_add(Weight::from_parts(0, 11700))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(5))
@@ -69,8 +69,8 @@ impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `477`
 		//  Estimated: `3942`
-		// Minimum execution time: 16_644_000 picoseconds.
-		Weight::from_parts(17_318_000, 0)
+		// Minimum execution time: 14_924_000 picoseconds.
+		Weight::from_parts(15_862_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
index 53b6599324445ea2072dc1bcaba8d73b8f901739..5f281eadf68fa5d5fc1e7cfa24f166daade07137 100644
--- a/runtime/gtest/src/weights/pallet_smith_members.rs
+++ b/runtime/gtest/src/weights/pallet_smith_members.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_smith_members`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -59,11 +59,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:  `801`
-		//  Estimated: `6741`
-		// Minimum execution time: 34_106_000 picoseconds.
-		Weight::from_parts(35_795_000, 0)
-			.saturating_add(Weight::from_parts(0, 6741))
+		//  Measured:  `748`
+		//  Estimated: `6688`
+		// Minimum execution time: 30_335_000 picoseconds.
+		Weight::from_parts(31_935_000, 0)
+			.saturating_add(Weight::from_parts(0, 6688))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -75,8 +75,8 @@ impl<T: frame_system::Config> pallet_smith_members::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `566`
 		//  Estimated: `4031`
-		// Minimum execution time: 18_751_000 picoseconds.
-		Weight::from_parts(19_979_000, 0)
+		// Minimum execution time: 16_152_000 picoseconds.
+		Weight::from_parts(16_868_000, 0)
 			.saturating_add(Weight::from_parts(0, 4031))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -91,11 +91,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 certify_smith() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `611`
-		//  Estimated: `6551`
-		// Minimum execution time: 28_428_000 picoseconds.
-		Weight::from_parts(29_966_000, 0)
-			.saturating_add(Weight::from_parts(0, 6551))
+		//  Measured:  `591`
+		//  Estimated: `6531`
+		// Minimum execution time: 24_939_000 picoseconds.
+		Weight::from_parts(25_892_000, 0)
+			.saturating_add(Weight::from_parts(0, 6531))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
@@ -117,11 +117,11 @@ 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:  `1204`
-		//  Estimated: `14569`
-		// Minimum execution time: 71_994_000 picoseconds.
-		Weight::from_parts(75_523_000, 0)
-			.saturating_add(Weight::from_parts(0, 14569))
+		//  Measured:  `1171`
+		//  Estimated: `14536`
+		// Minimum execution time: 66_210_000 picoseconds.
+		Weight::from_parts(71_483_000, 0)
+			.saturating_add(Weight::from_parts(0, 14536))
 			.saturating_add(T::DbWeight::get().reads(11))
 			.saturating_add(T::DbWeight::get().writes(15))
 	}
@@ -129,11 +129,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 on_removed_wot_member_empty() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `253`
-		//  Estimated: `3718`
-		// Minimum execution time: 4_215_000 picoseconds.
-		Weight::from_parts(4_487_000, 0)
-			.saturating_add(Weight::from_parts(0, 3718))
+		//  Measured:  `220`
+		//  Estimated: `3685`
+		// Minimum execution time: 3_794_000 picoseconds.
+		Weight::from_parts(4_236_000, 0)
+			.saturating_add(Weight::from_parts(0, 3685))
 			.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
index 812048e82112fbffb1b32f7c92c6d6664ea0c235..7b6ee13d2cfd193901935e16991ef82e78a456a4 100644
--- a/runtime/gtest/src/weights/pallet_sudo.rs
+++ b/runtime/gtest/src/weights/pallet_sudo.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_sudo`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 8_684_000 picoseconds.
-		Weight::from_parts(9_361_000, 0)
+		// Minimum execution time: 8_717_000 picoseconds.
+		Weight::from_parts(9_230_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: 9_133_000 picoseconds.
-		Weight::from_parts(9_729_000, 0)
+		// Minimum execution time: 8_907_000 picoseconds.
+		Weight::from_parts(9_413_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: 9_144_000 picoseconds.
-		Weight::from_parts(9_815_000, 0)
+		// Minimum execution time: 8_901_000 picoseconds.
+		Weight::from_parts(9_515_000, 0)
 			.saturating_add(Weight::from_parts(0, 1517))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -87,10 +87,21 @@ impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `165`
 		//  Estimated: `1517`
-		// Minimum execution time: 8_227_000 picoseconds.
-		Weight::from_parts(8_809_000, 0)
+		// Minimum execution time: 7_784_000 picoseconds.
+		Weight::from_parts(8_235_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 check_only_sudo_account() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `165`
+		//  Estimated: `1517`
+		// Minimum execution time: 3_264_000 picoseconds.
+		Weight::from_parts(3_533_000, 0)
+			.saturating_add(Weight::from_parts(0, 1517))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
 }
diff --git a/runtime/gtest/src/weights/pallet_timestamp.rs b/runtime/gtest/src/weights/pallet_timestamp.rs
index 7b233d2281e2cfc6ac22582cbe04178f6f26307f..c9c5cc67081160ea3393f60d06e897cc9a41b194 100644
--- a/runtime/gtest/src/weights/pallet_timestamp.rs
+++ b/runtime/gtest/src/weights/pallet_timestamp.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_timestamp`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -57,8 +57,8 @@ impl<T: frame_system::Config> pallet_timestamp::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `268`
 		//  Estimated: `1493`
-		// Minimum execution time: 11_746_000 picoseconds.
-		Weight::from_parts(12_396_000, 0)
+		// Minimum execution time: 10_595_000 picoseconds.
+		Weight::from_parts(11_028_000, 0)
 			.saturating_add(Weight::from_parts(0, 1493))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -67,8 +67,8 @@ impl<T: frame_system::Config> pallet_timestamp::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `57`
 		//  Estimated: `0`
-		// Minimum execution time: 3_514_000 picoseconds.
-		Weight::from_parts(3_884_000, 0)
+		// Minimum execution time: 3_309_000 picoseconds.
+		Weight::from_parts(3_526_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/gtest/src/weights/pallet_transaction_payment.rs b/runtime/gtest/src/weights/pallet_transaction_payment.rs
new file mode 100644
index 0000000000000000000000000000000000000000..43119f8c516506ea75077666ba33477fb1de8be1
--- /dev/null
+++ b/runtime/gtest/src/weights/pallet_transaction_payment.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_transaction_payment`
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
+
+// Executed Command:
+// target/release/duniter
+// benchmark
+// pallet
+// --genesis-builder=spec-genesis
+// --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_transaction_payment`.
+pub struct WeightInfo<T>(PhantomData<T>);
+impl<T: frame_system::Config> pallet_transaction_payment::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 charge_transaction_payment() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `124`
+		//  Estimated: `6126`
+		// Minimum execution time: 45_134_000 picoseconds.
+		Weight::from_parts(46_618_000, 0)
+			.saturating_add(Weight::from_parts(0, 6126))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().writes(2))
+	}
+}
diff --git a/runtime/gtest/src/weights/pallet_treasury.rs b/runtime/gtest/src/weights/pallet_treasury.rs
index 1c1778f1269381bd7f3c383dcd639991a8c9bf20..414a962bd4562235b0b7d77106c6826848fef755 100644
--- a/runtime/gtest/src/weights/pallet_treasury.rs
+++ b/runtime/gtest/src/weights/pallet_treasury.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_treasury`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -61,8 +61,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `6`
 		//  Estimated: `1887`
-		// Minimum execution time: 3_319_000 picoseconds.
-		Weight::from_parts(3_658_000, 0)
+		// Minimum execution time: 3_447_000 picoseconds.
+		Weight::from_parts(3_621_000, 0)
 			.saturating_add(Weight::from_parts(0, 1887))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -70,18 +70,18 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 	/// 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::LastSpendPeriod` (r:1 w:1)
+	/// Proof: `Treasury::LastSpendPeriod` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
 	/// The range of component `p` is `[0, 99]`.
 	fn on_initialize_proposals(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `82 + p * (1 ±0)`
 		//  Estimated: `3558`
-		// Minimum execution time: 14_943_000 picoseconds.
-		Weight::from_parts(16_363_156, 0)
+		// Minimum execution time: 10_682_000 picoseconds.
+		Weight::from_parts(12_020_888, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
-			// Standard Error: 753
-			.saturating_add(Weight::from_parts(36_684, 0).saturating_mul(p.into()))
+			// Standard Error: 417
+			.saturating_add(Weight::from_parts(22_993, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -99,8 +99,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `6`
 		//  Estimated: `3526`
-		// Minimum execution time: 4_739_000 picoseconds.
-		Weight::from_parts(4_875_000, 0)
+		// Minimum execution time: 4_535_000 picoseconds.
+		Weight::from_parts(4_862_000, 0)
 			.saturating_add(Weight::from_parts(0, 3526))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -110,8 +110,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `6`
 		//  Estimated: `3526`
-		// Minimum execution time: 4_652_000 picoseconds.
-		Weight::from_parts(4_922_000, 0)
+		// Minimum execution time: 4_604_000 picoseconds.
+		Weight::from_parts(4_766_000, 0)
 			.saturating_add(Weight::from_parts(0, 3526))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -121,8 +121,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `6`
 		//  Estimated: `3526`
-		// Minimum execution time: 4_033_000 picoseconds.
-		Weight::from_parts(4_300_000, 0)
+		// Minimum execution time: 4_143_000 picoseconds.
+		Weight::from_parts(4_415_000, 0)
 			.saturating_add(Weight::from_parts(0, 3526))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
diff --git a/runtime/gtest/src/weights/pallet_universal_dividend.rs b/runtime/gtest/src/weights/pallet_universal_dividend.rs
index 39afd99bb1a217c6ed97cf328b45eb0075ef29ef..efbe885a65b079628b9dc84c69684164fb45e9a7 100644
--- a/runtime/gtest/src/weights/pallet_universal_dividend.rs
+++ b/runtime/gtest/src/weights/pallet_universal_dividend.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_universal_dividend`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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:  `676`
 		//  Estimated: `4141`
-		// Minimum execution time: 36_013_000 picoseconds.
-		Weight::from_parts(37_871_239, 0)
+		// Minimum execution time: 33_238_000 picoseconds.
+		Weight::from_parts(35_304_866, 0)
 			.saturating_add(Weight::from_parts(0, 4141))
-			// Standard Error: 689
-			.saturating_add(Weight::from_parts(4_030, 0).saturating_mul(i.into()))
 			.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: 54_690_000 picoseconds.
-		Weight::from_parts(56_140_000, 0)
+		// Minimum execution time: 52_878_000 picoseconds.
+		Weight::from_parts(54_068_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: 34_614_000 picoseconds.
-		Weight::from_parts(35_538_000, 0)
+		// Minimum execution time: 33_633_000 picoseconds.
+		Weight::from_parts(35_597_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -109,8 +107,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `181`
 		//  Estimated: `3558`
-		// Minimum execution time: 19_823_000 picoseconds.
-		Weight::from_parts(21_133_050, 0)
+		// Minimum execution time: 19_251_000 picoseconds.
+		Weight::from_parts(20_602_146, 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
index 1487c1f904229bc72f3ae3768d9907835e79ccea..56ead9c79e4e0ce5748b8e845a6fd8314f59b1cc 100644
--- a/runtime/gtest/src/weights/pallet_upgrade_origin.rs
+++ b/runtime/gtest/src/weights/pallet_upgrade_origin.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_upgrade_origin`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 5_587_000 picoseconds.
-		Weight::from_parts(6_058_000, 0)
+		// Minimum execution time: 5_613_000 picoseconds.
+		Weight::from_parts(6_013_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
index b12f4dcdf510f837408c53d0b64327f9ffdd122d..fbcd847f8ac3a27f134d5f66a673ad91790e7497 100644
--- a/runtime/gtest/src/weights/pallet_utility.rs
+++ b/runtime/gtest/src/weights/pallet_utility.rs
@@ -16,8 +16,8 @@
 
 //! Autogenerated weights for `pallet_utility`
 //!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22, 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: `None`, DB CACHE: 1024
@@ -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: 4_430_000 picoseconds.
-		Weight::from_parts(6_831_888, 0)
+		// Minimum execution time: 4_240_000 picoseconds.
+		Weight::from_parts(9_851_743, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 726
-			.saturating_add(Weight::from_parts(2_094_088, 0).saturating_mul(c.into()))
+			// Standard Error: 2_521
+			.saturating_add(Weight::from_parts(2_070_739, 0).saturating_mul(c.into()))
 	}
 	fn as_derivative() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_664_000 picoseconds.
-		Weight::from_parts(3_785_000, 0)
+		// Minimum execution time: 3_773_000 picoseconds.
+		Weight::from_parts(3_989_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: 4_457_000 picoseconds.
-		Weight::from_parts(7_200_042, 0)
+		// Minimum execution time: 4_570_000 picoseconds.
+		Weight::from_parts(9_837_420, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 791
-			.saturating_add(Weight::from_parts(2_245_624, 0).saturating_mul(c.into()))
+			// Standard Error: 1_071
+			.saturating_add(Weight::from_parts(2_203_440, 0).saturating_mul(c.into()))
 	}
 	fn dispatch_as() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 5_798_000 picoseconds.
-		Weight::from_parts(6_062_000, 0)
+		// Minimum execution time: 5_860_000 picoseconds.
+		Weight::from_parts(6_215_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: 4_414_000 picoseconds.
-		Weight::from_parts(8_408_649, 0)
+		// Minimum execution time: 4_458_000 picoseconds.
+		Weight::from_parts(8_931_937, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_242
-			.saturating_add(Weight::from_parts(2_092_666, 0).saturating_mul(c.into()))
+			// Standard Error: 881
+			.saturating_add(Weight::from_parts(2_060_212, 0).saturating_mul(c.into()))
 	}
 }
diff --git a/runtime/gtest/src/weights/paritydb_weights.rs b/runtime/gtest/src/weights/paritydb_weights.rs
index f7e7a1bbce4b382aabbb31db680f3f06a6bb4e9f..140210851248752c2c543383c77e3c08c7b72991 100644
--- a/runtime/gtest/src/weights/paritydb_weights.rs
+++ b/runtime/gtest/src/weights/paritydb_weights.rs
@@ -1,6 +1,6 @@
 
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
-//! DATE: 2024-11-14 (Y/M/D)
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
+//! DATE: 2025-01-22 (Y/M/D)
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //!
 //! DATABASE: `ParityDb`, RUNTIME: `ĞTest Local Testnet`
@@ -34,31 +34,31 @@ pub mod constants {
 			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
 			///
 			/// Stats nanoseconds:
-			///   Min, Max: 790, 807_925
-			///   Average:  6_727
-			///   Median:   1_441
-			///   Std-Dev:  63946.66
+			///   Min, Max: 796, 826_063
+			///   Average:  6_938
+			///   Median:   1_573
+			///   Std-Dev:  65586.31
 			///
 			/// Percentiles nanoseconds:
-			///   99th: 8_511
-			///   95th: 2_555
-			///   75th: 1_923
-			read: 13_454 * constants::WEIGHT_REF_TIME_PER_NANOS,
+			///   99th: 8_551
+			///   95th: 2_544
+			///   75th: 1_928
+			read: 13_876 * 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_773, 6_377_215
-			///   Average:  50_553
-			///   Median:   10_589
-			///   Std-Dev:  504932.37
+			///   Min, Max: 3_943, 6_570_586
+			///   Average:  54_200
+			///   Median:   10_802
+			///   Std-Dev:  522042.38
 			///
 			/// Percentiles nanoseconds:
-			///   99th: 18_609
-			///   95th: 15_443
-			///   75th: 12_619
-			write: 101_106 * constants::WEIGHT_REF_TIME_PER_NANOS,
+			///   99th: 234_197
+			///   95th: 17_149
+			///   75th: 13_563
+			write: 108_400 * constants::WEIGHT_REF_TIME_PER_NANOS,
 		};
 	}
 
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index 4cde813dc4f7acd67e02d9f5548cff21df5cc354..adcfc3f504350b0b2bd73aa9173ba486ea8819bd 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,5 +1,5 @@
 [toolchain]
-channel = "nightly-2024-06-30"
+channel = "nightly-2024-09-05"
 components = [ "rustfmt", "clippy", "rust-std", "cargo", "rust-src" ]
 targets = [ "wasm32-unknown-unknown" ]
 profile = "minimal"
diff --git a/rustfmt.toml b/rustfmt.toml
index 793ece8dbcdab0bd62adbc1a5e5b9f4100d1fce2..30f99feb87e79fd4fd1f2eb4cd03555e72064ddd 100644
--- a/rustfmt.toml
+++ b/rustfmt.toml
@@ -1,3 +1,4 @@
 imports_granularity = "Crate"
 reorder_impl_items = true
 error_on_unformatted = true
+format_macro_matchers = true
diff --git a/xtask/res/templates/runtime-constants.md b/xtask/res/templates/runtime-constants.md
new file mode 100644
index 0000000000000000000000000000000000000000..2b0dd53fba8f3e95df11e9479e829a1c8af671b7
--- /dev/null
+++ b/xtask/res/templates/runtime-constants.md
@@ -0,0 +1,27 @@
+# Runtime Constant
+
+There are **{{ constant_counter }}** constants from **{{ pallets | length }}** pallets.
+
+<ul>
+{% for pallet in pallets %}
+<li>{{ pallet.name }} - {{ pallet.index }}
+<ul>
+{% for constant in pallet.constants %}
+<li>
+<details>
+<summary>
+<code>{{ constant.name }}</code>
+</summary>
+{{ constant.documentation }}
+
+```rust
+value: {{ constant.type_value }}({{ constant.value }})
+```
+
+</details>
+</li>
+{% endfor %}
+</ul>
+</li>
+{% endfor %}
+</ul>
diff --git a/xtask/res/templates/runtime-storages.md b/xtask/res/templates/runtime-storages.md
new file mode 100644
index 0000000000000000000000000000000000000000..995456a6c6c3310daac8ab4082ba70c28661983e
--- /dev/null
+++ b/xtask/res/templates/runtime-storages.md
@@ -0,0 +1,28 @@
+# Runtime Storage
+
+There are **{{ storage_counter }}** storages from **{{ pallets | length }}** pallets.
+
+<ul>
+{% for pallet in pallets %}
+<li>{{ pallet.name }} - {{ pallet.index }}
+<ul>
+{% for storage in pallet.storages %}
+<li>
+<details>
+<summary>
+<code>{{ storage.name }}</code>
+</summary>
+{{ storage.documentation }}
+
+{% if storage.type_key or storage.type_value %}```rust
+{% if storage.type_key %}key: {{ storage.type_key }}
+{% endif %}{% if storage.type_value %}value: {{ storage.type_value }}{% endif %}
+```{% endif %}
+
+</details>
+</li>
+{% endfor %}
+</ul>
+</li>
+{% endfor %}
+</ul>
diff --git a/xtask/src/gen_doc.rs b/xtask/src/gen_doc.rs
index 68d77c6117c24adb7ce14e6e552b189f467d3204..a2eb94a90b90e32c0263f18f7fe24645ee15478d 100644
--- a/xtask/src/gen_doc.rs
+++ b/xtask/src/gen_doc.rs
@@ -17,7 +17,8 @@
 use anyhow::{bail, Context, Result};
 use codec::Decode;
 use core::hash::Hash;
-use scale_info::form::PortableForm;
+use frame_metadata::v15::{StorageEntryModifier, StorageEntryType};
+use scale_info::{form::PortableForm, PortableRegistry, Type, TypeDef};
 use serde::Serialize;
 use std::{
     collections::HashMap,
@@ -42,6 +43,8 @@ where
 
 const CALLS_DOC_FILEPATH: &str = "docs/api/runtime-calls.md";
 const EVENTS_DOC_FILEPATH: &str = "docs/api/runtime-events.md";
+const STORAGES_DOC_FILEPATH: &str = "docs/api/runtime-storages.md";
+const CONSTANTS_DOC_FILEPATH: &str = "docs/api/runtime-constants.md";
 const ERRORS_DOC_FILEPATH: &str = "docs/api/runtime-errors.md";
 const ERRORS_PO_FILEPATH: &str = "docs/api/runtime-errors.po";
 const TEMPLATES_GLOB: &str = "xtask/res/templates/*.{md,po}";
@@ -59,6 +62,8 @@ struct Pallet {
     calls: Vec<Call>,
     events: Vec<Event>,
     errors: Vec<ErroR>,
+    storages: Vec<Storage>,
+    constants: Vec<Constant>,
 }
 #[derive(Clone, Serialize)]
 struct Call {
@@ -91,8 +96,23 @@ struct ErroR {
     index: u8,
     name: String,
 }
+#[derive(Clone, Serialize)]
+struct Storage {
+    documentation: String,
+    name: String,
+    type_key: String,
+    type_value: String,
+}
+#[derive(Clone, Serialize)]
+struct Constant {
+    documentation: String,
+    name: String,
+    value: String,
+    type_value: String,
+}
 
 impl Pallet {
+    #![allow(clippy::too_many_arguments)]
     fn new(
         index: u8,
         name: String,
@@ -100,6 +120,8 @@ impl Pallet {
         call_scale_type_def: &Option<scale_info::TypeDef<PortableForm>>,
         event_scale_type_def: &Option<scale_info::TypeDef<PortableForm>>,
         error_scale_type_def: &Option<scale_info::TypeDef<PortableForm>>,
+        storages: Vec<Storage>,
+        constants: Vec<Constant>,
     ) -> Result<Self> {
         let calls = if let Some(call_scale_type_def) = call_scale_type_def {
             if let scale_info::TypeDef::Variant(calls_enum) = call_scale_type_def {
@@ -128,6 +150,7 @@ impl Pallet {
         } else {
             vec![]
         };
+
         Ok(Self {
             index,
             name,
@@ -135,6 +158,8 @@ impl Pallet {
             calls,
             events,
             errors,
+            storages,
+            constants,
         })
     }
 }
@@ -320,7 +345,8 @@ pub(super) fn gen_doc() -> Result<()> {
         })
     });
 
-    let (call_doc, event_doc, error_doc, error_po) = print_runtime(runtime);
+    let (call_doc, event_doc, error_doc, error_po, storage_doc, constant_doc) =
+        print_runtime(runtime);
 
     // Generate docs from rust code
     Command::new("cargo")
@@ -363,6 +389,14 @@ pub(super) fn gen_doc() -> Result<()> {
         .with_context(|| format!("Failed to create file '{}'", ERRORS_DOC_FILEPATH))?;
     file.write_all(error_doc.as_bytes())
         .with_context(|| format!("Failed to write to file '{}'", ERRORS_DOC_FILEPATH))?;
+    let mut file = File::create(STORAGES_DOC_FILEPATH)
+        .with_context(|| format!("Failed to create file '{}'", STORAGES_DOC_FILEPATH))?;
+    file.write_all(storage_doc.as_bytes())
+        .with_context(|| format!("Failed to write to file '{}'", STORAGES_DOC_FILEPATH))?;
+    let mut file = File::create(CONSTANTS_DOC_FILEPATH)
+        .with_context(|| format!("Failed to create file '{}'", CONSTANTS_DOC_FILEPATH))?;
+    file.write_all(constant_doc.as_bytes())
+        .with_context(|| format!("Failed to write to file '{}'", CONSTANTS_DOC_FILEPATH))?;
     let mut file = File::create(ERRORS_PO_FILEPATH)
         .with_context(|| format!("Failed to create file '{}'", ERRORS_PO_FILEPATH))?;
     file.write_all(error_po.as_bytes())
@@ -406,6 +440,138 @@ fn get_max_weight_from_metadata_v15(
     }
 }
 
+/// Converts a `Type<PortableForm>` into a human-readable string representation.
+///
+/// This function is a core part of the type resolution pipeline, working together with:
+/// - `resolve_type()` to obtain type definitions.
+/// - `format_generics()` to correctly format generic parameters.
+///
+/// It processes a `Type<PortableForm>` from the metadata registry and outputs a Rust-like string representation,
+/// handling all supported type definitions (composite types, sequences, arrays, tuples, primitives, etc.).
+///
+/// # Returns
+/// - `Ok(String)`: A formatted type string (e.g., `"Vec<u32>"`, `"(i32, bool)"`).
+/// - `Err(anyhow::Error)`: If metadata are incorrect.
+///
+/// # How It Works With Other Functions:
+/// - Calls `format_generics()` to handle generic type parameters.
+/// - Calls `resolve_type()` when resolving inner types inside sequences, arrays, and tuples.
+/// - Used by `resolve_type()` as a formatting step after retrieving a type.
+///
+fn format_type(ty: &Type<PortableForm>, types: &PortableRegistry) -> Result<String> {
+    let path = ty.path.to_string();
+
+    match &ty.type_def {
+        TypeDef::Composite(_) => {
+            let generics = format_generics(&ty.type_params, types)?;
+            Ok(format!("{}{}", path, generics))
+        }
+        TypeDef::Variant(_) => {
+            let generics = format_generics(&ty.type_params, types)?;
+            Ok(format!("{}{}", path, generics))
+        }
+        TypeDef::Sequence(seq) => {
+            let element_type = resolve_type(seq.type_param.id, types)?;
+            Ok(format!("Vec<{}>", element_type))
+        }
+        TypeDef::Array(arr) => {
+            let element_type = resolve_type(arr.type_param.id, types)?;
+            Ok(format!("[{}; {}]", element_type, arr.len))
+        }
+        TypeDef::Tuple(tuple) => {
+            let elements = tuple
+                .fields
+                .iter()
+                .map(|f| resolve_type(f.id, types))
+                .collect::<Result<Vec<String>>>()?;
+            Ok(format!("({})", elements.join(", ")))
+        }
+        TypeDef::Primitive(primitive) => Ok(format!("{:?}", primitive)),
+        TypeDef::Compact(compact) => {
+            let inner_type = resolve_type(compact.type_param.id, types)?;
+            Ok(format!("Compact<{}>", inner_type))
+        }
+        TypeDef::BitSequence(_) => Ok(String::default()),
+    }
+}
+
+/// Resolves a type ID to a formatted string representation.
+///
+/// This function serves as a bridge between raw type IDs and fully formatted types.
+/// It works closely with `format_type()`, ensuring that once a type is found, it is properly formatted.
+///
+/// # How It Works With Other Functions:
+/// - Retrieves a type from the registry using `types.resolve(type_id)`.
+/// - If successful, calls `format_type()` to get a human-readable format.
+/// - Used internally by `format_type()` when resolving type dependencies.
+///
+fn resolve_type(type_id: u32, types: &PortableRegistry) -> Result<String> {
+    types
+        .resolve(type_id)
+        .map(|t| format_type(t, types))
+        .unwrap_or_else(|| bail!("Invalid metadata"))
+}
+
+/// Formats generic type parameters into a Rust-like string representation.
+///
+/// This function helps `format_type()` handle generic types, ensuring that type parameters
+/// are formatted correctly when they exist. If a type has generic parameters, they are enclosed
+/// in angle brackets (e.g., `<T, U>`).
+///
+/// # How It Works With Other Functions:
+/// - Called inside `format_type()` to process generic type parameters.
+/// - Uses `resolve_type()` to retrieve and format each generic type.
+///
+fn format_generics(
+    params: &[scale_info::TypeParameter<PortableForm>],
+    types: &PortableRegistry,
+) -> Result<String> {
+    if params.is_empty() {
+        Ok(String::default())
+    } else {
+        let generics = params
+            .iter()
+            .map(|p| {
+                p.ty.map(|ty| resolve_type(ty.id, types))
+                    .unwrap_or_else(|| Ok(String::default()))
+            })
+            .collect::<Result<Vec<String>>>()?;
+        Ok(format!("<{}>", generics.join(", ")))
+    }
+}
+
+fn parse_storage_entry(
+    variant: &frame_metadata::v15::StorageEntryMetadata<scale_info::form::PortableForm>,
+    types: &PortableRegistry,
+) -> Result<Storage> {
+    match &variant.ty {
+        StorageEntryType::Map { key, value, .. } => {
+            let type_key = resolve_type(key.id, types)?;
+            let type_value = resolve_type(value.id, types)?;
+            Ok(Storage {
+                documentation: variant.docs.join("\n"),
+                name: variant.name.clone(),
+                type_key,
+                type_value,
+            })
+        }
+        StorageEntryType::Plain(v) => {
+            let type_value = resolve_type(v.id, types)?;
+            let type_value = if let StorageEntryModifier::Optional = &variant.modifier {
+                format!("Option<{}>", type_value)
+            } else {
+                type_value
+            };
+            Ok(Storage {
+                documentation: variant.docs.join("\n"),
+                name: variant.name.clone(),
+                type_key: String::default(),
+                type_value,
+            })
+        }
+    }
+}
+
 fn get_from_metadata_v15(
     metadata_v15: frame_metadata::v15::RuntimeMetadataV15,
 ) -> Result<RuntimePallets> {
@@ -447,6 +613,40 @@ fn get_from_metadata_v15(
             None
         };
 
+        let storages = pallet
+            .storage
+            .map(|storage| {
+                storage
+                    .entries
+                    .iter()
+                    .map(|v| parse_storage_entry(v, &metadata_v15.types))
+                    .collect::<Result<Vec<Storage>>>()
+            })
+            .unwrap_or_else(|| {
+                println!("{}: {} (0 storage)", pallet.index, pallet.name);
+                Ok(Vec::default())
+            })?;
+
+        let constants = pallet
+            .constants
+            .iter()
+            .map(|i| {
+                let type_value = resolve_type(i.ty.id, &metadata_v15.types)?;
+                let value = scale_value::scale::decode_as_type(
+                    &mut &*i.value,
+                    &i.ty.id,
+                    &metadata_v15.types,
+                )
+                .map_err(|e| anyhow::anyhow!("{}", e))?;
+                Ok(Constant {
+                    documentation: i.docs.join("\n"),
+                    name: i.name.clone(),
+                    value: value.to_string(),
+                    type_value,
+                })
+            })
+            .collect::<Result<Vec<Constant>>>()?;
+
         let pallet = Pallet::new(
             pallet.index,
             pallet.name.clone(),
@@ -454,6 +654,8 @@ fn get_from_metadata_v15(
             &calls_type_def,
             &events_type_def,
             &errors_type_def,
+            storages,
+            constants,
         )?;
 
         println!(
@@ -474,6 +676,18 @@ fn get_from_metadata_v15(
             pallet.name,
             pallet.errors.len()
         );
+        println!(
+            "{}: {} ({} storages)",
+            pallet.index,
+            pallet.name,
+            pallet.storages.len()
+        );
+        println!(
+            "{}: {} ({} constants)",
+            pallet.index,
+            pallet.name,
+            pallet.constants.len()
+        );
         pallets.push(pallet);
     }
     Ok(pallets)
@@ -488,7 +702,7 @@ fn get_weights(max_weight: u128) -> Result<HashMap<String, HashMap<String, Weigh
 }
 
 /// use template to render markdown file with runtime calls documentation
-fn print_runtime(pallets: RuntimePallets) -> (String, String, String, String) {
+fn print_runtime(pallets: RuntimePallets) -> (String, String, String, String, String, String) {
     // init variables
     // -- user calls
     let mut user_calls_counter = 0;
@@ -521,6 +735,18 @@ fn print_runtime(pallets: RuntimePallets) -> (String, String, String, String) {
         .iter()
         .for_each(|pallet| error_counter += pallet.errors.len());
 
+    // storage counter
+    let mut storage_counter = 0;
+    pallets
+        .iter()
+        .for_each(|pallet| storage_counter += pallet.storages.len());
+
+    // constant counter
+    let mut constant_counter = 0;
+    pallets
+        .iter()
+        .for_each(|pallet| constant_counter += pallet.constants.len());
+
     // compile template
     let tera = match Tera::new(TEMPLATES_GLOB) {
         Ok(t) => t,
@@ -556,5 +782,26 @@ fn print_runtime(pallets: RuntimePallets) -> (String, String, String, String) {
         .render("runtime-errors.po", &context)
         .expect("template error");
 
-    (call_doc, event_doc, error_doc, error_po)
+    // render storages
+    context.insert("pallets", &pallets);
+    context.insert("storage_counter", &event_counter);
+    let storage_doc = tera
+        .render("runtime-storages.md", &context)
+        .expect("template storage");
+
+    // render constant
+    context.insert("pallets", &pallets);
+    context.insert("constant_counter", &constant_counter);
+    let constant_doc = tera
+        .render("runtime-constants.md", &context)
+        .expect("template constant");
+
+    (
+        call_doc,
+        event_doc,
+        error_doc,
+        error_po,
+        storage_doc,
+        constant_doc,
+    )
 }