Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Substrate to polkadot-stable2412-1 #3394

Merged
merged 12 commits into from
Feb 21, 2025
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ where
continue;
}

// Skip the tx if is is already bundled by a recent bundle
// Skip the tx if is already bundled by a recent bundle
if self
.previous_bundled_tx
.already_bundled(&self.transaction_pool.hash_of(pending_tx_data))
Expand Down
58 changes: 19 additions & 39 deletions domains/runtime/auto-id/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ use sp_messenger_host_functions::{get_storage_key, StorageKeyRequest};
use sp_mmr_primitives::EncodableOpaqueLeaf;
use sp_runtime::generic::{Era, ExtrinsicFormat, Preamble};
use sp_runtime::traits::{
AccountIdLookup, BlakeTwo256, Block as BlockT, Checkable, Keccak256, NumberFor, One,
TransactionExtension, TxBaseImplication, ValidateUnsigned, Zero,
AccountIdLookup, BlakeTwo256, Block as BlockT, Checkable, DispatchTransaction, Keccak256,
NumberFor, One, TransactionExtension, ValidateUnsigned, Zero,
};
use sp_runtime::transaction_validity::{
InvalidTransaction, TransactionSource, TransactionValidity, TransactionValidityError,
Expand Down Expand Up @@ -626,55 +626,35 @@ fn check_transaction_and_do_pre_dispatch_inner(
// which would help to maintain context across multiple transaction validity check against same
// runtime instance.
match xt.format {
// signed transaction
ExtrinsicFormat::Signed(account_id, extra) => {
let origin = RuntimeOrigin::signed(account_id);
let implication = TxBaseImplication(xt.function.clone());
let (_, nonce_val, origin) = frame_system::CheckNonce::<Runtime>::validate(
&extra.5,
ExtrinsicFormat::General(extension_version, extra) => {
let origin = RuntimeOrigin::none();
<SignedExtra as DispatchTransaction<RuntimeCall>>::validate_and_prepare(
extra,
origin,
&xt.function,
&dispatch_info,
encoded_len,
(),
&implication,
TransactionSource::External,
)?;
let (_, weight_val) =
frame_system::CheckWeight::<Runtime>::do_validate(&dispatch_info, encoded_len)?;

let (_, transaction_payment_val, origin) =
pallet_transaction_payment::ChargeTransactionPayment::<Runtime>::validate(
&extra.7,
origin,
&xt.function,
&dispatch_info,
encoded_len,
(),
&implication,
TransactionSource::External,
)?;
<SignedExtra as TransactionExtension<RuntimeCall>>::prepare(
extension_version,
)
.map(|_| ())
}
// signed transaction
ExtrinsicFormat::Signed(account_id, extra) => {
let origin = RuntimeOrigin::signed(account_id);
<SignedExtra as DispatchTransaction<RuntimeCall>>::validate_and_prepare(
extra,
(
(),
(),
(),
(),
(),
nonce_val,
weight_val,
transaction_payment_val,
),
&origin,
origin,
&xt.function,
&dispatch_info,
encoded_len,
// default extension version define here -
// https://github.com/paritytech/polkadot-sdk/blob/master/substrate/primitives/runtime/src/generic/checked_extrinsic.rs#L37
0,
)
.map(|_| ())
}
// unsigned transaction
ExtrinsicFormat::Bare | ExtrinsicFormat::General(_, _) => {
ExtrinsicFormat::Bare => {
if let RuntimeCall::Messenger(call) = &xt.function {
Messenger::pre_dispatch_with_trusted_mmr_proof(call)?;
} else {
Expand Down
67 changes: 32 additions & 35 deletions domains/runtime/evm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ use sp_messenger_host_functions::{get_storage_key, StorageKeyRequest};
use sp_mmr_primitives::EncodableOpaqueLeaf;
use sp_runtime::generic::{Era, ExtrinsicFormat, Preamble};
use sp_runtime::traits::{
BlakeTwo256, Block as BlockT, Checkable, DispatchInfoOf, Dispatchable, IdentityLookup,
Keccak256, NumberFor, One, PostDispatchInfoOf, TransactionExtension, TxBaseImplication,
BlakeTwo256, Block as BlockT, Checkable, DispatchInfoOf, DispatchTransaction, Dispatchable,
IdentityLookup, Keccak256, NumberFor, One, PostDispatchInfoOf, TransactionExtension,
UniqueSaturatedInto, ValidateUnsigned, Zero,
};
use sp_runtime::transaction_validity::{
Expand Down Expand Up @@ -1095,7 +1095,7 @@ fn check_transaction_and_do_pre_dispatch_inner(
// runtime instance.
match xt.signed {
CheckedSignature::GenericDelegated(format) => match format {
ExtrinsicFormat::Bare | ExtrinsicFormat::General(_, _) => {
ExtrinsicFormat::Bare => {
if let RuntimeCall::Messenger(call) = &xt.function {
Messenger::pre_dispatch_with_trusted_mmr_proof(call)?;
} else {
Expand All @@ -1108,7 +1108,7 @@ fn check_transaction_and_do_pre_dispatch_inner(
)
.map(|_| ())
}
ExtrinsicFormat::Signed(account_id, extra) => {
ExtrinsicFormat::General(extension_version, extra) => {
let custom_extra: CustomSignedExtra = (
extra.0,
extra.1,
Expand All @@ -1121,43 +1121,40 @@ fn check_transaction_and_do_pre_dispatch_inner(
extra.8,
);

let nonce_val =
pallet_evm_tracker::check_nonce::Val::CheckNonce((account_id, extra.5 .0));
let (_, weight_val) =
frame_system::CheckWeight::<Runtime>::do_validate(&dispatch_info, encoded_len)?;
let origin = RuntimeOrigin::none();
<CustomSignedExtra as DispatchTransaction<RuntimeCall>>::validate_and_prepare(
custom_extra,
origin,
&xt.function,
&dispatch_info,
encoded_len,
extension_version,
)
.map(|_| ())
}
ExtrinsicFormat::Signed(account_id, extra) => {
let custom_extra: CustomSignedExtra = (
extra.0,
extra.1,
extra.2,
extra.3,
extra.4,
pallet_evm_tracker::CheckNonce::from(extra.5 .0),
extra.6,
extra.7.clone(),
extra.8,
);

let origin = RuntimeOrigin::signed(account_id);

let implication = TxBaseImplication(xt.function.clone());
let (_, transaction_payment_val, origin) =
pallet_transaction_payment::ChargeTransactionPayment::<Runtime>::validate(
&extra.7,
origin,
&xt.function,
&dispatch_info,
encoded_len,
(),
&implication,
TransactionSource::External,
)?;

<CustomSignedExtra as TransactionExtension<RuntimeCall>>::prepare(
<CustomSignedExtra as DispatchTransaction<RuntimeCall>>::validate_and_prepare(
custom_extra,
(
(),
(),
(),
(),
(),
nonce_val,
weight_val,
transaction_payment_val,
(),
),
&origin,
origin,
&xt.function,
&dispatch_info,
encoded_len,
// default extension version define here -
// https://github.com/paritytech/polkadot-sdk/blob/master/substrate/primitives/runtime/src/generic/checked_extrinsic.rs#L37
0,
)
.map(|_| ())
}
Expand Down
58 changes: 19 additions & 39 deletions domains/test/runtime/auto-id/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ use sp_messenger_host_functions::{get_storage_key, StorageKeyRequest};
use sp_mmr_primitives::EncodableOpaqueLeaf;
use sp_runtime::generic::{Era, ExtrinsicFormat, Preamble};
use sp_runtime::traits::{
AccountIdLookup, BlakeTwo256, Block as BlockT, Checkable, Keccak256, NumberFor, One,
TransactionExtension, TxBaseImplication, ValidateUnsigned, Zero,
AccountIdLookup, BlakeTwo256, Block as BlockT, Checkable, DispatchTransaction, Keccak256,
NumberFor, One, TransactionExtension, ValidateUnsigned, Zero,
};
use sp_runtime::transaction_validity::{
InvalidTransaction, TransactionSource, TransactionValidity, TransactionValidityError,
Expand Down Expand Up @@ -622,55 +622,35 @@ fn check_transaction_and_do_pre_dispatch_inner(
// which would help to maintain context across multiple transaction validity check against same
// runtime instance.
match xt.format {
// signed transaction
ExtrinsicFormat::Signed(account_id, extra) => {
let origin = RuntimeOrigin::signed(account_id);
let implication = TxBaseImplication(xt.function.clone());
let (_, nonce_val, origin) = frame_system::CheckNonce::<Runtime>::validate(
&extra.5,
ExtrinsicFormat::General(extension_version, extra) => {
let origin = RuntimeOrigin::none();
<SignedExtra as DispatchTransaction<RuntimeCall>>::validate_and_prepare(
extra,
origin,
&xt.function,
&dispatch_info,
encoded_len,
(),
&implication,
TransactionSource::External,
)?;
let (_, weight_val) =
frame_system::CheckWeight::<Runtime>::do_validate(&dispatch_info, encoded_len)?;

let (_, transaction_payment_val, origin) =
pallet_transaction_payment::ChargeTransactionPayment::<Runtime>::validate(
&extra.7,
origin,
&xt.function,
&dispatch_info,
encoded_len,
(),
&implication,
TransactionSource::External,
)?;
<SignedExtra as TransactionExtension<RuntimeCall>>::prepare(
extension_version,
)
.map(|_| ())
}
// signed transaction
ExtrinsicFormat::Signed(account_id, extra) => {
let origin = RuntimeOrigin::signed(account_id);
<SignedExtra as DispatchTransaction<RuntimeCall>>::validate_and_prepare(
extra,
(
(),
(),
(),
(),
(),
nonce_val,
weight_val,
transaction_payment_val,
),
&origin,
origin,
&xt.function,
&dispatch_info,
encoded_len,
// default extension version define here -
// https://github.com/paritytech/polkadot-sdk/blob/master/substrate/primitives/runtime/src/generic/checked_extrinsic.rs#L37
0,
)
.map(|_| ())
}
// unsigned transaction
ExtrinsicFormat::Bare | ExtrinsicFormat::General(_, _) => {
ExtrinsicFormat::Bare => {
if let RuntimeCall::Messenger(call) = &xt.function {
Messenger::pre_dispatch_with_trusted_mmr_proof(call)?;
} else {
Expand Down
67 changes: 32 additions & 35 deletions domains/test/runtime/evm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ use sp_messenger_host_functions::{get_storage_key, StorageKeyRequest};
use sp_mmr_primitives::EncodableOpaqueLeaf;
use sp_runtime::generic::{Era, ExtrinsicFormat, Preamble, SignedPayload};
use sp_runtime::traits::{
BlakeTwo256, Block as BlockT, Checkable, DispatchInfoOf, Dispatchable, IdentityLookup,
Keccak256, NumberFor, One, PostDispatchInfoOf, TransactionExtension, TxBaseImplication,
BlakeTwo256, Block as BlockT, Checkable, DispatchInfoOf, DispatchTransaction, Dispatchable,
IdentityLookup, Keccak256, NumberFor, One, PostDispatchInfoOf, TransactionExtension,
UniqueSaturatedInto, ValidateUnsigned, Zero,
};
use sp_runtime::transaction_validity::{
Expand Down Expand Up @@ -1121,7 +1121,7 @@ fn check_transaction_and_do_pre_dispatch_inner(
// runtime instance.
match xt.signed {
CheckedSignature::GenericDelegated(format) => match format {
ExtrinsicFormat::Bare | ExtrinsicFormat::General(_, _) => {
ExtrinsicFormat::Bare => {
if let RuntimeCall::Messenger(call) = &xt.function {
Messenger::pre_dispatch_with_trusted_mmr_proof(call)?;
} else {
Expand All @@ -1134,7 +1134,7 @@ fn check_transaction_and_do_pre_dispatch_inner(
)
.map(|_| ())
}
ExtrinsicFormat::Signed(account_id, extra) => {
ExtrinsicFormat::General(extension_version, extra) => {
let custom_extra: CustomSignedExtra = (
extra.0,
extra.1,
Expand All @@ -1147,43 +1147,40 @@ fn check_transaction_and_do_pre_dispatch_inner(
extra.8,
);

let nonce_val =
pallet_evm_tracker::check_nonce::Val::CheckNonce((account_id, extra.5 .0));
let (_, weight_val) =
frame_system::CheckWeight::<Runtime>::do_validate(&dispatch_info, encoded_len)?;
let origin = RuntimeOrigin::none();
<CustomSignedExtra as DispatchTransaction<RuntimeCall>>::validate_and_prepare(
custom_extra,
origin,
&xt.function,
&dispatch_info,
encoded_len,
extension_version,
)
.map(|_| ())
}
ExtrinsicFormat::Signed(account_id, extra) => {
let custom_extra: CustomSignedExtra = (
extra.0,
extra.1,
extra.2,
extra.3,
extra.4,
pallet_evm_tracker::CheckNonce::from(extra.5 .0),
extra.6,
extra.7.clone(),
extra.8,
);

let origin = RuntimeOrigin::signed(account_id);
let implication = TxBaseImplication(xt.function.clone());

let (_, transaction_payment_val, origin) =
pallet_transaction_payment::ChargeTransactionPayment::<Runtime>::validate(
&extra.7,
origin,
&xt.function,
&dispatch_info,
encoded_len,
(),
&implication,
TransactionSource::External,
)?;

<CustomSignedExtra as TransactionExtension<RuntimeCall>>::prepare(
<CustomSignedExtra as DispatchTransaction<RuntimeCall>>::validate_and_prepare(
custom_extra,
(
(),
(),
(),
(),
(),
nonce_val,
weight_val,
transaction_payment_val,
(),
),
&origin,
origin,
&xt.function,
&dispatch_info,
encoded_len,
// default extension version define here -
// https://github.com/paritytech/polkadot-sdk/blob/master/substrate/primitives/runtime/src/generic/checked_extrinsic.rs#L37
0,
)
.map(|_| ())
}
Expand Down