diff --git a/substrate/runtime/src/lib.rs b/substrate/runtime/src/lib.rs index 1f8a9298..0331b80a 100644 --- a/substrate/runtime/src/lib.rs +++ b/substrate/runtime/src/lib.rs @@ -383,9 +383,11 @@ sp_api::impl_runtime_apis! { fn execute_block(block: Block) { for tx in &block.extrinsics { if let Some(signer) = tx.signer() { - let signer = signer.0.into(); - if System::providers(&signer) == 0 { - System::inc_providers(&signer); + let signer = PublicKey::from(signer.0); + let mut info = frame_system::Account::::get(&signer); + if info.providers == 0 { + info.providers = 1; + frame_system::Account::::set(&signer, info); } } } @@ -401,9 +403,11 @@ sp_api::impl_runtime_apis! { impl sp_block_builder::BlockBuilder for Runtime { fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { if let Some(signer) = extrinsic.signer() { - let signer = signer.0.into(); - if System::providers(&signer) == 0 { - System::inc_providers(&signer); + let signer = PublicKey::from(signer.0); + let mut info = frame_system::Account::::get(&signer); + if info.providers == 0 { + info.providers = 1; + frame_system::Account::::set(&signer, info); } } Executive::apply_extrinsic(extrinsic)