diff --git a/substrate/abi/src/lib.rs b/substrate/abi/src/lib.rs index 589be303..3e40b51e 100644 --- a/substrate/abi/src/lib.rs +++ b/substrate/abi/src/lib.rs @@ -36,15 +36,25 @@ pub mod tx; Clone, PartialEq, Eq, Debug, scale::Encode, scale::Decode, scale::DecodeWithMemTracking, )] pub enum Call { + #[codec(index = 1)] Timestamp(timestamp::Call), + #[codec(index = 3)] Coins(coins::Call), + #[codec(index = 4)] LiquidityTokens(liquidity_tokens::Call), + #[codec(index = 5)] Dex(dex::Call), + #[codec(index = 6)] ValidatorSets(validator_sets::Call), + #[codec(index = 7)] GenesisLiquidity(genesis_liquidity::Call), + #[codec(index = 10)] InInstructions(in_instructions::Call), + #[codec(index = 11)] Signals(signals::Call), + #[codec(index = 12)] Babe(babe::Call), + #[codec(index = 13)] Grandpa(grandpa::Call), } @@ -60,19 +70,27 @@ pub enum TransactionPaymentEvent { Clone, PartialEq, Eq, Debug, scale::Encode, scale::Decode, scale::DecodeWithMemTracking, )] pub enum Event { + #[codec(index = 0)] System(system::Event), - Timestamp, + #[codec(index = 2)] TransactionPayment(TransactionPaymentEvent), + #[codec(index = 3)] Coins(coins::Event), + #[codec(index = 4)] LiquidityTokens(liquidity_tokens::Event), + #[codec(index = 5)] Dex(dex::Event), + #[codec(index = 6)] ValidatorSets(validator_sets::Event), + #[codec(index = 7)] GenesisLiquidity(genesis_liquidity::Event), - Emissions, + #[codec(index = 9)] EconomicSecurity(economic_security::Event), + #[codec(index = 10)] InInstructions(in_instructions::Event), + #[codec(index = 11)] Signals(signals::Event), - Babe, + #[codec(index = 13)] Grandpa(grandpa::Event), } diff --git a/substrate/abi/src/tx.rs b/substrate/abi/src/tx.rs index 14aeaf24..3b52d3af 100644 --- a/substrate/abi/src/tx.rs +++ b/substrate/abi/src/tx.rs @@ -45,6 +45,10 @@ impl, Extra: 'static + Tra pub fn call(&self) -> &crate::Call { &self.call } + + pub fn signer(&self) -> Option { + self.signature.as_ref().map(|(address, _sig, _extra)| *address) + } } impl, Extra: 'static + TransactionMember> diff --git a/substrate/runtime/src/lib.rs b/substrate/runtime/src/lib.rs index d9683b0c..1f8a9298 100644 --- a/substrate/runtime/src/lib.rs +++ b/substrate/runtime/src/lib.rs @@ -381,6 +381,14 @@ 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); + } + } + } Executive::execute_block(block); } @@ -392,6 +400,12 @@ 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); + } + } Executive::apply_extrinsic(extrinsic) } @@ -417,6 +431,12 @@ sp_api::impl_runtime_apis! { tx: ::Extrinsic, block_hash: ::Hash, ) -> TransactionValidity { + if let Some(signer) = tx.signer() { + let signer = signer.0.into(); + if System::providers(&signer) == 0 { + System::inc_providers(&signer); + } + } Executive::validate_transaction(source, tx, block_hash) } }