diff --git a/Cargo.lock b/Cargo.lock
index 1ba7482db1e852ba28b477d2f66c504bd15e5dfc..7c939dae90fe4114d37d5934cd15ab862df6c7f6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -586,6 +586,21 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "bit-set"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
+dependencies = [
+ "bit-vec",
+]
+
+[[package]]
+name = "bit-vec"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
+
 [[package]]
 name = "bitflags"
 version = "1.3.2"
@@ -1201,6 +1216,15 @@ version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2"
 
+[[package]]
+name = "convert_case"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
+dependencies = [
+ "unicode-segmentation",
+]
+
 [[package]]
 name = "core-foundation"
 version = "0.9.3"
@@ -2455,6 +2479,16 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 
+[[package]]
+name = "fancy-regex"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2"
+dependencies = [
+ "bit-set",
+ "regex",
+]
+
 [[package]]
 name = "fastrand"
 version = "1.9.0"
@@ -3369,6 +3403,32 @@ version = "0.28.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
 
+[[package]]
+name = "git-version"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ad568aa3db0fcbc81f2f116137f263d7304f512a1209b35b85150d3ef88ad19"
+dependencies = [
+ "git-version-macro",
+]
+
+[[package]]
+name = "git-version-macro"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.39",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
 [[package]]
 name = "globset"
 version = "0.4.13"
@@ -8803,6 +8863,17 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "scale-bits"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "036575c29af9b6e4866ffb7fa055dbf623fe7a9cc159b33786de6013a6969d89"
+dependencies = [
+ "parity-scale-codec",
+ "scale-info",
+ "serde",
+]
+
 [[package]]
 name = "scale-decode"
 version = "0.5.0"
@@ -8811,12 +8882,25 @@ checksum = "c7e5527e4b3bf079d4c0b2f253418598c380722ba37ef20fac9088081407f2b6"
 dependencies = [
  "parity-scale-codec",
  "primitive-types",
- "scale-bits",
+ "scale-bits 0.3.0",
  "scale-decode-derive",
  "scale-info",
  "thiserror",
 ]
 
+[[package]]
+name = "scale-decode"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7caaf753f8ed1ab4752c6afb20174f03598c664724e0e32628e161c21000ff76"
+dependencies = [
+ "derive_more",
+ "parity-scale-codec",
+ "scale-bits 0.4.0",
+ "scale-info",
+ "smallvec",
+]
+
 [[package]]
 name = "scale-decode-derive"
 version = "0.5.0"
@@ -8838,12 +8922,25 @@ checksum = "15546e5efbb45f0fc2291f7e202dee8623274c5d8bbfdf9c6886cc8b44a7ced3"
 dependencies = [
  "parity-scale-codec",
  "primitive-types",
- "scale-bits",
+ "scale-bits 0.3.0",
  "scale-encode-derive",
  "scale-info",
  "thiserror",
 ]
 
+[[package]]
+name = "scale-encode"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d70cb4b29360105483fac1ed567ff95d65224a14dd275b6303ed0a654c78de5"
+dependencies = [
+ "derive_more",
+ "parity-scale-codec",
+ "scale-bits 0.4.0",
+ "scale-info",
+ "smallvec",
+]
+
 [[package]]
 name = "scale-encode-derive"
 version = "0.1.2"
@@ -8892,13 +8989,33 @@ dependencies = [
  "either",
  "frame-metadata",
  "parity-scale-codec",
- "scale-bits",
- "scale-decode",
- "scale-encode",
+ "scale-bits 0.3.0",
+ "scale-decode 0.5.0",
+ "scale-encode 0.1.2",
  "scale-info",
  "serde",
  "thiserror",
- "yap",
+ "yap 0.10.0",
+]
+
+[[package]]
+name = "scale-value"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58223c7691bf0bd46b43c9aea6f0472d1067f378d574180232358d7c6e0a8089"
+dependencies = [
+ "base58",
+ "blake2",
+ "derive_more",
+ "either",
+ "frame-metadata",
+ "parity-scale-codec",
+ "scale-bits 0.4.0",
+ "scale-decode 0.10.0",
+ "scale-encode 0.5.0",
+ "scale-info",
+ "serde",
+ "yap 0.11.0",
 ]
 
 [[package]]
@@ -10326,6 +10443,25 @@ version = "2.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
 
+[[package]]
+name = "subweight-core"
+version = "3.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee5751d8385836e91a9b7c613e1e7e11f97a4c8a867d6f45f556497d2cfb53c1"
+dependencies = [
+ "clap 4.4.11",
+ "fancy-regex",
+ "git-version",
+ "glob",
+ "lazy_static",
+ "log",
+ "proc-macro2",
+ "semver 1.0.20",
+ "serde",
+ "serde_json",
+ "syn 2.0.39",
+]
+
 [[package]]
 name = "subxt"
 version = "0.28.0"
@@ -10344,11 +10480,11 @@ dependencies = [
  "parity-scale-codec",
  "parking_lot 0.12.1",
  "primitive-types",
- "scale-bits",
- "scale-decode",
- "scale-encode",
+ "scale-bits 0.3.0",
+ "scale-decode 0.5.0",
+ "scale-encode 0.1.2",
  "scale-info",
- "scale-value",
+ "scale-value 0.7.0",
  "serde",
  "serde_json",
  "sp-core",
@@ -11987,6 +12123,16 @@ dependencies = [
  "winapi 0.3.9",
 ]
 
+[[package]]
+name = "weight-analyzer"
+version = "0.0.0"
+dependencies = [
+ "convert_case",
+ "glob",
+ "serde",
+ "subweight-core",
+]
+
 [[package]]
 name = "which"
 version = "4.4.2"
@@ -12337,12 +12483,14 @@ dependencies = [
  "reqwest",
  "run_script",
  "scale-info",
+ "scale-value 0.13.0",
  "serde",
  "serde_json",
  "tera",
  "tokio",
  "version-compare",
  "version_check",
+ "weight-analyzer",
 ]
 
 [[package]]
@@ -12365,6 +12513,12 @@ version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e2a7eb6d82a11e4d0b8e6bda8347169aff4ccd8235d039bba7c47482d977dcf7"
 
+[[package]]
+name = "yap"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff4524214bc4629eba08d78ceb1d6507070cc0bcbbed23af74e19e6e924a24cf"
+
 [[package]]
 name = "yasna"
 version = "0.5.2"
diff --git a/Cargo.toml b/Cargo.toml
index ada50dc6b8bb2fd49f928c26f2bfe0e8fa56aa4b..9a86c03760535a544e4fd3c9b3c545b0395784e9 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -163,6 +163,7 @@ members = [
     'runtime/common',
     'runtime/gdev',
     'xtask',
+    'resources/weight_analyzer'
 ]
 
 # The list of dependencies below (which can be both direct and indirect dependencies) are crates
diff --git a/docs/api/runtime-calls.md b/docs/api/runtime-calls.md
index e15a49ff9e7cf075fa9aab540e9d9c310ebdbbe9..1818c833c265b01e6cff6ef2bad711ad876d6b42 100644
--- a/docs/api/runtime-calls.md
+++ b/docs/api/runtime-calls.md
@@ -21,6 +21,8 @@ There are **78** user calls from **23** pallets.
 
 <details><summary><code>unlink_identity()</code></summary>
 
+Taking 0.0069 % of a block.
+
 ```rust
 ```
 </details>
@@ -34,6 +36,8 @@ unlink the identity associated with the account
 
 <details><summary><code>schedule(when, maybe_periodic, priority, call)</code></summary>
 
+Taking 0.0083 % of a block.
+
 ```rust
 when: T::BlockNumber
 maybe_periodic: Option<schedule::Period<T::BlockNumber>>
@@ -49,6 +53,8 @@ Anonymously schedule a task.
 
 <details><summary><code>cancel(when, index)</code></summary>
 
+Taking 0.0115 % of a block.
+
 ```rust
 when: T::BlockNumber
 index: u32
@@ -62,6 +68,8 @@ Cancel an anonymously scheduled task.
 
 <details><summary><code>schedule_named(id, when, maybe_periodic, priority, call)</code></summary>
 
+Taking 0.0115 % of a block.
+
 ```rust
 id: TaskName
 when: T::BlockNumber
@@ -78,6 +86,8 @@ Schedule a named task.
 
 <details><summary><code>cancel_named(id)</code></summary>
 
+Taking 0.012 % of a block.
+
 ```rust
 id: TaskName
 ```
@@ -90,6 +100,8 @@ Cancel a named scheduled task.
 
 <details><summary><code>schedule_after(after, maybe_periodic, priority, call)</code></summary>
 
+No weight available.
+
 ```rust
 after: T::BlockNumber
 maybe_periodic: Option<schedule::Period<T::BlockNumber>>
@@ -105,6 +117,8 @@ Anonymously schedule a task after a delay.
 
 <details><summary><code>schedule_named_after(id, after, maybe_periodic, priority, call)</code></summary>
 
+No weight available.
+
 ```rust
 id: TaskName
 after: T::BlockNumber
@@ -123,6 +137,8 @@ Schedule a named task after a delay.
 
 <details><summary><code>report_equivocation(equivocation_proof, key_owner_proof)</code></summary>
 
+No weight available.
+
 ```rust
 equivocation_proof: Box<EquivocationProof<T::Header>>
 key_owner_proof: T::KeyOwnerProof
@@ -141,6 +157,8 @@ be reported.
 
 <details><summary><code>transfer_allow_death(dest, value)</code></summary>
 
+Taking 0.0121 % of a block.
+
 ```rust
 dest: AccountIdLookupOf<T>
 value: T::Balance
@@ -160,6 +178,8 @@ The dispatch origin for this call must be `Signed` by the transactor.
 
 <details><summary><code>set_balance_deprecated(who, new_free, old_reserved)</code></summary>
 
+No weight available.
+
 ```rust
 who: AccountIdLookupOf<T>
 new_free: T::Balance
@@ -179,6 +199,8 @@ WARNING: This call is DEPRECATED! Use `force_set_balance` instead.
 
 <details><summary><code>transfer_keep_alive(dest, value)</code></summary>
 
+Taking 0.0112 % of a block.
+
 ```rust
 dest: AccountIdLookupOf<T>
 value: T::Balance
@@ -197,6 +219,8 @@ kill the origin account.
 
 <details><summary><code>transfer_all(dest, keep_alive)</code></summary>
 
+Taking 0.0117 % of a block.
+
 ```rust
 dest: AccountIdLookupOf<T>
 keep_alive: bool
@@ -224,6 +248,8 @@ The dispatch origin of this call must be Signed.
 
 <details><summary><code>transfer(dest, value)</code></summary>
 
+No weight available.
+
 ```rust
 dest: AccountIdLookupOf<T>
 value: T::Balance
@@ -239,6 +265,8 @@ WARNING: DEPRECATED! Will be released in approximately 3 months.
 
 <details><summary><code>force_set_balance(who, new_free)</code></summary>
 
+No weight available.
+
 ```rust
 who: AccountIdLookupOf<T>
 new_free: T::Balance
@@ -256,6 +284,8 @@ The dispatch origin for this call is `root`.
 
 <details><summary><code>create_oneshot_account(dest, value)</code></summary>
 
+Taking 0.0078 % of a block.
+
 ```rust
 dest: <T::Lookup as StaticLookup>::Source
 value: <T::Currency as Currency<T::AccountId>>::Balance
@@ -274,6 +304,8 @@ Origin account is kept alive.
 
 <details><summary><code>consume_oneshot_account(block_height, dest)</code></summary>
 
+Taking 0.0114 % of a block.
+
 ```rust
 block_height: T::BlockNumber
 dest: Account<<T::Lookup as StaticLookup>::Source>
@@ -291,6 +323,8 @@ 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.0149 % of a block.
+
 ```rust
 block_height: T::BlockNumber
 dest: Account<<T::Lookup as StaticLookup>::Source>
@@ -317,6 +351,8 @@ and the remaining amount to another account.
 
 <details><summary><code>go_offline()</code></summary>
 
+Taking 0.0127 % of a block.
+
 ```rust
 ```
 </details>
@@ -328,6 +364,8 @@ ask to leave the set of validators two sessions after
 
 <details><summary><code>go_online()</code></summary>
 
+Taking 0.0141 % of a block.
+
 ```rust
 ```
 </details>
@@ -339,6 +377,8 @@ ask to join the set of validators two sessions after
 
 <details><summary><code>set_session_keys(keys)</code></summary>
 
+Taking 0.0136 % of a block.
+
 ```rust
 keys: T::Keys
 ```
@@ -351,6 +391,8 @@ declare new session keys to replace current ones
 
 <details><summary><code>remove_member_from_blacklist(member_id)</code></summary>
 
+Taking 0.0073 % of a block.
+
 ```rust
 member_id: T::MemberId
 ```
@@ -365,6 +407,8 @@ remove an identity from the blacklist
 
 <details><summary><code>report_equivocation(equivocation_proof, key_owner_proof)</code></summary>
 
+No weight available.
+
 ```rust
 equivocation_proof: Box<EquivocationProof<T::Hash, T::BlockNumber>>
 key_owner_proof: T::KeyOwnerProof
@@ -383,6 +427,8 @@ will be reported.
 
 <details><summary><code>dispatch_as_root_unchecked_weight(call, weight)</code></summary>
 
+No weight available.
+
 ```rust
 call: Box<<T as Config>::Call>
 weight: Weight
@@ -402,6 +448,8 @@ The weight of this call is defined by the caller.
 
 <details><summary><code>note_preimage(bytes)</code></summary>
 
+Taking 0.3001 % of a block.
+
 ```rust
 bytes: Vec<u8>
 ```
@@ -417,6 +465,8 @@ the preimage. Otherwise, a deposit is taken proportional to the size of the prei
 
 <details><summary><code>unnote_preimage(hash)</code></summary>
 
+Taking 0.0119 % of a block.
+
 ```rust
 hash: T::Hash
 ```
@@ -434,6 +484,8 @@ If `len` is provided, then it will be a much cheaper operation.
 
 <details><summary><code>request_preimage(hash)</code></summary>
 
+Taking 0.0083 % of a block.
+
 ```rust
 hash: T::Hash
 ```
@@ -449,6 +501,8 @@ 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.0109 % of a block.
+
 ```rust
 hash: T::Hash
 ```
@@ -465,6 +519,8 @@ NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`.
 
 <details><summary><code>execute(proposal, length_bound)</code></summary>
 
+Taking 0.0049 % of a block.
+
 ```rust
 proposal: Box<<T as Config<I>>::Proposal>
 length_bound: u32
@@ -486,6 +542,8 @@ Origin must be a member of the collective.
 
 <details><summary><code>propose(threshold, proposal, length_bound)</code></summary>
 
+No weight available.
+
 ```rust
 threshold: MemberCount
 proposal: Box<<T as Config<I>>::Proposal>
@@ -513,6 +571,8 @@ or put up for voting.
 
 <details><summary><code>vote(proposal, index, approve)</code></summary>
 
+Taking 0.0082 % of a block.
+
 ```rust
 proposal: T::Hash
 index: ProposalIndex
@@ -535,6 +595,8 @@ fee.
 
 <details><summary><code>close(proposal_hash, index, proposal_weight_bound, length_bound)</code></summary>
 
+No weight available.
+
 ```rust
 proposal_hash: T::Hash
 index: ProposalIndex
@@ -575,6 +637,8 @@ proposal.
 
 <details><summary><code>claim_uds()</code></summary>
 
+Taking 0.0124 % of a block.
+
 ```rust
 ```
 </details>
@@ -586,6 +650,8 @@ Claim Universal Dividends
 
 <details><summary><code>transfer_ud(dest, value)</code></summary>
 
+Taking 0.0128 % of a block.
+
 ```rust
 dest: <T::Lookup as StaticLookup>::Source
 value: BalanceOf<T>
@@ -599,6 +665,8 @@ Transfer some liquid free balance to another account, in milliUD.
 
 <details><summary><code>transfer_ud_keep_alive(dest, value)</code></summary>
 
+Taking 0.0118 % of a block.
+
 ```rust
 dest: <T::Lookup as StaticLookup>::Source
 value: BalanceOf<T>
@@ -614,6 +682,8 @@ Transfer some liquid free balance to another account, in milliUD.
 
 <details><summary><code>create_identity(owner_key)</code></summary>
 
+Taking 0.0446 % of a block.
+
 ```rust
 owner_key: T::AccountId
 ```
@@ -630,6 +700,8 @@ The origin must be allowed to create an identity.
 
 <details><summary><code>confirm_identity(idty_name)</code></summary>
 
+Taking 0.0175 % of a block.
+
 ```rust
 idty_name: IdtyName
 ```
@@ -646,6 +718,8 @@ 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.0245 % of a block.
+
 ```rust
 new_key: T::AccountId
 new_key_sig: T::Signature
@@ -665,6 +739,8 @@ The origin should be the old identity owner key.
 
 <details><summary><code>revoke_identity(idty_index, revocation_key, revocation_sig)</code></summary>
 
+Taking 0.0255 % of a block.
+
 ```rust
 idty_index: T::IdtyIndex
 revocation_key: T::AccountId
@@ -686,6 +762,8 @@ Any signed origin can execute this call.
 
 <details><summary><code>fix_sufficients(owner_key, inc)</code></summary>
 
+Taking 0.0071 % of a block.
+
 ```rust
 owner_key: T::AccountId
 inc: bool
@@ -699,6 +777,8 @@ change sufficient ref count for given key
 
 <details><summary><code>link_account(account_id, payload_sig)</code></summary>
 
+Taking 0.0106 % of a block.
+
 ```rust
 account_id: T::AccountId
 payload_sig: T::Signature
@@ -714,6 +794,8 @@ Link an account to an identity
 
 <details><summary><code>claim_membership()</code></summary>
 
+Taking 0.0206 % of a block.
+
 ```rust
 ```
 </details>
@@ -721,13 +803,15 @@ Link an account to an identity
 
 claim membership
 it must fullfill the requirements (certs, distance)
-for main wot claim_membership is called automatically when validating identity
+TODO #159 for main wot claim_membership is called automatically when distance is evaluated positively
 for smith wot, it means joining the authority members
 
 #### renew_membership - 2
 
 <details><summary><code>renew_membership()</code></summary>
 
+Taking 0.0158 % of a block.
+
 ```rust
 ```
 </details>
@@ -739,6 +823,8 @@ extend the validity period of an active membership
 
 <details><summary><code>revoke_membership()</code></summary>
 
+Taking 0.0214 % of a block.
+
 ```rust
 ```
 </details>
@@ -753,6 +839,8 @@ revoke an active membership
 
 <details><summary><code>add_cert(issuer, receiver)</code></summary>
 
+Taking 0.0184 % of a block.
+
 ```rust
 issuer: T::IdtyIndex
 receiver: T::IdtyIndex
@@ -772,6 +860,8 @@ The origin must be allow to certify.
 
 <details><summary><code>request_distance_evaluation()</code></summary>
 
+Taking 0.018 % of a block.
+
 ```rust
 ```
 </details>
@@ -783,6 +873,8 @@ Request an identity to be evaluated
 
 <details><summary><code>update_evaluation(computation_result)</code></summary>
 
+Taking 0.0185 % of a block.
+
 ```rust
 computation_result: ComputationResult
 ```
@@ -795,6 +887,8 @@ computation_result: ComputationResult
 
 <details><summary><code>force_update_evaluation(evaluator, computation_result)</code></summary>
 
+Taking 0.0113 % of a block.
+
 ```rust
 evaluator: <T as frame_system::Config>::AccountId
 computation_result: ComputationResult
@@ -808,6 +902,8 @@ Push an evaluation result to the pool
 
 <details><summary><code>force_set_distance_status(identity, status)</code></summary>
 
+Taking 0.0104 % of a block.
+
 ```rust
 identity: <T as pallet_identity::Config>::IdtyIndex
 status: Option<(<T as frame_system::Config>::AccountId, DistanceStatus)>
@@ -829,6 +925,8 @@ Removes the status if `status` is `None`.
 
 <details><summary><code>claim_membership()</code></summary>
 
+Taking 0.0152 % of a block.
+
 ```rust
 ```
 </details>
@@ -836,13 +934,15 @@ Removes the status if `status` is `None`.
 
 claim membership
 it must fullfill the requirements (certs, distance)
-for main wot claim_membership is called automatically when validating identity
+TODO #159 for main wot claim_membership is called automatically when distance is evaluated positively
 for smith wot, it means joining the authority members
 
 #### renew_membership - 2
 
 <details><summary><code>renew_membership()</code></summary>
 
+Taking 0.0152 % of a block.
+
 ```rust
 ```
 </details>
@@ -854,6 +954,8 @@ extend the validity period of an active membership
 
 <details><summary><code>revoke_membership()</code></summary>
 
+Taking 0.0442 % of a block.
+
 ```rust
 ```
 </details>
@@ -868,6 +970,8 @@ revoke an active membership
 
 <details><summary><code>add_cert(issuer, receiver)</code></summary>
 
+Taking 0.0187 % of a block.
+
 ```rust
 issuer: T::IdtyIndex
 receiver: T::IdtyIndex
@@ -887,6 +991,8 @@ The origin must be allow to certify.
 
 <details><summary><code>create_swap(target, hashed_proof, action, duration)</code></summary>
 
+No weight available.
+
 ```rust
 target: T::AccountId
 hashed_proof: HashedProof
@@ -913,6 +1019,8 @@ The dispatch origin for this call must be _Signed_.
 
 <details><summary><code>claim_swap(proof, action)</code></summary>
 
+No weight available.
+
 ```rust
 proof: Vec<u8>
 action: T::SwapAction
@@ -932,6 +1040,8 @@ The dispatch origin for this call must be _Signed_.
 
 <details><summary><code>cancel_swap(target, hashed_proof)</code></summary>
 
+No weight available.
+
 ```rust
 target: T::AccountId
 hashed_proof: HashedProof
@@ -952,6 +1062,8 @@ The dispatch origin for this call must be _Signed_.
 
 <details><summary><code>as_multi_threshold_1(other_signatories, call)</code></summary>
 
+Taking 0.0042 % of a block.
+
 ```rust
 other_signatories: Vec<T::AccountId>
 call: Box<<T as Config>::RuntimeCall>
@@ -976,6 +1088,8 @@ O(Z + C) where Z is the length of the call and C its execution weight.
 
 <details><summary><code>as_multi(threshold, other_signatories, maybe_timepoint, call, max_weight)</code></summary>
 
+No weight available.
+
 ```rust
 threshold: u16
 other_signatories: Vec<T::AccountId>
@@ -1030,6 +1144,8 @@ may be found in the deposited `MultisigExecuted` event.
 
 <details><summary><code>approve_as_multi(threshold, other_signatories, maybe_timepoint, call_hash, max_weight)</code></summary>
 
+No weight available.
+
 ```rust
 threshold: u16
 other_signatories: Vec<T::AccountId>
@@ -1075,6 +1191,8 @@ 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.0082 % of a block.
+
 ```rust
 threshold: u16
 other_signatories: Vec<T::AccountId>
@@ -1112,6 +1230,8 @@ transaction for this dispatch.
 
 <details><summary><code>request(randomness_type, salt)</code></summary>
 
+Taking 0.0184 % of a block.
+
 ```rust
 randomness_type: RandomnessType
 salt: H256
@@ -1127,6 +1247,8 @@ Request a randomness
 
 <details><summary><code>proxy(real, force_proxy_type, call)</code></summary>
 
+Taking 0.0049 % of a block.
+
 ```rust
 real: AccountIdLookupOf<T>
 force_proxy_type: Option<T::ProxyType>
@@ -1149,6 +1271,8 @@ Parameters:
 
 <details><summary><code>add_proxy(delegate, proxy_type, delay)</code></summary>
 
+Taking 0.0079 % of a block.
+
 ```rust
 delegate: AccountIdLookupOf<T>
 proxy_type: T::ProxyType
@@ -1171,6 +1295,8 @@ zero.
 
 <details><summary><code>remove_proxy(delegate, proxy_type, delay)</code></summary>
 
+Taking 0.0079 % of a block.
+
 ```rust
 delegate: AccountIdLookupOf<T>
 proxy_type: T::ProxyType
@@ -1191,6 +1317,8 @@ Parameters:
 
 <details><summary><code>remove_proxies()</code></summary>
 
+Taking 0.0078 % of a block.
+
 ```rust
 ```
 </details>
@@ -1207,6 +1335,8 @@ 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.0079 % of a block.
+
 ```rust
 proxy_type: T::ProxyType
 delay: T::BlockNumber
@@ -1238,6 +1368,8 @@ 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.0078 % of a block.
+
 ```rust
 spawner: AccountIdLookupOf<T>
 proxy_type: T::ProxyType
@@ -1269,6 +1401,8 @@ account whose `pure` call has corresponding parameters.
 
 <details><summary><code>announce(real, call_hash)</code></summary>
 
+Taking 0.0118 % of a block.
+
 ```rust
 real: AccountIdLookupOf<T>
 call_hash: CallHashOf<T>
@@ -1296,6 +1430,8 @@ Parameters:
 
 <details><summary><code>remove_announcement(real, call_hash)</code></summary>
 
+Taking 0.011 % of a block.
+
 ```rust
 real: AccountIdLookupOf<T>
 call_hash: CallHashOf<T>
@@ -1318,6 +1454,8 @@ Parameters:
 
 <details><summary><code>reject_announcement(delegate, call_hash)</code></summary>
 
+Taking 0.011 % of a block.
+
 ```rust
 delegate: AccountIdLookupOf<T>
 call_hash: CallHashOf<T>
@@ -1340,6 +1478,8 @@ Parameters:
 
 <details><summary><code>proxy_announced(delegate, real, force_proxy_type, call)</code></summary>
 
+Taking 0.0119 % of a block.
+
 ```rust
 delegate: AccountIdLookupOf<T>
 real: AccountIdLookupOf<T>
@@ -1367,6 +1507,8 @@ Parameters:
 
 <details><summary><code>batch(calls)</code></summary>
 
+Taking 0.2017 % of a block.
+
 ```rust
 calls: Vec<<T as Config>::RuntimeCall>
 ```
@@ -1396,6 +1538,8 @@ event is deposited.
 
 <details><summary><code>as_derivative(index, call)</code></summary>
 
+Taking 0.004 % of a block.
+
 ```rust
 index: u16
 call: Box<<T as Config>::RuntimeCall>
@@ -1421,6 +1565,8 @@ The dispatch origin for this call must be _Signed_.
 
 <details><summary><code>batch_all(calls)</code></summary>
 
+Taking 0.2088 % of a block.
+
 ```rust
 calls: Vec<<T as Config>::RuntimeCall>
 ```
@@ -1445,6 +1591,8 @@ includes bypassing `frame_system::Config::BaseCallFilter`).
 
 <details><summary><code>force_batch(calls)</code></summary>
 
+Taking 0.201 % of a block.
+
 ```rust
 calls: Vec<<T as Config>::RuntimeCall>
 ```
@@ -1469,6 +1617,8 @@ includes bypassing `frame_system::Config::BaseCallFilter`).
 
 <details><summary><code>with_weight(call, weight)</code></summary>
 
+No weight available.
+
 ```rust
 call: Box<<T as Config>::RuntimeCall>
 weight: Weight
@@ -1489,6 +1639,8 @@ The dispatch origin for this call must be _Root_.
 
 <details><summary><code>propose_spend(value, beneficiary)</code></summary>
 
+Taking 0.0104 % of a block.
+
 ```rust
 value: BalanceOf<T, I>
 beneficiary: AccountIdLookupOf<T>
@@ -1507,6 +1659,8 @@ proposal is awarded.
 
 <details><summary><code>spend(amount, beneficiary)</code></summary>
 
+Taking 0.0038 % of a block.
+
 ```rust
 amount: BalanceOf<T, I>
 beneficiary: AccountIdLookupOf<T>
@@ -1527,6 +1681,8 @@ beneficiary.
 
 <details><summary><code>remove_approval(proposal_id)</code></summary>
 
+Taking 0.007 % of a block.
+
 ```rust
 proposal_id: ProposalIndex
 ```
@@ -1559,6 +1715,8 @@ There are **19** root calls from **10** pallets.
 
 <details><summary><code>set_heap_pages(pages)</code></summary>
 
+Taking 0.0095 % of a block.
+
 ```rust
 pages: u64
 ```
@@ -1571,6 +1729,8 @@ Set the number of pages in the WebAssembly environment's heap.
 
 <details><summary><code>set_code(code)</code></summary>
 
+No weight available.
+
 ```rust
 code: Vec<u8>
 ```
@@ -1586,6 +1746,8 @@ Set the new runtime code.
 
 <details><summary><code>set_code_without_checks(code)</code></summary>
 
+No weight available.
+
 ```rust
 code: Vec<u8>
 ```
@@ -1601,6 +1763,8 @@ Set the new runtime code without doing any checks of the given `code`.
 
 <details><summary><code>set_storage(items)</code></summary>
 
+Taking 2.6234 % of a block.
+
 ```rust
 items: Vec<KeyValue>
 ```
@@ -1613,6 +1777,8 @@ Set some items of storage.
 
 <details><summary><code>kill_storage(keys)</code></summary>
 
+Taking 2.6154 % of a block.
+
 ```rust
 keys: Vec<Key>
 ```
@@ -1625,6 +1791,8 @@ Kill some items from storage.
 
 <details><summary><code>kill_prefix(prefix, subkeys)</code></summary>
 
+Taking 3.0035 % of a block.
+
 ```rust
 prefix: Key
 subkeys: u32
@@ -1643,6 +1811,8 @@ the prefix we are removing to accurately calculate the weight of this function.
 
 <details><summary><code>plan_config_change(config)</code></summary>
 
+No weight available.
+
 ```rust
 config: NextConfigDescriptor
 ```
@@ -1660,6 +1830,8 @@ not been enacted yet.
 
 <details><summary><code>force_transfer(source, dest, value)</code></summary>
 
+Taking 0.0152 % of a block.
+
 ```rust
 source: AccountIdLookupOf<T>
 dest: AccountIdLookupOf<T>
@@ -1675,6 +1847,8 @@ may be specified.
 
 <details><summary><code>force_unreserve(who, amount)</code></summary>
 
+Taking 0.0075 % of a block.
+
 ```rust
 who: AccountIdLookupOf<T>
 amount: T::Balance
@@ -1692,6 +1866,8 @@ Can only be called by ROOT.
 
 <details><summary><code>remove_member(member_id)</code></summary>
 
+Taking 0.0467 % of a block.
+
 ```rust
 member_id: T::MemberId
 ```
@@ -1706,6 +1882,8 @@ remove an identity from the set of authorities
 
 <details><summary><code>note_stalled(delay, best_finalized_block_number)</code></summary>
 
+No weight available.
+
 ```rust
 delay: T::BlockNumber
 best_finalized_block_number: T::BlockNumber
@@ -1732,6 +1910,8 @@ Only callable by root.
 
 <details><summary><code>set_members(new_members, prime, old_count)</code></summary>
 
+Taking 0.0819 % of a block.
+
 ```rust
 new_members: Vec<T::AccountId>
 prime: Option<T::AccountId>
@@ -1769,6 +1949,8 @@ with other logic managing the member set.
 
 <details><summary><code>disapprove_proposal(proposal_hash)</code></summary>
 
+Taking 0.0128 % of a block.
+
 ```rust
 proposal_hash: T::Hash
 ```
@@ -1792,6 +1974,8 @@ O(P) where P is the number of max proposals
 
 <details><summary><code>prune_item_identities_names(names)</code></summary>
 
+Taking 2.6567 % of a block.
+
 ```rust
 names: Vec<IdtyName>
 ```
@@ -1806,6 +1990,8 @@ remove identity names from storage
 
 <details><summary><code>del_cert(issuer, receiver)</code></summary>
 
+Taking 0.0147 % of a block.
+
 ```rust
 issuer: T::IdtyIndex
 receiver: T::IdtyIndex
@@ -1819,6 +2005,8 @@ remove a certification (only root)
 
 <details><summary><code>remove_all_certs_received_by(idty_index)</code></summary>
 
+Taking 3.507 % of a block.
+
 ```rust
 idty_index: T::IdtyIndex
 ```
@@ -1833,6 +2021,8 @@ remove all certifications received by an identity (only root)
 
 <details><summary><code>del_cert(issuer, receiver)</code></summary>
 
+Taking 0.0147 % of a block.
+
 ```rust
 issuer: T::IdtyIndex
 receiver: T::IdtyIndex
@@ -1846,6 +2036,8 @@ remove a certification (only root)
 
 <details><summary><code>remove_all_certs_received_by(idty_index)</code></summary>
 
+Taking 3.5027 % of a block.
+
 ```rust
 idty_index: T::IdtyIndex
 ```
@@ -1860,6 +2052,8 @@ remove all certifications received by an identity (only root)
 
 <details><summary><code>dispatch_as(as_origin, call)</code></summary>
 
+Taking 0.0041 % of a block.
+
 ```rust
 as_origin: Box<T::PalletsOrigin>
 call: Box<<T as Config>::RuntimeCall>
@@ -1889,6 +2083,8 @@ There are **4** disabled calls from **2** pallets.
 
 <details><summary><code>remark(remark)</code></summary>
 
+Taking 0.0563 % of a block.
+
 ```rust
 remark: Vec<u8>
 ```
@@ -1904,6 +2100,8 @@ Make some on-chain remark.
 
 <details><summary><code>remark_with_event(remark)</code></summary>
 
+Taking 0.2158 % of a block.
+
 ```rust
 remark: Vec<u8>
 ```
@@ -1918,6 +2116,8 @@ Make some on-chain remark and emit event.
 
 <details><summary><code>set_keys(keys, proof)</code></summary>
 
+Taking 0.0198 % of a block.
+
 ```rust
 keys: T::Keys
 proof: Vec<u8>
@@ -1939,6 +2139,8 @@ The dispatch origin of this function must be signed.
 
 <details><summary><code>purge_keys()</code></summary>
 
+Taking 0.0178 % of a block.
+
 ```rust
 ```
 </details>
diff --git a/docs/api/runtime-errors.md b/docs/api/runtime-errors.md
index 5feb1cf038c4e5e5ae19be103634e356ec1b6515..80eb0c2d43d9561b4746763383c3b36b9b7335af 100644
--- a/docs/api/runtime-errors.md
+++ b/docs/api/runtime-errors.md
@@ -1,6 +1,6 @@
 # Runtime errors
 
-There are **186** errors from **37** pallets.
+There are **187** errors from **37** pallets.
 
 <ul>
 <li>System - 0
@@ -818,7 +818,7 @@ Invalid revocation key.
 <details>
 <summary>
 <code>IssuerNotMember</code> - 10</summary>
-Issuer is not member and can not perform this action
+Issuer is not member and can not perform this action.
 </details>
 </li>
 <li>
@@ -853,21 +853,28 @@ Reverting to an old key is prohibited.
 <details>
 <summary>
 <code>AlreadyRevoked</code> - 15</summary>
-Already revoked
+Already revoked.
 </details>
 </li>
 <li>
 <details>
 <summary>
 <code>CanNotRevokeUnconfirmed</code> - 16</summary>
-Can not revoke identity that never was member
+Can not revoke identity that never was member.
 </details>
 </li>
 <li>
 <details>
 <summary>
 <code>CanNotRevokeUnvalidated</code> - 17</summary>
-Can not revoke identity that never was member
+Can not revoke identity that never was member.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AccountNotExist</code> - 18</summary>
+Cannot link to an inexisting account.
 </details>
 </li>
 </ul>
diff --git a/docs/api/runtime-events.md b/docs/api/runtime-events.md
index cd058e2b44ecf4afb7ca98486c4ad0aefeb5649d..05a1536de903a9d6c983054688adb20a6a662463 100644
--- a/docs/api/runtime-events.md
+++ b/docs/api/runtime-events.md
@@ -1,6 +1,6 @@
 # Runtime events
 
-There are **126** events from **37** pallets.
+There are **127** events from **37** pallets.
 
 <ul>
 <li>System - 0
@@ -716,6 +716,18 @@ A member has been removed from the blacklist.
 member: T::MemberId
 ```
 
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MemberAddedToBlacklist(member)</code> - 6</summary>
+A member has been blacklisted.
+
+```rust
+member: T::MemberId
+```
+
 </details>
 </li>
 </ul>
diff --git a/resources/metadata.scale b/resources/metadata.scale
index 919f543f21a57970a0b67040b2ff16e6d54034ec..8f99f0d369fcf36e6cd824fc45bf28a951730eff 100644
Binary files a/resources/metadata.scale and b/resources/metadata.scale differ
diff --git a/resources/weight_analyzer/Cargo.toml b/resources/weight_analyzer/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..56c59b7e21cc5b10e117a43e22800756748b91b1
--- /dev/null
+++ b/resources/weight_analyzer/Cargo.toml
@@ -0,0 +1,19 @@
+[package]
+name = "weight-analyzer"
+authors = ['Axiom-Team Developers <https://axiom-team.fr>']
+description = 'Crypto-currency software (based on Substrate framework) to operate Äž1 libre currency'
+edition = "2021"
+homepage = 'https://duniter.org'
+license = 'AGPL-3.0'
+repository = 'https://git.duniter.org/nodes/rust/duniter-v2s'
+version = '0.0.0'
+
+[lib]
+name = "weightanalyzer"
+path = "src/lib.rs"
+
+[dependencies]
+subweight-core = "3.3.1"
+convert_case = "0.6.0"
+glob = "0.3.1"
+serde = { version = "1.0.101", features = ["derive"] }
diff --git a/resources/weight_analyzer/src/lib.rs b/resources/weight_analyzer/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..5403efab32da26a04b5e74a27b669edad409bf45
--- /dev/null
+++ b/resources/weight_analyzer/src/lib.rs
@@ -0,0 +1,198 @@
+use convert_case::{Case, Casing};
+use glob::glob;
+use serde::Serialize;
+use std::collections::HashMap;
+use std::ops::Div;
+use std::path::Path;
+use subweight_core::parse::overhead::Weight;
+use subweight_core::parse::pallet::ChromaticExtrinsic;
+use subweight_core::parse::pallet::ComponentRange;
+use subweight_core::parse::storage::Weights;
+use subweight_core::scope::Scope;
+use subweight_core::term::Term;
+
+// Substrate default maximum weight of a block in nanoseconds.
+// Since the maximum block weight is one-third of the execution time,
+// it corresponds to a block time of 6 seconds.
+const MAX_BLOCK_WEIGHT_NS: f64 = 2_000_000_000_000.;
+
+pub struct MaxBlockWeight(f64);
+impl Default for MaxBlockWeight {
+    fn default() -> Self {
+        MaxBlockWeight(MAX_BLOCK_WEIGHT_NS)
+    }
+}
+impl Div<&MaxBlockWeight> for f64 {
+    type Output = Self;
+    fn div(self, max_block_weight: &MaxBlockWeight) -> Self::Output {
+        self / max_block_weight.0
+    }
+}
+impl MaxBlockWeight {
+    pub fn new<T: Into<f64>>(value: T) -> Self {
+        MaxBlockWeight(value.into())
+    }
+}
+
+#[derive(Clone, Debug, Serialize)]
+pub struct WeightInfo {
+    pub weight: u128,
+    pub relative_weight: f64,
+}
+
+/// Returns a HashMap <pallet_name, <extrinsic_name, weigh_info>>
+/// of the analyzed weights.
+///
+/// # Arguments
+///
+/// * `folder_path` - A Path to a folder where the weight files are stored.
+/// `paritydb_weights.rs` is mandatory and pallet weights should start by
+/// `pallet_`.
+/// *`max_block_weight` - The maximal weight of a block.
+///
+/// # Examples
+///
+/// ```
+///    use weightanalyzer::analyze_weight;
+///    use std::path::Path;
+///    use weightanalyzer::MaxBlockWeight;
+///    let weight_by_pallet = analyze_weight(Path::new("../../runtime/common/src/weights/"), &MaxBlockWeight::default());
+///    println!("{:?}", weight_by_pallet);
+/// ```
+pub fn analyze_weight(
+    folder_path: &Path,
+    max_block_weight: &MaxBlockWeight,
+) -> Result<HashMap<String, HashMap<String, WeightInfo>>, String> {
+    let pallet_weights = read_pallet_weight(folder_path)?;
+    let db_weight = read_db_weight(folder_path)?;
+    let overhead_weights = read_overhead_weight(folder_path)?;
+
+    // Initialize scope with db weights
+    let mut scope = Scope::from_substrate();
+    scope = scope.with_storage_weights(db_weight.weights.read, db_weight.weights.write);
+
+    process(pallet_weights, scope, max_block_weight, &overhead_weights)
+}
+
+fn read_pallet_weight(folder_path: &Path) -> Result<Vec<Vec<ChromaticExtrinsic>>, String> {
+    let mut parsed_files = Vec::new();
+    for path in glob(folder_path.join("*").to_str().expect("Invalid pallet path"))
+        .expect("Invalid pallet pattern")
+        .filter_map(Result::ok)
+    {
+        let file = subweight_core::parse::pallet::parse_file(&path);
+        if let Ok(file) = file {
+            parsed_files.push(file);
+        }
+    }
+    if parsed_files.is_empty() {
+        return Err("No pallet found".into());
+    }
+    Ok(parsed_files)
+}
+
+fn read_db_weight(folder_path: &Path) -> Result<Weights, String> {
+    subweight_core::parse::storage::parse_file(folder_path.join("paritydb_weights.rs").as_path())
+}
+
+fn read_overhead_weight(folder_path: &Path) -> Result<Weight, String> {
+    subweight_core::parse::overhead::parse_file(folder_path.join("extrinsic_weights.rs").as_path())
+}
+
+fn evaluate_weight(
+    extrinsic: ChromaticExtrinsic,
+    scope: &mut Scope<Term<u128>>,
+    max_block_weight: &MaxBlockWeight,
+    overhead: &Weight,
+) -> Result<(String, String, WeightInfo), String> {
+    // Extend the scope with the maximum value of the complexity parameter.
+    if let Some(params) = extrinsic.comp_ranges {
+        params
+            .iter()
+            .for_each(|(key, val): (&String, &ComponentRange)| {
+                scope.put_var(key.as_str(), Term::Scalar(val.max.into()));
+            });
+    }
+
+    // Evaluate the weight
+    let mut weight = extrinsic
+        .term
+        .simplify(subweight_core::Dimension::Time)
+        .expect("Can't evaluate")
+        .eval(scope)?;
+
+    // Add base extrinsic overhead
+    if let Weight::ExtrinsicBase(i) = overhead {
+        weight += i
+            .simplify(subweight_core::Dimension::Time)
+            .expect("Can't evaluate")
+            .eval(scope)?;
+    }
+
+    let relative_weight = (weight as f64) / max_block_weight * 100.;
+    Ok((
+        extrinsic
+            .pallet
+            .to_case(Case::Title)
+            .replace("Pallet", "")
+            .replace(".rs", "")
+            .chars()
+            .filter(|c| !c.is_whitespace())
+            .collect(),
+        extrinsic.name,
+        WeightInfo {
+            weight,
+            relative_weight,
+        },
+    ))
+}
+
+fn process(
+    pallet_weights: Vec<Vec<ChromaticExtrinsic>>,
+    mut scope: Scope<Term<u128>>,
+    max_block_weight: &MaxBlockWeight,
+    overhead: &Weight,
+) -> Result<HashMap<String, HashMap<String, WeightInfo>>, String> {
+    let mut weight_by_pallet: HashMap<String, HashMap<String, WeightInfo>> = HashMap::new();
+    for i in pallet_weights {
+        for j in i {
+            let (pallet, extrinsic, weight) =
+                evaluate_weight(j, &mut scope, max_block_weight, overhead)?;
+            if let Some(i) = weight_by_pallet.get_mut(&pallet) {
+                i.insert(extrinsic, weight);
+            } else {
+                weight_by_pallet.insert(pallet, HashMap::from([(extrinsic, weight)]));
+            }
+        }
+    }
+    Ok(weight_by_pallet)
+}
+
+#[cfg(test)]
+mod tests {
+    use crate::analyze_weight;
+    use crate::MaxBlockWeight;
+    use std::path::Path;
+    #[test]
+    fn should_works() {
+        let weight_by_pallet = analyze_weight(
+            Path::new("../../runtime/common/src/weights/"),
+            &MaxBlockWeight::default(),
+        );
+        assert!(
+            weight_by_pallet
+                .clone()
+                .unwrap()
+                .get("Balances")
+                .unwrap()
+                .len()
+                == 7
+        ); // 7 extrinsics in pallet
+        println!("{:?}", weight_by_pallet); // cargo test  -- --nocapture
+    }
+    #[test]
+    #[should_panic]
+    fn should_not_works() {
+        let _ = analyze_weight(Path::new(""), &MaxBlockWeight::default()).unwrap();
+    }
+}
diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs
index 6efcf29e34f3f6776447aa847acf8d3e51d6c0d4..a9eedceef109638c2d9ec9ecb73807990abcd15e 100644
--- a/runtime/common/src/pallets_config.rs
+++ b/runtime/common/src/pallets_config.rs
@@ -214,7 +214,10 @@ macro_rules! pallets_config {
             // does a filter on the call
             type OnChargeTransaction = OneshotAccount;
             type OperationalFeeMultiplier = frame_support::traits::ConstU8<5>;
+            #[cfg(not(feature = "runtime-benchmarks"))]
             type WeightToFee = common_runtime::fees::WeightToFeeImpl<Balance>;
+            #[cfg(feature = "runtime-benchmarks")]
+            type WeightToFee = frame_support::weights::ConstantMultiplier::<u64, sp_core::ConstU64<0u64>>; // Necessary for overhead benchmarking until WeightToFee has a correct implementation
             type LengthToFee = common_runtime::fees::LengthToFeeImpl<Balance>;
             type FeeMultiplierUpdate = pallet_transaction_payment::ConstFeeMultiplier<FeeMultiplier>;
         }
diff --git a/runtime/common/src/weights/block_weights.rs b/runtime/common/src/weights/block_weights.rs
index f6d1a031415dee95bbb472d23693f46c2890a7e1..0bbd183c5cdf84b2b05d6cfe52b1bfdbaeeb0aff 100644
--- a/runtime/common/src/weights/block_weights.rs
+++ b/runtime/common/src/weights/block_weights.rs
@@ -1,24 +1,9 @@
-// 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/>.
 
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-06-08 (Y/M/D)
-//! HOSTNAME: `benjamin-xps139380`, CPU: `Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz`
+//! DATE: 2023-12-26 (Y/M/D)
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //!
-//! SHORT-NAME: `block`, LONG-NAME: `BlockExecution`, RUNTIME: `Development`
+//! SHORT-NAME: `block`, LONG-NAME: `BlockExecution`, RUNTIME: `Äždev Local Testnet`
 //! WARMUPS: `10`, REPEAT: `100`
 //! WEIGHT-PATH: `./runtime/common/src/weights/`
 //! WEIGHT-METRIC: `Average`, WEIGHT-MUL: `1.0`, WEIGHT-ADD: `0`
@@ -27,13 +12,12 @@
 //   target/release/duniter
 //   benchmark
 //   overhead
-//   --chain=gdev-benchmark
+//   --chain=dev
 //   --execution=wasm
 //   --wasm-execution=compiled
 //   --weight-path=./runtime/common/src/weights/
 //   --warmup=10
 //   --repeat=100
-//   --header=./file_header.txt
 
 use sp_core::parameter_types;
 use sp_weights::{constants::WEIGHT_REF_TIME_PER_NANOS, Weight};
@@ -43,17 +27,17 @@ parameter_types! {
 	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
 	///
 	/// Stats nanoseconds:
-	///   Min, Max: 623_420, 1_116_421
-	///   Average:  690_884
-	///   Median:   634_164
-	///   Std-Dev:  114940.42
+	///   Min, Max: 151_798, 231_989
+	///   Average:  164_390
+	///   Median:   161_435
+	///   Std-Dev:  11994.84
 	///
 	/// Percentiles nanoseconds:
-	///   99th: 1_050_988
-	///   95th: 973_973
-	///   75th: 680_020
+	///   99th: 213_693
+	///   95th: 188_989
+	///   75th: 164_199
 	pub const BlockExecutionWeight: Weight =
-		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(690_884), 0);
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(164_390), 0);
 }
 
 #[cfg(test)]
diff --git a/runtime/common/src/weights/extrinsic_weights.rs b/runtime/common/src/weights/extrinsic_weights.rs
index ae6220f62303a6c8872abe011f95fd49fcae24fb..fb0cc71c9adfac4f0b7d3492e311c65fb79e132b 100644
--- a/runtime/common/src/weights/extrinsic_weights.rs
+++ b/runtime/common/src/weights/extrinsic_weights.rs
@@ -1,24 +1,9 @@
-// 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/>.
 
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-06-08 (Y/M/D)
-//! HOSTNAME: `benjamin-xps139380`, CPU: `Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz`
+//! DATE: 2023-12-26 (Y/M/D)
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //!
-//! SHORT-NAME: `extrinsic`, LONG-NAME: `ExtrinsicBase`, RUNTIME: `Development`
+//! SHORT-NAME: `extrinsic`, LONG-NAME: `ExtrinsicBase`, RUNTIME: `Äždev Local Testnet`
 //! WARMUPS: `10`, REPEAT: `100`
 //! WEIGHT-PATH: `./runtime/common/src/weights/`
 //! WEIGHT-METRIC: `Average`, WEIGHT-MUL: `1.0`, WEIGHT-ADD: `0`
@@ -27,13 +12,12 @@
 //   target/release/duniter
 //   benchmark
 //   overhead
-//   --chain=gdev-benchmark
+//   --chain=dev
 //   --execution=wasm
 //   --wasm-execution=compiled
 //   --weight-path=./runtime/common/src/weights/
 //   --warmup=10
 //   --repeat=100
-//   --header=./file_header.txt
 
 use sp_core::parameter_types;
 use sp_weights::{constants::WEIGHT_REF_TIME_PER_NANOS, Weight};
@@ -43,17 +27,17 @@ parameter_types! {
 	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
 	///
 	/// Stats nanoseconds:
-	///   Min, Max: 220_365, 326_359
-	///   Average:  226_482
-	///   Median:   222_794
-	///   Std-Dev:  14284.13
+	///   Min, Max: 74_306, 80_686
+	///   Average:  75_521
+	///   Median:   75_200
+	///   Std-Dev:  1107.91
 	///
 	/// Percentiles nanoseconds:
-	///   99th: 286_577
-	///   95th: 253_512
-	///   75th: 224_166
+	///   99th: 80_133
+	///   95th: 77_493
+	///   75th: 75_924
 	pub const ExtrinsicBaseWeight: Weight =
-		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(226_482), 0);
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(75_521), 0);
 }
 
 #[cfg(test)]
diff --git a/runtime/common/src/weights/frame_benchmarking_baseline.rs b/runtime/common/src/weights/frame_benchmarking_baseline.rs
index 2050bee73a4a8a98388dedf2cdadc97c947d67b4..acc2e03745357e15c60166706a380b3dad92d81c 100644
--- a/runtime/common/src/weights/frame_benchmarking_baseline.rs
+++ b/runtime/common/src/weights/frame_benchmarking_baseline.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `frame_benchmarking::baseline`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -40,8 +53,8 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 25_000 picoseconds.
-		Weight::from_parts(28_168, 0)
+		// Minimum execution time: 121_000 picoseconds.
+		Weight::from_parts(155_503, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 1000000]`.
@@ -49,8 +62,8 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 26_000 picoseconds.
-		Weight::from_parts(27_958, 0)
+		// Minimum execution time: 126_000 picoseconds.
+		Weight::from_parts(156_742, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 1000000]`.
@@ -58,8 +71,8 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 25_000 picoseconds.
-		Weight::from_parts(27_507, 0)
+		// Minimum execution time: 124_000 picoseconds.
+		Weight::from_parts(157_722, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 1000000]`.
@@ -67,16 +80,16 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 24_000 picoseconds.
-		Weight::from_parts(28_162, 0)
+		// Minimum execution time: 122_000 picoseconds.
+		Weight::from_parts(158_204, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	fn hashing() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 11_077_489_000 picoseconds.
-		Weight::from_parts(11_118_896_000, 0)
+		// Minimum execution time: 21_140_474_000 picoseconds.
+		Weight::from_parts(21_674_990_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 100]`.
@@ -84,10 +97,10 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 29_000 picoseconds.
-		Weight::from_parts(5_237_333, 0)
+		// Minimum execution time: 137_000 picoseconds.
+		Weight::from_parts(5_177_470, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 13_793
-			.saturating_add(Weight::from_parts(35_970_853, 0).saturating_mul(i.into()))
+			// Standard Error: 13_536
+			.saturating_add(Weight::from_parts(37_911_222, 0).saturating_mul(i.into()))
 	}
 }
diff --git a/runtime/common/src/weights/frame_system.rs b/runtime/common/src/weights/frame_system.rs
index b2c1a657f4ebb4d8d08198f634f62a0471dbf24a..e28d0736f39641a54d740b62bacfb01db99e12ec 100644
--- a/runtime/common/src/weights/frame_system.rs
+++ b/runtime/common/src/weights/frame_system.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `frame_system`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -40,22 +53,22 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 669_000 picoseconds.
-		Weight::from_parts(721_000, 0)
+		// Minimum execution time: 1_509_000 picoseconds.
+		Weight::from_parts(1_562_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 0
-			.saturating_add(Weight::from_parts(68, 0).saturating_mul(b.into()))
+			.saturating_add(Weight::from_parts(267, 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: 2_319_000 picoseconds.
-		Weight::from_parts(2_461_000, 0)
+		// Minimum execution time: 5_464_000 picoseconds.
+		Weight::from_parts(5_690_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 0
-			.saturating_add(Weight::from_parts(765, 0).saturating_mul(b.into()))
+			.saturating_add(Weight::from_parts(1_077, 0).saturating_mul(b.into()))
 	}
 	/// Storage: System Digest (r:1 w:1)
 	/// Proof Skipped: System Digest (max_values: Some(1), max_size: None, mode: Measured)
@@ -65,8 +78,8 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `1485`
-		// Minimum execution time: 1_450_000 picoseconds.
-		Weight::from_parts(1_616_000, 0)
+		// Minimum execution time: 3_139_000 picoseconds.
+		Weight::from_parts(3_479_000, 0)
 			.saturating_add(Weight::from_parts(0, 1485))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -78,11 +91,11 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 671_000 picoseconds.
-		Weight::from_parts(730_000, 0)
+		// Minimum execution time: 1_700_000 picoseconds.
+		Weight::from_parts(1_767_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 645
-			.saturating_add(Weight::from_parts(455_432, 0).saturating_mul(i.into()))
+			// Standard Error: 640
+			.saturating_add(Weight::from_parts(665_906, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
 	/// Storage: Skipped Metadata (r:0 w:0)
@@ -92,11 +105,11 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 640_000 picoseconds.
-		Weight::from_parts(683_000, 0)
+		// Minimum execution time: 1_614_000 picoseconds.
+		Weight::from_parts(1_731_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 754
-			.saturating_add(Weight::from_parts(365_166, 0).saturating_mul(i.into()))
+			// Standard Error: 857
+			.saturating_add(Weight::from_parts(507_172, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
 	/// Storage: Skipped Metadata (r:0 w:0)
@@ -106,11 +119,11 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `82 + p * (69 ±0)`
 		//  Estimated: `81 + p * (70 ±0)`
-		// Minimum execution time: 1_669_000 picoseconds.
-		Weight::from_parts(1_719_000, 0)
+		// Minimum execution time: 2_993_000 picoseconds.
+		Weight::from_parts(3_078_000, 0)
 			.saturating_add(Weight::from_parts(0, 81))
-			// Standard Error: 902
-			.saturating_add(Weight::from_parts(907_987, 0).saturating_mul(p.into()))
+			// Standard Error: 987
+			.saturating_add(Weight::from_parts(950_206, 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()))
diff --git a/runtime/common/src/weights/pallet_authority_members.rs b/runtime/common/src/weights/pallet_authority_members.rs
index 96edf8feee8d98a66cce5b50e337bb286a37055a..73addf62705291adc6fdaf7b4e91abee254f4599 100644
--- a/runtime/common/src/weights/pallet_authority_members.rs
+++ b/runtime/common/src/weights/pallet_authority_members.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_authority_members`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -53,8 +66,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `697`
 		//  Estimated: `4162`
-		// Minimum execution time: 14_884_000 picoseconds.
-		Weight::from_parts(15_418_000, 0)
+		// Minimum execution time: 22_833_000 picoseconds.
+		Weight::from_parts(23_764_000, 0)
 			.saturating_add(Weight::from_parts(0, 4162))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -63,8 +76,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
 	/// Storage: SmithMembership Membership (r:1 w:0)
 	/// Proof Skipped: SmithMembership Membership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: AuthorityMembers BlackList (r:1 w:0)
-	/// Proof Skipped: AuthorityMembers BlackList (max_values: Some(1), max_size: None, mode: Measured)
+	/// Storage: AuthorityMembers Blacklist (r:1 w:0)
+	/// Proof Skipped: AuthorityMembers Blacklist (max_values: Some(1), max_size: None, mode: Measured)
 	/// Storage: AuthorityMembers Members (r:1 w:0)
 	/// Proof Skipped: AuthorityMembers Members (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Session NextKeys (r:1 w:0)
@@ -81,8 +94,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `1087`
 		//  Estimated: `4552`
-		// Minimum execution time: 18_491_000 picoseconds.
-		Weight::from_parts(19_385_000, 0)
+		// Minimum execution time: 30_618_000 picoseconds.
+		Weight::from_parts(36_860_000, 0)
 			.saturating_add(Weight::from_parts(0, 4552))
 			.saturating_add(T::DbWeight::get().reads(9))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -103,8 +116,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `1468`
 		//  Estimated: `12358`
-		// Minimum execution time: 21_063_000 picoseconds.
-		Weight::from_parts(22_045_000, 0)
+		// Minimum execution time: 32_948_000 picoseconds.
+		Weight::from_parts(33_997_000, 0)
 			.saturating_add(Weight::from_parts(0, 12358))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -135,21 +148,21 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `930`
 		//  Estimated: `4395`
-		// Minimum execution time: 36_098_000 picoseconds.
-		Weight::from_parts(37_813_000, 0)
+		// Minimum execution time: 58_396_000 picoseconds.
+		Weight::from_parts(61_595_000, 0)
 			.saturating_add(Weight::from_parts(0, 4395))
 			.saturating_add(T::DbWeight::get().reads(10))
 			.saturating_add(T::DbWeight::get().writes(14))
 	}
-	/// Storage: AuthorityMembers BlackList (r:1 w:1)
-	/// Proof Skipped: AuthorityMembers BlackList (max_values: Some(1), max_size: None, mode: Measured)
+	/// Storage: AuthorityMembers Blacklist (r:1 w:1)
+	/// Proof Skipped: AuthorityMembers Blacklist (max_values: Some(1), max_size: None, mode: Measured)
 	fn remove_member_from_blacklist() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `218`
-		//  Estimated: `1703`
-		// Minimum execution time: 5_275_000 picoseconds.
-		Weight::from_parts(5_438_000, 0)
-			.saturating_add(Weight::from_parts(0, 1703))
+		//  Measured:  `222`
+		//  Estimated: `1707`
+		// Minimum execution time: 10_396_000 picoseconds.
+		Weight::from_parts(10_825_000, 0)
+			.saturating_add(Weight::from_parts(0, 1707))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/common/src/weights/pallet_balances.rs b/runtime/common/src/weights/pallet_balances.rs
index 383962de83632cb0fe08fef06fc490bd64d50c9b..b9fe234250ff9d798a8bd73a1f3e2110f72c773e 100644
--- a/runtime/common/src/weights/pallet_balances.rs
+++ b/runtime/common/src/weights/pallet_balances.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_balances`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-23, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// pallet-balances
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -43,8 +56,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `3591`
-		// Minimum execution time: 20_114_000 picoseconds.
-		Weight::from_parts(20_702_000, 0)
+		// Minimum execution time: 53_326_000 picoseconds.
+		Weight::from_parts(55_139_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -57,8 +70,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `3591`
-		// Minimum execution time: 13_879_000 picoseconds.
-		Weight::from_parts(14_647_000, 0)
+		// Minimum execution time: 37_130_000 picoseconds.
+		Weight::from_parts(38_183_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -69,8 +82,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `101`
 		//  Estimated: `3591`
-		// Minimum execution time: 6_594_000 picoseconds.
-		Weight::from_parts(6_975_000, 0)
+		// Minimum execution time: 12_055_000 picoseconds.
+		Weight::from_parts(12_677_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -81,8 +94,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `101`
 		//  Estimated: `3591`
-		// Minimum execution time: 8_809_000 picoseconds.
-		Weight::from_parts(9_244_000, 0)
+		// Minimum execution time: 18_539_000 picoseconds.
+		Weight::from_parts(19_109_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -95,8 +108,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `64`
 		//  Estimated: `6192`
-		// Minimum execution time: 21_956_000 picoseconds.
-		Weight::from_parts(22_411_000, 0)
+		// Minimum execution time: 57_000_000 picoseconds.
+		Weight::from_parts(58_474_000, 0)
 			.saturating_add(Weight::from_parts(0, 6192))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -109,8 +122,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `3591`
-		// Minimum execution time: 17_184_000 picoseconds.
-		Weight::from_parts(17_534_000, 0)
+		// Minimum execution time: 45_924_000 picoseconds.
+		Weight::from_parts(46_901_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -121,8 +134,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `101`
 		//  Estimated: `3591`
-		// Minimum execution time: 7_304_000 picoseconds.
-		Weight::from_parts(7_588_000, 0)
+		// Minimum execution time: 15_184_000 picoseconds.
+		Weight::from_parts(15_916_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/common/src/weights/pallet_certification_cert.rs b/runtime/common/src/weights/pallet_certification_cert.rs
index 0378b59c1800b55cc428e007fd664cf403965ecc..6e2b218497485272e93aa21e13440968f24edd15 100644
--- a/runtime/common/src/weights/pallet_certification_cert.rs
+++ b/runtime/common/src/weights/pallet_certification_cert.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_certification`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -49,8 +62,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `839`
 		//  Estimated: `6779`
-		// Minimum execution time: 18_790_000 picoseconds.
-		Weight::from_parts(19_591_000, 0)
+		// Minimum execution time: 32_966_000 picoseconds.
+		Weight::from_parts(34_186_000, 0)
 			.saturating_add(Weight::from_parts(0, 6779))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -67,8 +80,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `722`
 		//  Estimated: `6662`
-		// Minimum execution time: 16_351_000 picoseconds.
-		Weight::from_parts(16_970_000, 0)
+		// Minimum execution time: 24_980_000 picoseconds.
+		Weight::from_parts(26_584_000, 0)
 			.saturating_add(Weight::from_parts(0, 6662))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -87,11 +100,11 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `608 + i * (35 ±0)`
 		//  Estimated: `4079 + i * (2511 ±0)`
-		// Minimum execution time: 17_062_000 picoseconds.
-		Weight::from_parts(17_453_000, 0)
+		// Minimum execution time: 26_328_000 picoseconds.
+		Weight::from_parts(27_195_000, 0)
 			.saturating_add(Weight::from_parts(0, 4079))
-			// Standard Error: 8_545
-			.saturating_add(Weight::from_parts(4_805_246, 0).saturating_mul(i.into()))
+			// Standard Error: 16_272
+			.saturating_add(Weight::from_parts(10_921_792, 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))
@@ -104,8 +117,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `181`
 		//  Estimated: `3646`
-		// Minimum execution time: 2_906_000 picoseconds.
-		Weight::from_parts(3_119_000, 0)
+		// Minimum execution time: 4_037_000 picoseconds.
+		Weight::from_parts(4_329_000, 0)
 			.saturating_add(Weight::from_parts(0, 3646))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -115,8 +128,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `279`
 		//  Estimated: `3744`
-		// Minimum execution time: 3_649_000 picoseconds.
-		Weight::from_parts(3_853_000, 0)
+		// Minimum execution time: 5_062_000 picoseconds.
+		Weight::from_parts(5_414_000, 0)
 			.saturating_add(Weight::from_parts(0, 3744))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -133,8 +146,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `722`
 		//  Estimated: `6662`
-		// Minimum execution time: 14_838_000 picoseconds.
-		Weight::from_parts(15_366_000, 0)
+		// Minimum execution time: 22_358_000 picoseconds.
+		Weight::from_parts(23_558_000, 0)
 			.saturating_add(Weight::from_parts(0, 6662))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/common/src/weights/pallet_certification_smith_cert.rs b/runtime/common/src/weights/pallet_certification_smith_cert.rs
index d0bd5e06944a449d52ad962144170b0e9e512dd7..7403ec2d9d9d0ad2b5eaca27b031942da3ce8477 100644
--- a/runtime/common/src/weights/pallet_certification_smith_cert.rs
+++ b/runtime/common/src/weights/pallet_certification_smith_cert.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_certification`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -49,8 +62,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `769`
 		//  Estimated: `6709`
-		// Minimum execution time: 20_409_000 picoseconds.
-		Weight::from_parts(21_334_000, 0)
+		// Minimum execution time: 38_312_000 picoseconds.
+		Weight::from_parts(39_872_000, 0)
 			.saturating_add(Weight::from_parts(0, 6709))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -67,8 +80,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `638`
 		//  Estimated: `6578`
-		// Minimum execution time: 16_348_000 picoseconds.
-		Weight::from_parts(16_926_000, 0)
+		// Minimum execution time: 25_005_000 picoseconds.
+		Weight::from_parts(26_178_000, 0)
 			.saturating_add(Weight::from_parts(0, 6578))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -87,11 +100,11 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `546 + i * (35 ±0)`
 		//  Estimated: `4020 + i * (2511 ±0)`
-		// Minimum execution time: 16_934_000 picoseconds.
-		Weight::from_parts(17_720_000, 0)
+		// Minimum execution time: 26_616_000 picoseconds.
+		Weight::from_parts(27_240_000, 0)
 			.saturating_add(Weight::from_parts(0, 4020))
-			// Standard Error: 8_469
-			.saturating_add(Weight::from_parts(4_793_252, 0).saturating_mul(i.into()))
+			// Standard Error: 15_842
+			.saturating_add(Weight::from_parts(10_835_042, 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))
@@ -104,8 +117,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `181`
 		//  Estimated: `3646`
-		// Minimum execution time: 2_890_000 picoseconds.
-		Weight::from_parts(3_127_000, 0)
+		// Minimum execution time: 4_084_000 picoseconds.
+		Weight::from_parts(4_316_000, 0)
 			.saturating_add(Weight::from_parts(0, 3646))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -115,8 +128,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `235`
 		//  Estimated: `3700`
-		// Minimum execution time: 4_084_000 picoseconds.
-		Weight::from_parts(4_285_000, 0)
+		// Minimum execution time: 5_261_000 picoseconds.
+		Weight::from_parts(5_742_000, 0)
 			.saturating_add(Weight::from_parts(0, 3700))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -133,8 +146,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `638`
 		//  Estimated: `6578`
-		// Minimum execution time: 14_634_000 picoseconds.
-		Weight::from_parts(15_347_000, 0)
+		// Minimum execution time: 22_342_000 picoseconds.
+		Weight::from_parts(23_355_000, 0)
 			.saturating_add(Weight::from_parts(0, 6578))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/common/src/weights/pallet_collective.rs b/runtime/common/src/weights/pallet_collective.rs
index c03f5e7fac15400bb9716200a83e03f95c32cbbd..4e1b8c60b677bd9557fafe5b9cefd64cd3bd154c 100644
--- a/runtime/common/src/weights/pallet_collective.rs
+++ b/runtime/common/src/weights/pallet_collective.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_collective`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -49,14 +62,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: `10056 + m * (416 ±4) + p * (4183 ±23)`
-		// Minimum execution time: 8_788_000 picoseconds.
-		Weight::from_parts(9_007_000, 0)
+		//  Estimated: `10056 + m * (416 ±5) + p * (4183 ±27)`
+		// Minimum execution time: 13_866_000 picoseconds.
+		Weight::from_parts(14_337_000, 0)
 			.saturating_add(Weight::from_parts(0, 10056))
-			// Standard Error: 5_566
-			.saturating_add(Weight::from_parts(375_418, 0).saturating_mul(m.into()))
-			// Standard Error: 27_517
-			.saturating_add(Weight::from_parts(3_658_247, 0).saturating_mul(p.into()))
+			// Standard Error: 12_534
+			.saturating_add(Weight::from_parts(988_262, 0).saturating_mul(m.into()))
+			// Standard Error: 61_962
+			.saturating_add(Weight::from_parts(7_498_068, 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))
@@ -72,13 +85,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `69 + m * (32 ±0)`
 		//  Estimated: `1555 + m * (32 ±0)`
-		// Minimum execution time: 6_825_000 picoseconds.
-		Weight::from_parts(6_395_273, 0)
+		// Minimum execution time: 13_024_000 picoseconds.
+		Weight::from_parts(12_564_697, 0)
 			.saturating_add(Weight::from_parts(0, 1555))
-			// Standard Error: 20
-			.saturating_add(Weight::from_parts(914, 0).saturating_mul(b.into()))
-			// Standard Error: 209
-			.saturating_add(Weight::from_parts(9_146, 0).saturating_mul(m.into()))
+			// Standard Error: 42
+			.saturating_add(Weight::from_parts(1_552, 0).saturating_mul(b.into()))
+			// Standard Error: 438
+			.saturating_add(Weight::from_parts(13_993, 0).saturating_mul(m.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
 	}
@@ -92,13 +105,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `69 + m * (32 ±0)`
 		//  Estimated: `3535 + m * (32 ±0)`
-		// Minimum execution time: 7_589_000 picoseconds.
-		Weight::from_parts(7_568_178, 0)
+		// Minimum execution time: 15_182_000 picoseconds.
+		Weight::from_parts(14_242_597, 0)
 			.saturating_add(Weight::from_parts(0, 3535))
-			// Standard Error: 33
-			.saturating_add(Weight::from_parts(605, 0).saturating_mul(b.into()))
-			// Standard Error: 348
-			.saturating_add(Weight::from_parts(24_454, 0).saturating_mul(m.into()))
+			// Standard Error: 116
+			.saturating_add(Weight::from_parts(1_878, 0).saturating_mul(b.into()))
+			// Standard Error: 1_204
+			.saturating_add(Weight::from_parts(25_952, 0).saturating_mul(m.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
 	}
@@ -119,15 +132,15 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `61 + m * (32 ±0) + p * (55 ±0)`
 		//  Estimated: `3498 + m * (32 ±0) + p * (54 ±0)`
-		// Minimum execution time: 11_253_000 picoseconds.
-		Weight::from_parts(9_428_843, 0)
+		// Minimum execution time: 21_473_000 picoseconds.
+		Weight::from_parts(20_563_599, 0)
 			.saturating_add(Weight::from_parts(0, 3498))
-			// Standard Error: 46
-			.saturating_add(Weight::from_parts(1_519, 0).saturating_mul(b.into()))
-			// Standard Error: 487
-			.saturating_add(Weight::from_parts(24_207, 0).saturating_mul(m.into()))
-			// Standard Error: 2_436
-			.saturating_add(Weight::from_parts(160_786, 0).saturating_mul(p.into()))
+			// Standard Error: 92
+			.saturating_add(Weight::from_parts(2_430, 0).saturating_mul(b.into()))
+			// Standard Error: 968
+			.saturating_add(Weight::from_parts(14_895, 0).saturating_mul(m.into()))
+			// Standard Error: 4_841
+			.saturating_add(Weight::from_parts(264_812, 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()))
@@ -142,11 +155,11 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `610 + m * (64 ±0)`
 		//  Estimated: `4074 + m * (64 ±0)`
-		// Minimum execution time: 10_340_000 picoseconds.
-		Weight::from_parts(10_821_594, 0)
+		// Minimum execution time: 17_697_000 picoseconds.
+		Weight::from_parts(18_924_050, 0)
 			.saturating_add(Weight::from_parts(0, 4074))
-			// Standard Error: 730
-			.saturating_add(Weight::from_parts(39_833, 0).saturating_mul(m.into()))
+			// Standard Error: 1_889
+			.saturating_add(Weight::from_parts(39_248, 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()))
@@ -165,13 +178,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `154 + m * (64 ±0) + p * (55 ±0)`
 		//  Estimated: `3628 + m * (64 ±0) + p * (55 ±0)`
-		// Minimum execution time: 12_339_000 picoseconds.
-		Weight::from_parts(11_149_740, 0)
+		// Minimum execution time: 23_592_000 picoseconds.
+		Weight::from_parts(22_710_068, 0)
 			.saturating_add(Weight::from_parts(0, 3628))
-			// Standard Error: 502
-			.saturating_add(Weight::from_parts(25_441, 0).saturating_mul(m.into()))
-			// Standard Error: 2_480
-			.saturating_add(Weight::from_parts(142_961, 0).saturating_mul(p.into()))
+			// Standard Error: 861
+			.saturating_add(Weight::from_parts(31_063, 0).saturating_mul(m.into()))
+			// Standard Error: 4_252
+			.saturating_add(Weight::from_parts(256_439, 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()))
@@ -192,15 +205,15 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `99 + b * (1 ±0) + m * (64 ±0) + p * (78 ±0)`
 		//  Estimated: `3656 + b * (1 ±0) + m * (63 ±0) + p * (74 ±0)`
-		// Minimum execution time: 16_498_000 picoseconds.
-		Weight::from_parts(15_217_225, 0)
+		// Minimum execution time: 32_889_000 picoseconds.
+		Weight::from_parts(30_301_704, 0)
 			.saturating_add(Weight::from_parts(0, 3656))
-			// Standard Error: 77
-			.saturating_add(Weight::from_parts(1_420, 0).saturating_mul(b.into()))
-			// Standard Error: 819
-			.saturating_add(Weight::from_parts(14_599, 0).saturating_mul(m.into()))
-			// Standard Error: 4_043
-			.saturating_add(Weight::from_parts(227_674, 0).saturating_mul(p.into()))
+			// Standard Error: 116
+			.saturating_add(Weight::from_parts(2_652, 0).saturating_mul(b.into()))
+			// Standard Error: 1_235
+			.saturating_add(Weight::from_parts(29_619, 0).saturating_mul(m.into()))
+			// Standard Error: 6_093
+			.saturating_add(Weight::from_parts(393_171, 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()))
@@ -223,13 +236,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `174 + m * (64 ±0) + p * (55 ±0)`
 		//  Estimated: `3648 + m * (64 ±0) + p * (55 ±0)`
-		// Minimum execution time: 13_610_000 picoseconds.
-		Weight::from_parts(12_450_275, 0)
+		// Minimum execution time: 25_488_000 picoseconds.
+		Weight::from_parts(24_761_967, 0)
 			.saturating_add(Weight::from_parts(0, 3648))
-			// Standard Error: 528
-			.saturating_add(Weight::from_parts(26_794, 0).saturating_mul(m.into()))
-			// Standard Error: 2_610
-			.saturating_add(Weight::from_parts(147_858, 0).saturating_mul(p.into()))
+			// Standard Error: 837
+			.saturating_add(Weight::from_parts(36_006, 0).saturating_mul(m.into()))
+			// Standard Error: 4_135
+			.saturating_add(Weight::from_parts(269_238, 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()))
@@ -252,15 +265,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `119 + b * (1 ±0) + m * (64 ±0) + p * (78 ±0)`
 		//  Estimated: `3676 + b * (1 ±0) + m * (63 ±0) + p * (74 ±0)`
-		// Minimum execution time: 17_716_000 picoseconds.
-		Weight::from_parts(16_730_494, 0)
+		// Minimum execution time: 35_775_000 picoseconds.
+		Weight::from_parts(36_891_367, 0)
 			.saturating_add(Weight::from_parts(0, 3676))
-			// Standard Error: 98
-			.saturating_add(Weight::from_parts(2_005, 0).saturating_mul(b.into()))
-			// Standard Error: 1_036
-			.saturating_add(Weight::from_parts(2_643, 0).saturating_mul(m.into()))
-			// Standard Error: 5_112
-			.saturating_add(Weight::from_parts(269_899, 0).saturating_mul(p.into()))
+			// Standard Error: 152
+			.saturating_add(Weight::from_parts(2_150, 0).saturating_mul(b.into()))
+			// Standard Error: 7_936
+			.saturating_add(Weight::from_parts(374_935, 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()))
@@ -278,11 +289,11 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `226 + p * (32 ±0)`
 		//  Estimated: `1711 + p * (32 ±0)`
-		// Minimum execution time: 6_590_000 picoseconds.
-		Weight::from_parts(7_196_355, 0)
+		// Minimum execution time: 12_863_000 picoseconds.
+		Weight::from_parts(13_986_066, 0)
 			.saturating_add(Weight::from_parts(0, 1711))
-			// Standard Error: 1_586
-			.saturating_add(Weight::from_parts(96_661, 0).saturating_mul(p.into()))
+			// Standard Error: 2_333
+			.saturating_add(Weight::from_parts(204_483, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 32).saturating_mul(p.into()))
diff --git a/runtime/common/src/weights/pallet_distance.rs b/runtime/common/src/weights/pallet_distance.rs
index 2f025be1927ca511da61da0d276de7739564c76b..b26314cdad554fe54d3c07d580044476fae61586 100644
--- a/runtime/common/src/weights/pallet_distance.rs
+++ b/runtime/common/src/weights/pallet_distance.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_distance`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -51,8 +64,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `940`
 		//  Estimated: `4405`
-		// Minimum execution time: 15_424_000 picoseconds.
-		Weight::from_parts(16_307_000, 0)
+		// Minimum execution time: 33_117_000 picoseconds.
+		Weight::from_parts(33_913_000, 0)
 			.saturating_add(Weight::from_parts(0, 4405))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -74,11 +87,11 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `773 + i * (10 ±0)`
 		//  Estimated: `2257 + i * (10 ±0)`
-		// Minimum execution time: 11_050_000 picoseconds.
-		Weight::from_parts(12_621_290, 0)
+		// Minimum execution time: 19_710_000 picoseconds.
+		Weight::from_parts(23_931_566, 0)
 			.saturating_add(Weight::from_parts(0, 2257))
-			// Standard Error: 145
-			.saturating_add(Weight::from_parts(59_121, 0).saturating_mul(i.into()))
+			// Standard Error: 329
+			.saturating_add(Weight::from_parts(117_461, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 10).saturating_mul(i.into()))
@@ -92,11 +105,11 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `612 + i * (10 ±0)`
 		//  Estimated: `2096 + i * (10 ±0)`
-		// Minimum execution time: 5_197_000 picoseconds.
-		Weight::from_parts(6_485_670, 0)
+		// Minimum execution time: 12_468_000 picoseconds.
+		Weight::from_parts(14_558_200, 0)
 			.saturating_add(Weight::from_parts(0, 2096))
-			// Standard Error: 119
-			.saturating_add(Weight::from_parts(58_163, 0).saturating_mul(i.into()))
+			// Standard Error: 226
+			.saturating_add(Weight::from_parts(115_507, 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()))
@@ -111,8 +124,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `586`
 		//  Estimated: `4051`
-		// Minimum execution time: 4_930_000 picoseconds.
-		Weight::from_parts(5_069_000, 0)
+		// Minimum execution time: 12_950_000 picoseconds.
+		Weight::from_parts(13_434_000, 0)
 			.saturating_add(Weight::from_parts(0, 4051))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -123,8 +136,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `170`
 		//  Estimated: `1655`
-		// Minimum execution time: 3_156_000 picoseconds.
-		Weight::from_parts(3_382_000, 0)
+		// Minimum execution time: 3_781_000 picoseconds.
+		Weight::from_parts(4_122_000, 0)
 			.saturating_add(Weight::from_parts(0, 1655))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/common/src/weights/pallet_duniter_account.rs b/runtime/common/src/weights/pallet_duniter_account.rs
index 8d2f1803d371b8eb655273fcb729c2e4dde99b2f..e7e479adc14683b3ecc7775cedbedad329e04418 100644
--- a/runtime/common/src/weights/pallet_duniter_account.rs
+++ b/runtime/common/src/weights/pallet_duniter_account.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_duniter_account`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -41,8 +54,8 @@ impl<T: frame_system::Config> pallet_duniter_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `3591`
-		// Minimum execution time: 1_441_000 picoseconds.
-		Weight::from_parts(1_629_000, 0)
+		// Minimum execution time: 3_441_000 picoseconds.
+		Weight::from_parts(3_767_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -68,11 +81,11 @@ impl<T: frame_system::Config> pallet_duniter_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `42 + i * (309 ±0)`
 		//  Estimated: `3507 + i * (1908 ±0)`
-		// Minimum execution time: 1_728_000 picoseconds.
-		Weight::from_parts(1_954_869, 0)
+		// Minimum execution time: 2_567_000 picoseconds.
+		Weight::from_parts(2_883_846, 0)
 			.saturating_add(Weight::from_parts(0, 3507))
-			// Standard Error: 12_280
-			.saturating_add(Weight::from_parts(8_778_830, 0).saturating_mul(i.into()))
+			// Standard Error: 21_979
+			.saturating_add(Weight::from_parts(16_532_853, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().reads((6_u64).saturating_mul(i.into())))
 			.saturating_add(T::DbWeight::get().writes((6_u64).saturating_mul(i.into())))
@@ -99,11 +112,11 @@ impl<T: frame_system::Config> pallet_duniter_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `42 + i * (309 ±0)`
 		//  Estimated: `3507 + i * (1908 ±0)`
-		// Minimum execution time: 1_726_000 picoseconds.
-		Weight::from_parts(1_952_720, 0)
+		// Minimum execution time: 2_540_000 picoseconds.
+		Weight::from_parts(2_881_795, 0)
 			.saturating_add(Weight::from_parts(0, 3507))
-			// Standard Error: 21_870
-			.saturating_add(Weight::from_parts(17_297_679, 0).saturating_mul(i.into()))
+			// Standard Error: 23_750
+			.saturating_add(Weight::from_parts(39_865_404, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().reads((6_u64).saturating_mul(i.into())))
 			.saturating_add(T::DbWeight::get().writes((6_u64).saturating_mul(i.into())))
@@ -116,11 +129,11 @@ impl<T: frame_system::Config> pallet_duniter_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `42 + i * (74 ±0)`
 		//  Estimated: `3507 + i * (74 ±0)`
-		// Minimum execution time: 1_751_000 picoseconds.
-		Weight::from_parts(1_982_969, 0)
+		// Minimum execution time: 2_530_000 picoseconds.
+		Weight::from_parts(2_866_518, 0)
 			.saturating_add(Weight::from_parts(0, 3507))
-			// Standard Error: 13_323
-			.saturating_add(Weight::from_parts(3_059_030, 0).saturating_mul(i.into()))
+			// Standard Error: 16_435
+			.saturating_add(Weight::from_parts(8_908_081, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 			.saturating_add(Weight::from_parts(0, 74).saturating_mul(i.into()))
@@ -131,8 +144,8 @@ impl<T: frame_system::Config> pallet_duniter_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `116`
 		//  Estimated: `3581`
-		// Minimum execution time: 5_354_000 picoseconds.
-		Weight::from_parts(5_648_000, 0)
+		// Minimum execution time: 10_202_000 picoseconds.
+		Weight::from_parts(10_849_000, 0)
 			.saturating_add(Weight::from_parts(0, 3581))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -143,8 +156,8 @@ impl<T: frame_system::Config> pallet_duniter_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `42`
 		//  Estimated: `3507`
-		// Minimum execution time: 1_297_000 picoseconds.
-		Weight::from_parts(1_382_000, 0)
+		// Minimum execution time: 2_181_000 picoseconds.
+		Weight::from_parts(2_397_000, 0)
 			.saturating_add(Weight::from_parts(0, 3507))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
diff --git a/runtime/common/src/weights/pallet_identity.rs b/runtime/common/src/weights/pallet_identity.rs
index 5664f72ae7a09c34dba4bfa114cf90b6abf37fd1..2b883dcc704c5480426b5175430a1defa5885682 100644
--- a/runtime/common/src/weights/pallet_identity.rs
+++ b/runtime/common/src/weights/pallet_identity.rs
@@ -17,25 +17,25 @@
 //! Autogenerated weights for `pallet_identity`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-12-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `squirrel`, CPU: `Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/debug/duniter
+// target/release/duniter
 // benchmark
 // pallet
 // --chain=dev
 // --steps=50
 // --repeat=20
-// --pallet=pallet-identity
+// --pallet=*
 // --extrinsic=*
 // --execution=wasm
 // --wasm-execution=compiled
 // --heap-pages=4096
-// --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --header=file_header.txt
+// --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -76,8 +76,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1165`
 		//  Estimated: `7105`
-		// Minimum execution time: 1_643_969_000 picoseconds.
-		Weight::from_parts(1_781_521_000, 0)
+		// Minimum execution time: 80_562_000 picoseconds.
+		Weight::from_parts(93_717_000, 0)
 			.saturating_add(Weight::from_parts(0, 7105))
 			.saturating_add(T::DbWeight::get().reads(14))
 			.saturating_add(T::DbWeight::get().writes(12))
@@ -94,8 +94,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `661`
 		//  Estimated: `6601`
-		// Minimum execution time: 564_892_000 picoseconds.
-		Weight::from_parts(588_761_000, 0)
+		// Minimum execution time: 29_211_000 picoseconds.
+		Weight::from_parts(31_414_000, 0)
 			.saturating_add(Weight::from_parts(0, 6601))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -114,8 +114,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `837`
 		//  Estimated: `6777`
-		// Minimum execution time: 991_641_000 picoseconds.
-		Weight::from_parts(1_071_332_000, 0)
+		// Minimum execution time: 91_798_000 picoseconds.
+		Weight::from_parts(104_299_000, 0)
 			.saturating_add(Weight::from_parts(0, 6777))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(5))
@@ -136,8 +136,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `778`
 		//  Estimated: `6718`
-		// Minimum execution time: 829_174_000 picoseconds.
-		Weight::from_parts(869_308_000, 0)
+		// Minimum execution time: 77_566_000 picoseconds.
+		Weight::from_parts(80_738_000, 0)
 			.saturating_add(Weight::from_parts(0, 6718))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(6))
@@ -149,11 +149,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 51_362_000 picoseconds.
-		Weight::from_parts(80_389_000, 0)
+		// Minimum execution time: 2_022_000 picoseconds.
+		Weight::from_parts(2_149_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 75_232
-			.saturating_add(Weight::from_parts(30_016_649, 0).saturating_mul(i.into()))
+			// Standard Error: 972
+			.saturating_add(Weight::from_parts(1_331_794, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
 	/// Storage: System Account (r:1 w:1)
@@ -162,8 +162,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `67`
 		//  Estimated: `3591`
-		// Minimum execution time: 154_343_000 picoseconds.
-		Weight::from_parts(156_117_000, 0)
+		// Minimum execution time: 6_683_000 picoseconds.
+		Weight::from_parts(7_169_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -176,11 +176,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen)
 	fn link_account() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `307`
-		//  Estimated: `3772`
-		// Minimum execution time: 538_773_000 picoseconds.
-		Weight::from_parts(591_354_000, 0)
-			.saturating_add(Weight::from_parts(0, 3772))
+		//  Measured:  `371`
+		//  Estimated: `3836`
+		// Minimum execution time: 59_456_000 picoseconds.
+		Weight::from_parts(62_204_000, 0)
+			.saturating_add(Weight::from_parts(0, 3836))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -188,8 +188,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_529_000 picoseconds.
-		Weight::from_parts(7_360_000, 0)
+		// Minimum execution time: 131_000 picoseconds.
+		Weight::from_parts(152_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: Identity Identities (r:1 w:0)
@@ -198,8 +198,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `269`
 		//  Estimated: `3734`
-		// Minimum execution time: 103_668_000 picoseconds.
-		Weight::from_parts(107_679_000, 0)
+		// Minimum execution time: 4_237_000 picoseconds.
+		Weight::from_parts(4_452_000, 0)
 			.saturating_add(Weight::from_parts(0, 3734))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -243,8 +243,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// 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)
+		// Minimum execution time: 95_659_000 picoseconds.
+		Weight::from_parts(102_307_000, 0)
 			.saturating_add(Weight::from_parts(0, 7465))
 			.saturating_add(T::DbWeight::get().reads(17))
 			.saturating_add(T::DbWeight::get().writes(20))
@@ -255,8 +255,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `269`
 		//  Estimated: `3734`
-		// Minimum execution time: 104_296_000 picoseconds.
-		Weight::from_parts(115_316_000, 0)
+		// Minimum execution time: 4_394_000 picoseconds.
+		Weight::from_parts(4_642_000, 0)
 			.saturating_add(Weight::from_parts(0, 3734))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -300,8 +300,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1432`
 		//  Estimated: `6192`
-		// Minimum execution time: 2_870_497_000 picoseconds.
-		Weight::from_parts(4_159_994_000, 0)
+		// Minimum execution time: 99_220_000 picoseconds.
+		Weight::from_parts(103_629_000, 0)
 			.saturating_add(Weight::from_parts(0, 6192))
 			.saturating_add(T::DbWeight::get().reads(16))
 			.saturating_add(T::DbWeight::get().writes(22))
@@ -312,8 +312,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `108`
 		//  Estimated: `3573`
-		// Minimum execution time: 68_859_000 picoseconds.
-		Weight::from_parts(71_836_000, 0)
+		// Minimum execution time: 2_146_000 picoseconds.
+		Weight::from_parts(2_339_000, 0)
 			.saturating_add(Weight::from_parts(0, 3573))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -325,8 +325,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `292`
 		//  Estimated: `3757`
-		// Minimum execution time: 178_332_000 picoseconds.
-		Weight::from_parts(186_982_000, 0)
+		// Minimum execution time: 6_269_000 picoseconds.
+		Weight::from_parts(6_723_000, 0)
 			.saturating_add(Weight::from_parts(0, 3757))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -355,8 +355,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1177`
 		//  Estimated: `4642`
-		// Minimum execution time: 1_427_848_000 picoseconds.
-		Weight::from_parts(2_637_229_000, 0)
+		// Minimum execution time: 46_324_000 picoseconds.
+		Weight::from_parts(47_896_000, 0)
 			.saturating_add(Weight::from_parts(0, 4642))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(8))
diff --git a/runtime/common/src/weights/pallet_im_online.rs b/runtime/common/src/weights/pallet_im_online.rs
index 0f2507ce2d5e3eecf5167fea88407a1693f717cf..c5b89d2e87b34e547e34948d4ba8fcc1d4d86316 100644
--- a/runtime/common/src/weights/pallet_im_online.rs
+++ b/runtime/common/src/weights/pallet_im_online.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_im_online`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -53,13 +66,13 @@ impl<T: frame_system::Config> pallet_im_online::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `623 + k * (32 ±0)`
 		//  Estimated: `10024497 + e * (35 ±0) + k * (32 ±0)`
-		// Minimum execution time: 64_879_000 picoseconds.
-		Weight::from_parts(61_871_641, 0)
+		// Minimum execution time: 91_864_000 picoseconds.
+		Weight::from_parts(96_924_020, 0)
 			.saturating_add(Weight::from_parts(0, 10024497))
-			// Standard Error: 434
-			.saturating_add(Weight::from_parts(34_062, 0).saturating_mul(k.into()))
-			// Standard Error: 4_374
-			.saturating_add(Weight::from_parts(189_794, 0).saturating_mul(e.into()))
+			// Standard Error: 690
+			.saturating_add(Weight::from_parts(25_104, 0).saturating_mul(k.into()))
+			// Standard Error: 6_954
+			.saturating_add(Weight::from_parts(331_384, 0).saturating_mul(e.into()))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(1))
 			.saturating_add(Weight::from_parts(0, 35).saturating_mul(e.into()))
diff --git a/runtime/common/src/weights/pallet_membership_membership.rs b/runtime/common/src/weights/pallet_membership_membership.rs
index 127922e2fb21601acff507954905318d1f900530..eb38bcfabf31c8725511b8de7e180c7fe1e935bc 100644
--- a/runtime/common/src/weights/pallet_membership_membership.rs
+++ b/runtime/common/src/weights/pallet_membership_membership.rs
@@ -17,25 +17,25 @@
 //! Autogenerated weights for `pallet_membership`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-12-14, STEPS: `8`, REPEAT: `4`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `squirrel`, CPU: `Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/debug/duniter
+// target/release/duniter
 // benchmark
 // pallet
 // --chain=dev
-// --steps=8
-// --repeat=4
-// --pallet=pallet-membership
+// --steps=50
+// --repeat=20
+// --pallet=*
 // --extrinsic=*
 // --execution=wasm
 // --wasm-execution=compiled
 // --heap-pages=4096
-// --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --header=file_header.txt
+// --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -72,8 +72,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1272`
 		//  Estimated: `4737`
-		// Minimum execution time: 1_213_348_000 picoseconds.
-		Weight::from_parts(1_439_442_000, 0)
+		// Minimum execution time: 54_796_000 picoseconds.
+		Weight::from_parts(56_965_000, 0)
 			.saturating_add(Weight::from_parts(0, 4737))
 			.saturating_add(T::DbWeight::get().reads(10))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -94,8 +94,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `988`
 		//  Estimated: `6928`
-		// Minimum execution time: 714_537_000 picoseconds.
-		Weight::from_parts(862_085_000, 0)
+		// Minimum execution time: 32_656_000 picoseconds.
+		Weight::from_parts(34_374_000, 0)
 			.saturating_add(Weight::from_parts(0, 6928))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -118,8 +118,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `703`
 		//  Estimated: `6643`
-		// Minimum execution time: 847_926_000 picoseconds.
-		Weight::from_parts(1_282_028_000, 0)
+		// Minimum execution time: 33_591_000 picoseconds.
+		Weight::from_parts(34_941_000, 0)
 			.saturating_add(Weight::from_parts(0, 6643))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(5))
@@ -128,37 +128,37 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_012_000 picoseconds.
-		Weight::from_parts(4_629_000, 0)
+		// Minimum execution time: 132_000 picoseconds.
+		Weight::from_parts(163_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
-	/// Storage: Membership MembershipsExpireOn (r:1 w:1)
+	/// Storage: Membership MembershipsExpireOn (r:2 w:2)
 	/// Proof Skipped: Membership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Membership Membership (r:1024 w:1024)
+	/// Storage: Membership Membership (r:3 w:3)
 	/// Proof Skipped: Membership Membership (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Membership CounterForMembership (r:1 w:1)
 	/// Proof: Membership CounterForMembership (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
-	/// Storage: Identity Identities (r:1024 w:4)
+	/// Storage: Identity Identities (r:3 w:3)
 	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
 	/// Storage: UniversalDividend CurrentUdIndex (r:1 w:0)
 	/// Proof: UniversalDividend CurrentUdIndex (max_values: Some(1), max_size: Some(2), added: 497, mode: MaxEncodedLen)
 	/// Storage: Identity IdentityChangeSchedule (r:2 w:1)
 	/// Proof Skipped: Identity IdentityChangeSchedule (max_values: None, max_size: None, mode: Measured)
-	/// The range of component `i` is `[0, 1024]`.
-	/// The range of component `i` is `[0, 1024]`.
+	/// The range of component `i` is `[0, 3]`.
+	/// The range of component `i` is `[0, 3]`.
 	fn expire_memberships(i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `567 + i * (23 ±0)`
-		//  Estimated: `6583 + i * (2499 ±0)`
-		// Minimum execution time: 86_925_000 picoseconds.
-		Weight::from_parts(89_056_000, 0)
-			.saturating_add(Weight::from_parts(0, 6583))
-			// Standard Error: 2_429_589
-			.saturating_add(Weight::from_parts(295_368_241, 0).saturating_mul(i.into()))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(i.into())))
-			.saturating_add(T::DbWeight::get().writes(5))
-			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
-			.saturating_add(Weight::from_parts(0, 2499).saturating_mul(i.into()))
+		//  Measured:  `138 + i * (239 ±0)`
+		//  Estimated: `6490 + i * (2508 ±0)`
+		// Minimum execution time: 4_673_000 picoseconds.
+		Weight::from_parts(7_205_864, 0)
+			.saturating_add(Weight::from_parts(0, 6490))
+			// Standard Error: 93_140
+			.saturating_add(Weight::from_parts(21_822_424, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().writes(2))
+			.saturating_add(T::DbWeight::get().writes((3_u64).saturating_mul(i.into())))
+			.saturating_add(Weight::from_parts(0, 2508).saturating_mul(i.into()))
 	}
 }
diff --git a/runtime/common/src/weights/pallet_membership_smith_membership.rs b/runtime/common/src/weights/pallet_membership_smith_membership.rs
index d7008fec48c84920bacb37236a257c56fb851ef8..d0bd9f66811ae0a58d7d101a6250d6cf0e86eea9 100644
--- a/runtime/common/src/weights/pallet_membership_smith_membership.rs
+++ b/runtime/common/src/weights/pallet_membership_smith_membership.rs
@@ -17,25 +17,25 @@
 //! Autogenerated weights for `pallet_membership`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-12-14, STEPS: `8`, REPEAT: `4`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `squirrel`, CPU: `Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz`
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/debug/duniter
+// target/release/duniter
 // benchmark
 // pallet
 // --chain=dev
-// --steps=8
-// --repeat=4
-// --pallet=pallet-membership
+// --steps=50
+// --repeat=20
+// --pallet=*
 // --extrinsic=*
 // --execution=wasm
 // --wasm-execution=compiled
 // --heap-pages=4096
-// --header=./file_header.txt
-// --output=./runtime/common/src/weights/
+// --header=file_header.txt
+// --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -64,8 +64,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `704`
 		//  Estimated: `4169`
-		// Minimum execution time: 667_020_000 picoseconds.
-		Weight::from_parts(729_140_000, 0)
+		// Minimum execution time: 27_429_000 picoseconds.
+		Weight::from_parts(28_797_000, 0)
 			.saturating_add(Weight::from_parts(0, 4169))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -84,8 +84,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `717`
 		//  Estimated: `6657`
-		// Minimum execution time: 794_915_000 picoseconds.
-		Weight::from_parts(930_094_000, 0)
+		// Minimum execution time: 28_139_000 picoseconds.
+		Weight::from_parts(28_982_000, 0)
 			.saturating_add(Weight::from_parts(0, 6657))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -116,8 +116,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1183`
 		//  Estimated: `4648`
-		// Minimum execution time: 1_199_726_000 picoseconds.
-		Weight::from_parts(1_499_376_000, 0)
+		// Minimum execution time: 60_153_000 picoseconds.
+		Weight::from_parts(62_834_000, 0)
 			.saturating_add(Weight::from_parts(0, 4648))
 			.saturating_add(T::DbWeight::get().reads(10))
 			.saturating_add(T::DbWeight::get().writes(13))
@@ -126,17 +126,17 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_972_000 picoseconds.
-		Weight::from_parts(4_845_000, 0)
+		// Minimum execution time: 133_000 picoseconds.
+		Weight::from_parts(157_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
-	/// Storage: SmithMembership MembershipsExpireOn (r:1 w:1)
+	/// Storage: SmithMembership MembershipsExpireOn (r:2 w:2)
 	/// Proof Skipped: SmithMembership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
-	/// Storage: SmithMembership Membership (r:1024 w:1024)
+	/// Storage: SmithMembership Membership (r:3 w:3)
 	/// Proof Skipped: SmithMembership Membership (max_values: None, max_size: None, mode: Measured)
 	/// Storage: SmithMembership CounterForMembership (r:1 w:1)
 	/// Proof: SmithMembership CounterForMembership (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
-	/// Storage: AuthorityMembers Members (r:1024 w:3)
+	/// Storage: AuthorityMembers Members (r:3 w:3)
 	/// Proof Skipped: AuthorityMembers Members (max_values: None, max_size: None, mode: Measured)
 	/// Storage: AuthorityMembers OnlineAuthorities (r:1 w:1)
 	/// Proof Skipped: AuthorityMembers OnlineAuthorities (max_values: Some(1), max_size: None, mode: Measured)
@@ -152,21 +152,21 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 	/// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen)
 	/// Storage: Session KeyOwner (r:0 w:12)
 	/// Proof Skipped: Session KeyOwner (max_values: None, max_size: None, mode: Measured)
-	/// The range of component `i` is `[0, 1024]`.
-	/// The range of component `i` is `[0, 1024]`.
+	/// The range of component `i` is `[0, 3]`.
+	/// The range of component `i` is `[0, 3]`.
 	fn expire_memberships(i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1339 + i * (23 ±0)`
-		//  Estimated: `9830 + i * (2499 ±0)`
-		// Minimum execution time: 81_859_000 picoseconds.
-		Weight::from_parts(90_890_000, 0)
-			.saturating_add(Weight::from_parts(0, 9830))
-			// Standard Error: 1_930_380
-			.saturating_add(Weight::from_parts(304_822_479, 0).saturating_mul(i.into()))
-			.saturating_add(T::DbWeight::get().reads(7))
-			.saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(i.into())))
-			.saturating_add(T::DbWeight::get().writes(16))
-			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
-			.saturating_add(Weight::from_parts(0, 2499).saturating_mul(i.into()))
+		//  Measured:  `133 + i * (515 ±0)`
+		//  Estimated: `4157 + i * (2692 ±0)`
+		// Minimum execution time: 4_794_000 picoseconds.
+		Weight::from_parts(9_091_363, 0)
+			.saturating_add(Weight::from_parts(0, 4157))
+			// Standard Error: 191_583
+			.saturating_add(Weight::from_parts(46_909_320, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(2))
+			.saturating_add(T::DbWeight::get().reads((7_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().writes(2))
+			.saturating_add(T::DbWeight::get().writes((11_u64).saturating_mul(i.into())))
+			.saturating_add(Weight::from_parts(0, 2692).saturating_mul(i.into()))
 	}
 }
diff --git a/runtime/common/src/weights/pallet_multisig.rs b/runtime/common/src/weights/pallet_multisig.rs
index 7382d0cb32539682f01f837731a0640647bd7082..e7310b7e9507a453bec39c6a0a184025120c0f3a 100644
--- a/runtime/common/src/weights/pallet_multisig.rs
+++ b/runtime/common/src/weights/pallet_multisig.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_multisig`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -40,11 +53,11 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_042_000 picoseconds.
-		Weight::from_parts(2_440_917, 0)
+		// Minimum execution time: 5_177_000 picoseconds.
+		Weight::from_parts(5_834_786, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1
-			.saturating_add(Weight::from_parts(44, 0).saturating_mul(z.into()))
+			// Standard Error: 3
+			.saturating_add(Weight::from_parts(356, 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)
@@ -54,13 +67,13 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `126 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 12_494_000 picoseconds.
-		Weight::from_parts(11_613_522, 0)
+		// Minimum execution time: 27_158_000 picoseconds.
+		Weight::from_parts(27_891_561, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 4_196
-			.saturating_add(Weight::from_parts(171_858, 0).saturating_mul(s.into()))
-			// Standard Error: 3
-			.saturating_add(Weight::from_parts(759, 0).saturating_mul(z.into()))
+			// Standard Error: 19_335
+			.saturating_add(Weight::from_parts(174_782, 0).saturating_mul(s.into()))
+			// Standard Error: 16
+			.saturating_add(Weight::from_parts(1_071, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -72,13 +85,13 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `240`
 		//  Estimated: `3922`
-		// Minimum execution time: 8_831_000 picoseconds.
-		Weight::from_parts(8_494_049, 0)
+		// Minimum execution time: 17_025_000 picoseconds.
+		Weight::from_parts(15_892_153, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 3_328
-			.saturating_add(Weight::from_parts(98_532, 0).saturating_mul(s.into()))
-			// Standard Error: 2
-			.saturating_add(Weight::from_parts(735, 0).saturating_mul(z.into()))
+			// Standard Error: 7_878
+			.saturating_add(Weight::from_parts(190_064, 0).saturating_mul(s.into()))
+			// Standard Error: 5
+			.saturating_add(Weight::from_parts(1_130, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -92,13 +105,13 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `260 + s * (37 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 14_909_000 picoseconds.
-		Weight::from_parts(13_975_505, 0)
+		// Minimum execution time: 30_436_000 picoseconds.
+		Weight::from_parts(30_300_694, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_589
-			.saturating_add(Weight::from_parts(183_606, 0).saturating_mul(s.into()))
-			// Standard Error: 4
-			.saturating_add(Weight::from_parts(770, 0).saturating_mul(z.into()))
+			// Standard Error: 15_240
+			.saturating_add(Weight::from_parts(289_776, 0).saturating_mul(s.into()))
+			// Standard Error: 13
+			.saturating_add(Weight::from_parts(1_088, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -109,11 +122,11 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `131 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 11_033_000 picoseconds.
-		Weight::from_parts(11_970_161, 0)
+		// Minimum execution time: 24_652_000 picoseconds.
+		Weight::from_parts(26_397_911, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 4_841
-			.saturating_add(Weight::from_parts(102_165, 0).saturating_mul(s.into()))
+			// Standard Error: 6_558
+			.saturating_add(Weight::from_parts(180_768, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -124,11 +137,11 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `240`
 		//  Estimated: `3922`
-		// Minimum execution time: 7_428_000 picoseconds.
-		Weight::from_parts(7_946_425, 0)
+		// Minimum execution time: 14_288_000 picoseconds.
+		Weight::from_parts(15_032_294, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 2_616
-			.saturating_add(Weight::from_parts(127_413, 0).saturating_mul(s.into()))
+			// Standard Error: 4_354
+			.saturating_add(Weight::from_parts(195_730, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -139,11 +152,11 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `329 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 12_601_000 picoseconds.
-		Weight::from_parts(13_390_599, 0)
+		// Minimum execution time: 26_020_000 picoseconds.
+		Weight::from_parts(27_293_716, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 3_815
-			.saturating_add(Weight::from_parts(106_076, 0).saturating_mul(s.into()))
+			// Standard Error: 8_931
+			.saturating_add(Weight::from_parts(197_242, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/common/src/weights/pallet_oneshot_account.rs b/runtime/common/src/weights/pallet_oneshot_account.rs
index ca4afd403b0ed7b6be0812b664612fe718bd3382..277397d8b74b0e4dca8411ddb08ae50a89f11d3f 100644
--- a/runtime/common/src/weights/pallet_oneshot_account.rs
+++ b/runtime/common/src/weights/pallet_oneshot_account.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_oneshot_account`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -41,8 +54,8 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `42`
 		//  Estimated: `3507`
-		// Minimum execution time: 8_463_000 picoseconds.
-		Weight::from_parts(8_912_000, 0)
+		// Minimum execution time: 20_365_000 picoseconds.
+		Weight::from_parts(22_411_000, 0)
 			.saturating_add(Weight::from_parts(0, 3507))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -57,8 +70,8 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `242`
 		//  Estimated: `3707`
-		// Minimum execution time: 12_830_000 picoseconds.
-		Weight::from_parts(13_808_000, 0)
+		// Minimum execution time: 25_687_000 picoseconds.
+		Weight::from_parts(27_029_000, 0)
 			.saturating_add(Weight::from_parts(0, 3707))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -73,8 +86,8 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `306`
 		//  Estimated: `6192`
-		// Minimum execution time: 17_370_000 picoseconds.
-		Weight::from_parts(18_278_000, 0)
+		// Minimum execution time: 36_894_000 picoseconds.
+		Weight::from_parts(37_625_000, 0)
 			.saturating_add(Weight::from_parts(0, 6192))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/common/src/weights/pallet_preimage.rs b/runtime/common/src/weights/pallet_preimage.rs
index 587c676bc7b77ad736628c5ef5d23d72d7ef4e6d..eaf51a34126b325e9449402148a32aa6329fccd8 100644
--- a/runtime/common/src/weights/pallet_preimage.rs
+++ b/runtime/common/src/weights/pallet_preimage.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_preimage`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -44,11 +57,11 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `104`
 		//  Estimated: `3548`
-		// Minimum execution time: 9_936_000 picoseconds.
-		Weight::from_parts(10_522_000, 0)
+		// Minimum execution time: 23_110_000 picoseconds.
+		Weight::from_parts(23_764_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
-			// Standard Error: 1
-			.saturating_add(Weight::from_parts(868, 0).saturating_mul(s.into()))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(1_381, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -61,11 +74,11 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 6_893_000 picoseconds.
-		Weight::from_parts(7_155_000, 0)
+		// Minimum execution time: 13_780_000 picoseconds.
+		Weight::from_parts(14_266_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
-			// Standard Error: 1
-			.saturating_add(Weight::from_parts(869, 0).saturating_mul(s.into()))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(1_376, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -78,11 +91,11 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 6_697_000 picoseconds.
-		Weight::from_parts(6_954_000, 0)
+		// Minimum execution time: 12_881_000 picoseconds.
+		Weight::from_parts(13_026_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
-			// Standard Error: 4
-			.saturating_add(Weight::from_parts(888, 0).saturating_mul(s.into()))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(1_384, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -94,8 +107,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `242`
 		//  Estimated: `3548`
-		// Minimum execution time: 20_426_000 picoseconds.
-		Weight::from_parts(22_998_000, 0)
+		// Minimum execution time: 47_666_000 picoseconds.
+		Weight::from_parts(52_266_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -108,8 +121,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `144`
 		//  Estimated: `3548`
-		// Minimum execution time: 13_389_000 picoseconds.
-		Weight::from_parts(15_526_000, 0)
+		// Minimum execution time: 34_525_000 picoseconds.
+		Weight::from_parts(36_984_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -120,8 +133,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `180`
 		//  Estimated: `3548`
-		// Minimum execution time: 11_655_000 picoseconds.
-		Weight::from_parts(13_922_000, 0)
+		// Minimum execution time: 26_451_000 picoseconds.
+		Weight::from_parts(30_958_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -132,8 +145,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `144`
 		//  Estimated: `3548`
-		// Minimum execution time: 7_827_000 picoseconds.
-		Weight::from_parts(8_713_000, 0)
+		// Minimum execution time: 16_274_000 picoseconds.
+		Weight::from_parts(19_720_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -144,8 +157,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `42`
 		//  Estimated: `3548`
-		// Minimum execution time: 4_167_000 picoseconds.
-		Weight::from_parts(4_469_000, 0)
+		// Minimum execution time: 10_493_000 picoseconds.
+		Weight::from_parts(13_230_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -156,8 +169,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 4_151_000 picoseconds.
-		Weight::from_parts(4_263_000, 0)
+		// Minimum execution time: 6_882_000 picoseconds.
+		Weight::from_parts(8_643_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -170,8 +183,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `144`
 		//  Estimated: `3548`
-		// Minimum execution time: 13_111_000 picoseconds.
-		Weight::from_parts(14_680_000, 0)
+		// Minimum execution time: 28_586_000 picoseconds.
+		Weight::from_parts(31_062_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -182,8 +195,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 4_031_000 picoseconds.
-		Weight::from_parts(4_411_000, 0)
+		// Minimum execution time: 6_596_000 picoseconds.
+		Weight::from_parts(8_069_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -194,8 +207,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 4_162_000 picoseconds.
-		Weight::from_parts(4_272_000, 0)
+		// Minimum execution time: 6_989_000 picoseconds.
+		Weight::from_parts(8_342_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/common/src/weights/pallet_provide_randomness.rs b/runtime/common/src/weights/pallet_provide_randomness.rs
index ca7afe458f2d7d5c8e788d18bdc3969c222fec9a..5294f58b2c94a57d89c52e4e552a46ec0788ddc0 100644
--- a/runtime/common/src/weights/pallet_provide_randomness.rs
+++ b/runtime/common/src/weights/pallet_provide_randomness.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_provide_randomness`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -51,8 +64,8 @@ impl<T: frame_system::Config> pallet_provide_randomness::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `235`
 		//  Estimated: `3700`
-		// Minimum execution time: 18_704_000 picoseconds.
-		Weight::from_parts(19_384_000, 0)
+		// Minimum execution time: 39_666_000 picoseconds.
+		Weight::from_parts(41_056_000, 0)
 			.saturating_add(Weight::from_parts(0, 3700))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -74,11 +87,11 @@ impl<T: frame_system::Config> pallet_provide_randomness::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `383 + i * (59 ±0)`
 		//  Estimated: `1869 + i * (2535 ±0)`
-		// Minimum execution time: 12_665_000 picoseconds.
-		Weight::from_parts(11_155_211, 0)
+		// Minimum execution time: 21_528_000 picoseconds.
+		Weight::from_parts(16_137_220, 0)
 			.saturating_add(Weight::from_parts(0, 1869))
-			// Standard Error: 4_771
-			.saturating_add(Weight::from_parts(3_623_450, 0).saturating_mul(i.into()))
+			// Standard Error: 10_917
+			.saturating_add(Weight::from_parts(9_007_362, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(i.into())))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -108,11 +121,11 @@ impl<T: frame_system::Config> pallet_provide_randomness::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `393 + i * (59 ±0)`
 		//  Estimated: `3859 + i * (2535 ±0)`
-		// Minimum execution time: 13_211_000 picoseconds.
-		Weight::from_parts(12_024_374, 0)
+		// Minimum execution time: 23_210_000 picoseconds.
+		Weight::from_parts(19_962_422, 0)
 			.saturating_add(Weight::from_parts(0, 3859))
-			// Standard Error: 5_972
-			.saturating_add(Weight::from_parts(3_724_254, 0).saturating_mul(i.into()))
+			// Standard Error: 10_432
+			.saturating_add(Weight::from_parts(9_390_408, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(i.into())))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/common/src/weights/pallet_proxy.rs b/runtime/common/src/weights/pallet_proxy.rs
index 0140268eb30bd5373ec51578fda8953fdf4046c2..31c8b81431d0e95150d8eba07246c12ed2c4601e 100644
--- a/runtime/common/src/weights/pallet_proxy.rs
+++ b/runtime/common/src/weights/pallet_proxy.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -42,11 +55,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: 7_203_000 picoseconds.
-		Weight::from_parts(7_690_167, 0)
+		// Minimum execution time: 12_847_000 picoseconds.
+		Weight::from_parts(14_212_452, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_004
-			.saturating_add(Weight::from_parts(21_815, 0).saturating_mul(p.into()))
+			// Standard Error: 1_812
+			.saturating_add(Weight::from_parts(31_549, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: Proxy Proxies (r:1 w:0)
@@ -61,13 +74,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `400 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 16_094_000 picoseconds.
-		Weight::from_parts(15_734_883, 0)
+		// Minimum execution time: 30_630_000 picoseconds.
+		Weight::from_parts(31_345_803, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_567
-			.saturating_add(Weight::from_parts(66_691, 0).saturating_mul(a.into()))
-			// Standard Error: 1_619
-			.saturating_add(Weight::from_parts(43_319, 0).saturating_mul(p.into()))
+			// Standard Error: 3_186
+			.saturating_add(Weight::from_parts(158_282, 0).saturating_mul(a.into()))
+			// Standard Error: 3_292
+			.saturating_add(Weight::from_parts(57_241, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -81,13 +94,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `323 + a * (68 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 10_617_000 picoseconds.
-		Weight::from_parts(10_729_133, 0)
+		// Minimum execution time: 19_807_000 picoseconds.
+		Weight::from_parts(20_303_455, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_294
-			.saturating_add(Weight::from_parts(64_383, 0).saturating_mul(a.into()))
-			// Standard Error: 1_337
-			.saturating_add(Weight::from_parts(14_055, 0).saturating_mul(p.into()))
+			// Standard Error: 2_259
+			.saturating_add(Weight::from_parts(161_690, 0).saturating_mul(a.into()))
+			// Standard Error: 2_334
+			.saturating_add(Weight::from_parts(21_504, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -97,17 +110,15 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 	/// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, 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:  `323 + a * (68 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 10_622_000 picoseconds.
-		Weight::from_parts(11_079_860, 0)
+		// Minimum execution time: 19_289_000 picoseconds.
+		Weight::from_parts(21_881_983, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_116
-			.saturating_add(Weight::from_parts(57_678, 0).saturating_mul(a.into()))
-			// Standard Error: 1_153
-			.saturating_add(Weight::from_parts(4_468, 0).saturating_mul(p.into()))
+			// Standard Error: 3_419
+			.saturating_add(Weight::from_parts(139_118, 0).saturating_mul(a.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -123,13 +134,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `332 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 14_470_000 picoseconds.
-		Weight::from_parts(14_941_845, 0)
+		// Minimum execution time: 28_231_000 picoseconds.
+		Weight::from_parts(28_706_415, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_452
-			.saturating_add(Weight::from_parts(58_394, 0).saturating_mul(a.into()))
-			// Standard Error: 1_500
-			.saturating_add(Weight::from_parts(37_057, 0).saturating_mul(p.into()))
+			// Standard Error: 2_341
+			.saturating_add(Weight::from_parts(141_659, 0).saturating_mul(a.into()))
+			// Standard Error: 2_418
+			.saturating_add(Weight::from_parts(44_970, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -140,11 +151,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: 9_865_000 picoseconds.
-		Weight::from_parts(10_439_466, 0)
+		// Minimum execution time: 19_649_000 picoseconds.
+		Weight::from_parts(21_560_051, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_211
-			.saturating_add(Weight::from_parts(36_145, 0).saturating_mul(p.into()))
+			// Standard Error: 2_464
+			.saturating_add(Weight::from_parts(37_298, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -155,11 +166,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: 9_880_000 picoseconds.
-		Weight::from_parts(10_603_276, 0)
+		// Minimum execution time: 20_131_000 picoseconds.
+		Weight::from_parts(21_765_292, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_625
-			.saturating_add(Weight::from_parts(26_584, 0).saturating_mul(p.into()))
+			// Standard Error: 2_178
+			.saturating_add(Weight::from_parts(34_933, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -170,24 +181,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: 9_151_000 picoseconds.
-		Weight::from_parts(9_772_352, 0)
+		// Minimum execution time: 17_658_000 picoseconds.
+		Weight::from_parts(19_535_909, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_077
-			.saturating_add(Weight::from_parts(17_610, 0).saturating_mul(p.into()))
+			// Standard Error: 2_250
+			.saturating_add(Weight::from_parts(37_548, 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: 9_936_000 picoseconds.
-		Weight::from_parts(10_919_619, 0)
+		// Minimum execution time: 21_267_000 picoseconds.
+		Weight::from_parts(23_111_116, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
+			// Standard Error: 2_578
+			.saturating_add(Weight::from_parts(23_638, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -198,11 +211,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: 9_348_000 picoseconds.
-		Weight::from_parts(10_005_982, 0)
+		// Minimum execution time: 19_035_000 picoseconds.
+		Weight::from_parts(20_679_433, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 924
-			.saturating_add(Weight::from_parts(27_508, 0).saturating_mul(p.into()))
+			// Standard Error: 2_412
+			.saturating_add(Weight::from_parts(35_529, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/common/src/weights/pallet_quota.rs b/runtime/common/src/weights/pallet_quota.rs
index f71b0ecc3aa6287afd9edeb719e419bc61b776f3..a59ab77c33f722dea6d87f5781e6a7c50059de6d 100644
--- a/runtime/common/src/weights/pallet_quota.rs
+++ b/runtime/common/src/weights/pallet_quota.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_quota`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-27, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// pallet-quota
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -41,8 +54,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `11288`
 		//  Estimated: `12751`
-		// Minimum execution time: 7_606_000 picoseconds.
-		Weight::from_parts(7_918_000, 0)
+		// Minimum execution time: 9_238_000 picoseconds.
+		Weight::from_parts(9_867_000, 0)
 			.saturating_add(Weight::from_parts(0, 12751))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -53,8 +66,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `139`
 		//  Estimated: `3489`
-		// Minimum execution time: 3_580_000 picoseconds.
-		Weight::from_parts(3_726_000, 0)
+		// Minimum execution time: 5_121_000 picoseconds.
+		Weight::from_parts(5_325_000, 0)
 			.saturating_add(Weight::from_parts(0, 3489))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -67,8 +80,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `139`
 		//  Estimated: `3591`
-		// Minimum execution time: 11_309_000 picoseconds.
-		Weight::from_parts(11_843_000, 0)
+		// Minimum execution time: 26_770_000 picoseconds.
+		Weight::from_parts(28_114_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -81,8 +94,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `139`
 		//  Estimated: `3591`
-		// Minimum execution time: 11_283_000 picoseconds.
-		Weight::from_parts(11_694_000, 0)
+		// Minimum execution time: 26_856_000 picoseconds.
+		Weight::from_parts(27_775_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -93,8 +106,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `43`
 		//  Estimated: `12751`
-		// Minimum execution time: 1_456_000 picoseconds.
-		Weight::from_parts(1_569_000, 0)
+		// Minimum execution time: 2_460_000 picoseconds.
+		Weight::from_parts(2_582_000, 0)
 			.saturating_add(Weight::from_parts(0, 12751))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -110,11 +123,11 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `164 + i * (44 ±0)`
 		//  Estimated: `3628 + i * (44 ±0)`
-		// Minimum execution time: 13_671_000 picoseconds.
-		Weight::from_parts(19_531_750, 0)
+		// Minimum execution time: 30_304_000 picoseconds.
+		Weight::from_parts(45_851_316, 0)
 			.saturating_add(Weight::from_parts(0, 3628))
-			// Standard Error: 1_057
-			.saturating_add(Weight::from_parts(476_555, 0).saturating_mul(i.into()))
+			// Standard Error: 5_978
+			.saturating_add(Weight::from_parts(1_679_537, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 			.saturating_add(Weight::from_parts(0, 44).saturating_mul(i.into()))
diff --git a/runtime/common/src/weights/pallet_scheduler.rs b/runtime/common/src/weights/pallet_scheduler.rs
index 31df1a37f4dc82f1b92dd42a86778b8d7d54b74a..4962e614716ded196d3bae83e6f24cac3965870d 100644
--- a/runtime/common/src/weights/pallet_scheduler.rs
+++ b/runtime/common/src/weights/pallet_scheduler.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_scheduler`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -41,8 +54,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `30`
 		//  Estimated: `1489`
-		// Minimum execution time: 1_875_000 picoseconds.
-		Weight::from_parts(1_939_000, 0)
+		// Minimum execution time: 2_836_000 picoseconds.
+		Weight::from_parts(3_163_000, 0)
 			.saturating_add(Weight::from_parts(0, 1489))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -54,11 +67,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 1_188_000 picoseconds.
-		Weight::from_parts(3_620_013, 0)
+		// Minimum execution time: 2_755_000 picoseconds.
+		Weight::from_parts(5_927_820, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_440
-			.saturating_add(Weight::from_parts(177_013, 0).saturating_mul(s.into()))
+			// Standard Error: 1_874
+			.saturating_add(Weight::from_parts(345_401, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -66,8 +79,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_418_000 picoseconds.
-		Weight::from_parts(1_573_000, 0)
+		// Minimum execution time: 3_831_000 picoseconds.
+		Weight::from_parts(4_021_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: Preimage PreimageFor (r:1 w:1)
@@ -79,11 +92,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `179 + s * (1 ±0)`
 		//  Estimated: `3644 + s * (1 ±0)`
-		// Minimum execution time: 7_884_000 picoseconds.
-		Weight::from_parts(8_273_000, 0)
+		// Minimum execution time: 16_503_000 picoseconds.
+		Weight::from_parts(16_846_000, 0)
 			.saturating_add(Weight::from_parts(0, 3644))
-			// Standard Error: 6
-			.saturating_add(Weight::from_parts(400, 0).saturating_mul(s.into()))
+			// Standard Error: 4
+			.saturating_add(Weight::from_parts(996, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(s.into()))
@@ -94,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: 1_757_000 picoseconds.
-		Weight::from_parts(1_861_000, 0)
+		// Minimum execution time: 4_960_000 picoseconds.
+		Weight::from_parts(5_387_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -103,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: 1_502_000 picoseconds.
-		Weight::from_parts(1_617_000, 0)
+		// Minimum execution time: 3_877_000 picoseconds.
+		Weight::from_parts(4_196_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: 676_000 picoseconds.
-		Weight::from_parts(753_000, 0)
+		// Minimum execution time: 1_744_000 picoseconds.
+		Weight::from_parts(1_836_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: 655_000 picoseconds.
-		Weight::from_parts(763_000, 0)
+		// Minimum execution time: 1_632_000 picoseconds.
+		Weight::from_parts(1_897_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: Scheduler Agenda (r:1 w:1)
@@ -130,11 +143,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 3_915_000 picoseconds.
-		Weight::from_parts(6_771_742, 0)
+		// Minimum execution time: 9_657_000 picoseconds.
+		Weight::from_parts(13_184_848, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_484
-			.saturating_add(Weight::from_parts(182_177, 0).saturating_mul(s.into()))
+			// Standard Error: 2_282
+			.saturating_add(Weight::from_parts(366_192, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -147,11 +160,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 6_491_000 picoseconds.
-		Weight::from_parts(7_426_056, 0)
+		// Minimum execution time: 13_637_000 picoseconds.
+		Weight::from_parts(13_768_609, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_382
-			.saturating_add(Weight::from_parts(292_812, 0).saturating_mul(s.into()))
+			// Standard Error: 4_600
+			.saturating_add(Weight::from_parts(593_607, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -164,11 +177,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `254 + s * (185 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 4_886_000 picoseconds.
-		Weight::from_parts(8_785_200, 0)
+		// Minimum execution time: 12_380_000 picoseconds.
+		Weight::from_parts(16_574_709, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 2_388
-			.saturating_add(Weight::from_parts(201_375, 0).saturating_mul(s.into()))
+			// Standard Error: 2_769
+			.saturating_add(Weight::from_parts(416_438, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -181,11 +194,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `280 + s * (185 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 7_827_000 picoseconds.
-		Weight::from_parts(9_285_600, 0)
+		// Minimum execution time: 16_128_000 picoseconds.
+		Weight::from_parts(16_507_740, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_917
-			.saturating_add(Weight::from_parts(314_114, 0).saturating_mul(s.into()))
+			// Standard Error: 5_685
+			.saturating_add(Weight::from_parts(591_564, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
diff --git a/runtime/common/src/weights/pallet_session.rs b/runtime/common/src/weights/pallet_session.rs
index beeb7eabcf61879b2311d88179d7df1ca1dafd49..603c39dc41a62d446007636c0ab65e312d4e70ca 100644
--- a/runtime/common/src/weights/pallet_session.rs
+++ b/runtime/common/src/weights/pallet_session.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_session`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -43,8 +56,8 @@ impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `723`
 		//  Estimated: `11613`
-		// Minimum execution time: 11_479_000 picoseconds.
-		Weight::from_parts(12_383_000, 0)
+		// Minimum execution time: 23_413_000 picoseconds.
+		Weight::from_parts(24_527_000, 0)
 			.saturating_add(Weight::from_parts(0, 11613))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(5))
@@ -57,8 +70,8 @@ impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `412`
 		//  Estimated: `3877`
-		// Minimum execution time: 7_705_000 picoseconds.
-		Weight::from_parts(8_194_000, 0)
+		// Minimum execution time: 14_513_000 picoseconds.
+		Weight::from_parts(15_443_000, 0)
 			.saturating_add(Weight::from_parts(0, 3877))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(5))
diff --git a/runtime/common/src/weights/pallet_timestamp.rs b/runtime/common/src/weights/pallet_timestamp.rs
index 0babb0ffcf1a02c85697675fddb207cf7525f3d2..64c288e0314df4a9c599fdf2063bfd3a4d909391 100644
--- a/runtime/common/src/weights/pallet_timestamp.rs
+++ b/runtime/common/src/weights/pallet_timestamp.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_timestamp`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -47,8 +60,8 @@ impl<T: frame_system::Config> pallet_timestamp::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `435`
 		//  Estimated: `1920`
-		// Minimum execution time: 9_685_000 picoseconds.
-		Weight::from_parts(10_203_000, 0)
+		// Minimum execution time: 14_041_000 picoseconds.
+		Weight::from_parts(14_486_000, 0)
 			.saturating_add(Weight::from_parts(0, 1920))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -57,8 +70,8 @@ impl<T: frame_system::Config> pallet_timestamp::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `94`
 		//  Estimated: `0`
-		// Minimum execution time: 2_422_000 picoseconds.
-		Weight::from_parts(2_588_000, 0)
+		// Minimum execution time: 3_283_000 picoseconds.
+		Weight::from_parts(3_496_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/common/src/weights/pallet_treasury.rs b/runtime/common/src/weights/pallet_treasury.rs
index 53b55bc9ba545f1ee1afc30951d6c32f29dfd5be..0926088319d1eb6a956f8cc43611b4453f622e25 100644
--- a/runtime/common/src/weights/pallet_treasury.rs
+++ b/runtime/common/src/weights/pallet_treasury.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_treasury`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -39,8 +52,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 38_000 picoseconds.
-		Weight::from_parts(50_000, 0)
+		// Minimum execution time: 142_000 picoseconds.
+		Weight::from_parts(183_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: Treasury ProposalCount (r:1 w:1)
@@ -51,8 +64,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `104`
 		//  Estimated: `1489`
-		// Minimum execution time: 9_915_000 picoseconds.
-		Weight::from_parts(10_348_000, 0)
+		// Minimum execution time: 21_724_000 picoseconds.
+		Weight::from_parts(22_610_000, 0)
 			.saturating_add(Weight::from_parts(0, 1489))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -65,8 +78,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `246`
 		//  Estimated: `3591`
-		// Minimum execution time: 14_381_000 picoseconds.
-		Weight::from_parts(14_805_000, 0)
+		// Minimum execution time: 32_786_000 picoseconds.
+		Weight::from_parts(33_606_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -80,11 +93,11 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `470 + p * (8 ±0)`
 		//  Estimated: `3557`
-		// Minimum execution time: 4_675_000 picoseconds.
-		Weight::from_parts(7_290_149, 0)
+		// Minimum execution time: 7_887_000 picoseconds.
+		Weight::from_parts(11_303_074, 0)
 			.saturating_add(Weight::from_parts(0, 3557))
-			// Standard Error: 898
-			.saturating_add(Weight::from_parts(37_588, 0).saturating_mul(p.into()))
+			// Standard Error: 1_215
+			.saturating_add(Weight::from_parts(51_874, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -94,8 +107,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127`
 		//  Estimated: `1887`
-		// Minimum execution time: 3_556_000 picoseconds.
-		Weight::from_parts(3_855_000, 0)
+		// Minimum execution time: 5_415_000 picoseconds.
+		Weight::from_parts(6_057_000, 0)
 			.saturating_add(Weight::from_parts(0, 1887))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -117,11 +130,11 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0 + p * (195 ±0)`
 		//  Estimated: `1887 + p * (5202 ±0)`
-		// Minimum execution time: 7_492_000 picoseconds.
-		Weight::from_parts(11_258_008, 0)
+		// Minimum execution time: 18_545_000 picoseconds.
+		Weight::from_parts(28_734_511, 0)
 			.saturating_add(Weight::from_parts(0, 1887))
-			// Standard Error: 13_762
-			.saturating_add(Weight::from_parts(14_095_295, 0).saturating_mul(p.into()))
+			// Standard Error: 38_994
+			.saturating_add(Weight::from_parts(34_136_939, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().reads((3_u64).saturating_mul(p.into())))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/common/src/weights/pallet_universal_dividend.rs b/runtime/common/src/weights/pallet_universal_dividend.rs
index 8ba14ff1407ff88a4cc4747e0f206afc31cea824..200df31c433d43ef422396b11ddf2a6b7f9df40f 100644
--- a/runtime/common/src/weights/pallet_universal_dividend.rs
+++ b/runtime/common/src/weights/pallet_universal_dividend.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_universal_dividend`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-23, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// pallet-universal-dividend
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -50,8 +63,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `644`
 		//  Estimated: `4109`
-		// Minimum execution time: 16_776_000 picoseconds.
-		Weight::from_parts(18_197_968, 0)
+		// Minimum execution time: 29_099_000 picoseconds.
+		Weight::from_parts(32_535_071, 0)
 			.saturating_add(Weight::from_parts(0, 4109))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -66,8 +79,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `93`
 		//  Estimated: `3591`
-		// Minimum execution time: 22_683_000 picoseconds.
-		Weight::from_parts(23_755_000, 0)
+		// Minimum execution time: 60_012_000 picoseconds.
+		Weight::from_parts(61_775_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -82,8 +95,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `93`
 		//  Estimated: `3591`
-		// Minimum execution time: 16_789_000 picoseconds.
-		Weight::from_parts(17_565_000, 0)
+		// Minimum execution time: 41_382_000 picoseconds.
+		Weight::from_parts(42_235_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -99,11 +112,11 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `215`
 		//  Estimated: `3591`
-		// Minimum execution time: 2_717_000 picoseconds.
-		Weight::from_parts(9_608_158, 0)
+		// Minimum execution time: 3_776_000 picoseconds.
+		Weight::from_parts(19_185_665, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
-			// Standard Error: 975
-			.saturating_add(Weight::from_parts(4_370, 0).saturating_mul(i.into()))
+			// Standard Error: 2_143
+			.saturating_add(Weight::from_parts(11_381, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/common/src/weights/pallet_upgrade_origin.rs b/runtime/common/src/weights/pallet_upgrade_origin.rs
index 8bcc397ad0f9281e0ad3d07b9de5bbdb0f063031..50b922d2d085b6b3b811bcca659edaa850cd9998 100644
--- a/runtime/common/src/weights/pallet_upgrade_origin.rs
+++ b/runtime/common/src/weights/pallet_upgrade_origin.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_upgrade_origin`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -39,8 +52,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: 2_514_000 picoseconds.
-		Weight::from_parts(2_665_000, 0)
+		// Minimum execution time: 6_176_000 picoseconds.
+		Weight::from_parts(6_572_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/common/src/weights/pallet_utility.rs b/runtime/common/src/weights/pallet_utility.rs
index fdccb4f9744575bc74899457a52c8169a45cbec3..264a827be4519a4c9b2c55096c633f2e520c771d 100644
--- a/runtime/common/src/weights/pallet_utility.rs
+++ b/runtime/common/src/weights/pallet_utility.rs
@@ -1,27 +1,40 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_utility`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-26, 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`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// target/release/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=*
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
+// --heap-pages=4096
+// --header=file_header.txt
 // --output=runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -40,18 +53,18 @@ impl<T: frame_system::Config> pallet_utility::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_218_000 picoseconds.
-		Weight::from_parts(6_519_128, 0)
+		// Minimum execution time: 5_523_000 picoseconds.
+		Weight::from_parts(9_856_758, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_328
-			.saturating_add(Weight::from_parts(1_210_862, 0).saturating_mul(c.into()))
+			// Standard Error: 7_663
+			.saturating_add(Weight::from_parts(3_948_047, 0).saturating_mul(c.into()))
 	}
 	fn as_derivative() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_275_000 picoseconds.
-		Weight::from_parts(1_421_000, 0)
+		// Minimum execution time: 3_320_000 picoseconds.
+		Weight::from_parts(3_590_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `c` is `[0, 1000]`.
@@ -59,18 +72,18 @@ impl<T: frame_system::Config> pallet_utility::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_163_000 picoseconds.
-		Weight::from_parts(7_119_936, 0)
+		// Minimum execution time: 5_403_000 picoseconds.
+		Weight::from_parts(10_801_972, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_461
-			.saturating_add(Weight::from_parts(1_230_749, 0).saturating_mul(c.into()))
+			// Standard Error: 3_013
+			.saturating_add(Weight::from_parts(4_090_158, 0).saturating_mul(c.into()))
 	}
 	fn dispatch_as() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_652_000 picoseconds.
-		Weight::from_parts(2_933_000, 0)
+		// Minimum execution time: 6_953_000 picoseconds.
+		Weight::from_parts(7_241_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `c` is `[0, 1000]`.
@@ -78,10 +91,10 @@ impl<T: frame_system::Config> pallet_utility::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_149_000 picoseconds.
-		Weight::from_parts(2_776_279, 0)
+		// Minimum execution time: 5_334_000 picoseconds.
+		Weight::from_parts(6_047_053, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_526
-			.saturating_add(Weight::from_parts(1_221_882, 0).saturating_mul(c.into()))
+			// Standard Error: 2_934
+			.saturating_add(Weight::from_parts(3_939_046, 0).saturating_mul(c.into()))
 	}
 }
diff --git a/runtime/common/src/weights/paritydb_weights.rs b/runtime/common/src/weights/paritydb_weights.rs
index 0787d9d0edb15690b65e44a8fc3a1b619deb4eff..ceed82df641138a423060cc9187693f6e12cf37f 100644
--- a/runtime/common/src/weights/paritydb_weights.rs
+++ b/runtime/common/src/weights/paritydb_weights.rs
@@ -1,111 +1,95 @@
-// 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/>.
 
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-11-18 (Y/M/D)
-//! HOSTNAME: `raspberrypi`, CPU: `ARMv7 Processor rev 3 (v7l)`
+//! DATE: 2023-12-26 (Y/M/D)
+//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //!
-//! DATABASE: `ParityDb`, RUNTIME: `Äždev`
-//! BLOCK-NUM: `BlockId::Number(85630)`
+//! DATABASE: `ParityDb`, RUNTIME: `ÄžDev`
+//! BLOCK-NUM: `BlockId::Number(0)`
 //! SKIP-WRITE: `false`, SKIP-READ: `false`, WARMUPS: `1`
-//! STATE-VERSION: `V1`, STATE-CACHE-SIZE: `0`
-//! WEIGHT-PATH: `.`
-//! METRIC: `Average`, WEIGHT-MUL: `2`, WEIGHT-ADD: `0`
+//! STATE-VERSION: `V1`, STATE-CACHE-SIZE: ``
+//! WEIGHT-PATH: `runtime/common/src/weights/`
+//! METRIC: `Average`, WEIGHT-MUL: `2.0`, WEIGHT-ADD: `0`
 
 // Executed Command:
-//   ./duniter
+//   target/release/duniter
 //   benchmark
 //   storage
-//   -d=/mnt/ssd1/duniter-v2s/t1
 //   --chain=gdev
 //   --mul=2
-//   --weight-path=.
 //   --state-version=1
+//   --weight-path
+//   runtime/common/src/weights/
 
-/// Storage DB weights for the `Äždev` runtime and `ParityDb`.
+/// Storage DB weights for the `ÄžDev` runtime and `ParityDb`.
 pub mod constants {
-    use frame_support::{
-        parameter_types,
-        weights::{constants, RuntimeDbWeight},
-    };
+	use frame_support::weights::constants;
+	use sp_core::parameter_types;
+	use sp_weights::RuntimeDbWeight;
 
-    parameter_types! {
-        /// `ParityDB` can be enabled with a feature flag, but is still experimental. These weights
-        /// are available for brave runtime engineers who may want to try this out as default.
-        pub const ParityDbWeight: RuntimeDbWeight = RuntimeDbWeight {
-            /// Time to read one storage item.
-            /// Calculated by multiplying the *Average* of all values with `2` and adding `0`.
-            ///
-            /// Stats nanoseconds:
-            ///   Min, Max: 62_017, 5_238_182
-            ///   Average:  125_949
-            ///   Median:   124_943
-            ///   Std-Dev:  19659.02
-            ///
-            /// Percentiles nanoseconds:
-            ///   99th: 151_424
-            ///   95th: 143_017
-            ///   75th: 133_498
-            read: 250_000 * constants::WEIGHT_REF_TIME_PER_NANOS,
+	parameter_types! {
+		/// `ParityDB` can be enabled with a feature flag, but is still experimental. These weights
+		/// are available for brave runtime engineers who may want to try this out as default.
+		pub const ParityDbWeight: RuntimeDbWeight = RuntimeDbWeight {
+			/// Time to read one storage item.
+			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
+			///
+			/// Stats nanoseconds:
+			///   Min, Max: 1_139, 113_508
+			///   Average:  3_659
+			///   Median:   3_601
+			///   Std-Dev:  820.57
+			///
+			/// Percentiles nanoseconds:
+			///   99th: 5_347
+			///   95th: 4_760
+			///   75th: 4_064
+			read: 7_318 * constants::WEIGHT_REF_TIME_PER_NANOS,
 
-            /// Time to write one storage item.
-            /// Calculated by multiplying the *Average* of all values with `2` and adding `0`.
-            ///
-            /// Stats nanoseconds:
-            ///   Min, Max: 88_054, 107_065_367
-            ///   Average:  419_064
-            ///   Median:   424_994
-            ///   Std-Dev:  423253.1
-            ///
-            /// Percentiles nanoseconds:
-            ///   99th: 611_825
-            ///   95th: 512_789
-            ///   75th: 457_938
-            write: 840_000 * constants::WEIGHT_REF_TIME_PER_NANOS,
-        };
-    }
+			/// Time to write one storage item.
+			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
+			///
+			/// Stats nanoseconds:
+			///   Min, Max: 4_337, 511_811
+			///   Average:  25_862
+			///   Median:   24_782
+			///   Std-Dev:  5817.92
+			///
+			/// Percentiles nanoseconds:
+			///   99th: 47_862
+			///   95th: 37_929
+			///   75th: 27_045
+			write: 51_724 * constants::WEIGHT_REF_TIME_PER_NANOS,
+		};
+	}
 
-    #[cfg(test)]
-    mod test_db_weights {
-        use super::constants::ParityDbWeight as W;
-        use frame_support::weights::constants;
+	#[cfg(test)]
+	mod test_db_weights {
+		use super::constants::ParityDbWeight as W;
+		use sp_weights::constants;
 
-        /// Checks that all weights exist and have sane values.
-        // NOTE: If this test fails but you are sure that the generated values are fine,
-        // you can delete it.
-        #[test]
-        fn bound() {
-            // At least 1 µs.
-            assert!(
-                W::get().reads(1).ref_time() >= constants::WEIGHT_REF_TIME_PER_MICROS,
-                "Read weight should be at least 1 µs."
-            );
-            assert!(
-                W::get().writes(1).ref_time() >= constants::WEIGHT_REF_TIME_PER_MICROS,
-                "Write weight should be at least 1 µs."
-            );
-            // At most 1 ms.
-            assert!(
-                W::get().reads(1).ref_time() <= constants::WEIGHT_REF_TIME_PER_MILLIS,
-                "Read weight should be at most 1 ms."
-            );
-            assert!(
-                W::get().writes(1).ref_time() <= constants::WEIGHT_REF_TIME_PER_MILLIS,
-                "Write weight should be at most 1 ms."
-            );
-        }
-    }
+		/// Checks that all weights exist and have sane values.
+		// NOTE: If this test fails but you are sure that the generated values are fine,
+		// you can delete it.
+		#[test]
+		fn bound() {
+			// At least 1 µs.
+			assert!(
+				W::get().reads(1).ref_time() >= constants::WEIGHT_REF_TIME_PER_MICROS,
+				"Read weight should be at least 1 µs."
+			);
+			assert!(
+				W::get().writes(1).ref_time() >= constants::WEIGHT_REF_TIME_PER_MICROS,
+				"Write weight should be at least 1 µs."
+			);
+			// At most 1 ms.
+			assert!(
+				W::get().reads(1).ref_time() <= constants::WEIGHT_REF_TIME_PER_MILLIS,
+				"Read weight should be at most 1 ms."
+			);
+			assert!(
+				W::get().writes(1).ref_time() <= constants::WEIGHT_REF_TIME_PER_MILLIS,
+				"Write weight should be at most 1 ms."
+			);
+		}
+	}
 }
diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml
index 4ed72ab585f7698b4e017014744650640e9ae244..43d347a1de779e63e71571463602e9f76a01baeb 100644
--- a/xtask/Cargo.toml
+++ b/xtask/Cargo.toml
@@ -30,3 +30,5 @@ tokio = { version = "1.24.2", features = ["macros"] }
 version_check = "0.9.2"
 version-compare = "0.0.11"
 tera = { version = "1", default-features = false }
+weight-analyzer = {path = "../resources/weight_analyzer"}
+scale-value = "0.13.0"
diff --git a/xtask/res/templates/runtime-calls-category.md b/xtask/res/templates/runtime-calls-category.md
index efe447ef4a9afeecea54745b9053e767670ab888..71c6a7bcec12c936d5ccf4dd912227954ab18b3b 100644
--- a/xtask/res/templates/runtime-calls-category.md
+++ b/xtask/res/templates/runtime-calls-category.md
@@ -8,10 +8,14 @@ There are **{{ calls_counter }}** {{ category_name }} calls from **{{ pallets |
 
 <details><summary><code>{{ call.name }}(
     {%- for param in call.params -%}
-    {{ param.name }}{% if loop.last != true %}, {% endif %} 
+    {{ param.name }}{% if loop.last != true %}, {% endif %}
     {%- endfor -%}
     )</code></summary>
-
+{% if call.weight == -1 %}
+No weight available.
+{% else %}
+Taking {{ call.weight }} % of a block.
+{% endif %}
 ```rust
 {% for param in call.params -%}
 {{ param.name }}: {{ param.type_name }}
diff --git a/xtask/src/gen_doc.rs b/xtask/src/gen_doc.rs
index 9f077659c73de0d17606231665d2a068f92615d6..2a599b77c2c88cdee216b110c86a58882c9f6e93 100644
--- a/xtask/src/gen_doc.rs
+++ b/xtask/src/gen_doc.rs
@@ -16,13 +16,28 @@
 
 use anyhow::{bail, Context, Result};
 use codec::Decode;
+use core::hash::Hash;
 use scale_info::form::PortableForm;
 use serde::Serialize;
+use std::collections::HashMap;
+use std::path::Path;
 use std::{
     fs::File,
     io::{Read, Write},
 };
 use tera::Tera;
+use weightanalyzer::analyze_weight;
+use weightanalyzer::MaxBlockWeight;
+use weightanalyzer::WeightInfo;
+
+fn rename_key<K, V>(h: &mut HashMap<K, V>, old_key: &K, new_key: K)
+where
+    K: Eq + Hash,
+{
+    if let Some(v) = h.remove(old_key) {
+        h.insert(new_key, v);
+    }
+}
 
 // consts
 
@@ -30,6 +45,7 @@ const CALLS_DOC_FILEPATH: &str = "docs/api/runtime-calls.md";
 const EVENTS_DOC_FILEPATH: &str = "docs/api/runtime-events.md";
 const ERRORS_DOC_FILEPATH: &str = "docs/api/runtime-errors.md";
 const TEMPLATES_GLOB: &str = "xtask/res/templates/*.md";
+const WEIGHT_FILEPATH: &str = "runtime/common/src/weights/";
 
 // define structs and implementations
 
@@ -49,6 +65,7 @@ struct Call {
     index: u8,
     name: String,
     params: Vec<CallParam>,
+    weight: f64,
 }
 #[derive(Clone, Serialize)]
 struct CallParam {
@@ -132,6 +149,7 @@ impl From<&scale_info::Variant<PortableForm>> for Call {
             index: variant.index,
             name: variant.name.to_owned(),
             params: variant.fields.iter().map(Into::into).collect(),
+            weight: Default::default(),
         }
     }
 }
@@ -237,11 +255,68 @@ pub(super) fn gen_doc() -> Result<()> {
 
     println!("Metadata successfully loaded!");
 
-    let runtime = if let frame_metadata::RuntimeMetadata::V14(metadata_v14) = metadata.1 {
-        get_from_metadata_v14(metadata_v14)?
-    } else {
-        bail!("unsuported metadata version")
-    };
+    let (mut runtime, max_weight) =
+        if let frame_metadata::RuntimeMetadata::V14(ref metadata_v14) = metadata.1 {
+            (
+                get_from_metadata_v14(metadata_v14.clone())?,
+                get_max_weight_from_metadata_v14(metadata_v14.clone())?,
+            )
+        } else {
+            bail!("unsuported metadata version")
+        };
+
+    let mut weights = get_weights(max_weight)?;
+
+    // Ad hoc names conversion between pallet filename and instance name
+    rename_key(&mut weights, &"FrameSystem".into(), "System".into());
+    rename_key(&mut weights, &"DuniterAccount".into(), "Account".into());
+    rename_key(
+        &mut weights,
+        &"Collective".into(),
+        "TechnicalCommittee".into(),
+    );
+    rename_key(
+        &mut weights,
+        &"MembershipMembership".into(),
+        "Membership".into(),
+    );
+    rename_key(
+        &mut weights,
+        &"MembershipSmithMembership".into(),
+        "SmithMembership".into(),
+    );
+    rename_key(&mut weights, &"CertificationCert".into(), "Cert".into());
+    rename_key(
+        &mut weights,
+        &"CertificationSmithCert".into(),
+        "SmithCert".into(),
+    );
+
+    // We enforce weight for each pallet.
+    // For pallets with manual or no weight, we define a default value.
+    weights.insert("Babe".to_string(), Default::default()); // Manual
+    weights.insert("Grandpa".to_string(), Default::default()); // Manual
+    weights.insert("Sudo".to_string(), Default::default()); // Only > v1.0 has WeightInfo TODO at update
+    weights.insert("AtomicSwap".to_string(), Default::default()); // No weight
+
+    // Insert weights for each call of each pallet.
+    // If no weight is available, the weight is set to -1.
+    // We use the relative weight in percent computed as the extrinsic base +
+    // the extrinsic execution divided by the total weight available in
+    // one block. If the weight depends on a complexity parameter,
+    // we display the worst possible weight, taking the upper limit as
+    // defined during the benchmark.
+    runtime.iter_mut().for_each(|pallet| {
+        pallet.calls.iter_mut().for_each(|call| {
+            call.weight = weights
+                .get(&pallet.name)
+                .expect(&("No weight for ".to_owned() + &pallet.name))
+                .get(&call.name)
+                .map_or(-1f64, |weight| {
+                    (weight.relative_weight * 10000.).round() / 10000.
+                })
+        })
+    });
 
     let (call_doc, event_doc, error_doc) = print_runtime(runtime);
 
@@ -261,6 +336,39 @@ pub(super) fn gen_doc() -> Result<()> {
     Ok(())
 }
 
+fn get_max_weight_from_metadata_v14(
+    metadata_v14: frame_metadata::v14::RuntimeMetadataV14,
+) -> Result<u128> {
+    // Extract the maximal weight available in one block
+    // from the metadata.
+    let block_weights = metadata_v14
+        .pallets
+        .iter()
+        .find(|pallet| pallet.name == "System")
+        .expect("Can't find System pallet metadata")
+        .constants
+        .iter()
+        .find(|constant| constant.name == "BlockWeights")
+        .expect("Can't find BlockWeights");
+
+    let block_weights = scale_value::scale::decode_as_type(
+        &mut &*block_weights.value,
+        block_weights.ty.id,
+        &metadata_v14.types,
+    )
+    .expect("Can't decode max_weight")
+    .value;
+
+    if let scale_value::ValueDef::Composite(scale_value::Composite::Named(i)) = block_weights
+            && let scale_value::ValueDef::Composite(scale_value::Composite::Named(j)) = &i.iter().find(|name| name.0 == "max_block").unwrap().1.value
+            && let scale_value::ValueDef::Primitive(scale_value::Primitive::U128(k)) = &j.iter().find(|name| name.0 == "ref_time").unwrap().1.value
+        {
+            Ok(*k)
+        } else {
+            bail!("Invalid max_weight")
+        }
+}
+
 fn get_from_metadata_v14(
     metadata_v14: frame_metadata::v14::RuntimeMetadataV14,
 ) -> Result<RuntimePallets> {
@@ -326,6 +434,14 @@ fn get_from_metadata_v14(
     Ok(pallets)
 }
 
+fn get_weights(max_weight: u128) -> Result<HashMap<String, HashMap<String, WeightInfo>>> {
+    analyze_weight(
+        Path::new(WEIGHT_FILEPATH),
+        &MaxBlockWeight::new(max_weight as f64),
+    )
+    .map_err(|e| anyhow::anyhow!(e))
+}
+
 /// use template to render markdown file with runtime calls documentation
 fn print_runtime(pallets: RuntimePallets) -> (String, String, String) {
     // init variables
diff --git a/xtask/src/main.rs b/xtask/src/main.rs
index 331bab7a9edb1333687885206eb2fd0d5ce34371..c6b201b9d06d1b0af24dc9771305d9b51cb6d56f 100644
--- a/xtask/src/main.rs
+++ b/xtask/src/main.rs
@@ -14,6 +14,8 @@
 // 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/>.
 
+#![feature(let_chains)]
+
 mod gen_doc;
 mod release_runtime;