Skip to content

Commit

Permalink
[to be merged in transaction extension PR] (#5770)
Browse files Browse the repository at this point in the history
  • Loading branch information
gui1117 committed Sep 19, 2024
1 parent 98a0ff4 commit c02478b
Show file tree
Hide file tree
Showing 18 changed files with 52 additions and 51 deletions.
11 changes: 6 additions & 5 deletions bridges/chains/chain-polkadot-bulletin/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,7 @@ use frame_support::{
use frame_system::limits;
use scale_info::TypeInfo;
use sp_runtime::{
impl_tx_ext_default,
traits::{Dispatchable},
transaction_validity::TransactionValidityError,
impl_tx_ext_default, traits::Dispatchable, transaction_validity::TransactionValidityError,
Perbill, StateVersion,
};

Expand Down Expand Up @@ -101,10 +99,13 @@ where
C: Dispatchable,
{
const IDENTIFIER: &'static str = "Not needed.";
type Implicit = <TransactionExtensionSchema as sp_runtime::traits::TransactionExtension<C>>::Implicit;
type Implicit =
<TransactionExtensionSchema as sp_runtime::traits::TransactionExtension<C>>::Implicit;

fn implicit(&self) -> Result<Self::Implicit, TransactionValidityError> {
<TransactionExtensionSchema as sp_runtime::traits::TransactionExtension<C>>::implicit(&self.0)
<TransactionExtensionSchema as sp_runtime::traits::TransactionExtension<C>>::implicit(
&self.0,
)
}
type Pre = ();
type Val = ();
Expand Down
2 changes: 1 addition & 1 deletion cumulus/parachains/runtimes/starters/shell/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ construct_runtime! {
}
}

/// Simple implementation which fails any transaction which is signed.
/// Simple implementation which fails any transaction which is signed or general.
#[derive(Eq, PartialEq, Clone, Default, sp_core::RuntimeDebug, Encode, Decode, TypeInfo)]
pub struct DisallowSigned;

Expand Down
4 changes: 1 addition & 3 deletions cumulus/primitives/storage-weight-reclaim/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,7 @@ use frame_system::Config;
use scale_info::TypeInfo;
use sp_runtime::{
impl_tx_ext_default,
traits::{
DispatchInfoOf, Dispatchable, PostDispatchInfoOf, TransactionExtension,
},
traits::{DispatchInfoOf, Dispatchable, PostDispatchInfoOf, TransactionExtension},
transaction_validity::TransactionValidityError,
DispatchResult,
};
Expand Down
4 changes: 2 additions & 2 deletions polkadot/runtime/common/src/claims.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ pub enum StatementKind {

impl StatementKind {
/// Convert this to the (English) statement it represents.
pub fn to_text(self) -> &'static [u8] {
fn to_text(self) -> &'static [u8] {
match self {
StatementKind::Regular =>
&b"I hereby agree to the terms of the statement whose SHA-256 multihash is \
Expand Down Expand Up @@ -651,9 +651,9 @@ where
(ValidTransaction, Self::Val, <T::RuntimeCall as Dispatchable>::RuntimeOrigin),
TransactionValidityError,
> {
let who = origin.as_system_origin_signer().ok_or(InvalidTransaction::BadSigner)?;
if let Some(local_call) = call.is_sub_type() {
if let Call::attest { statement: attested_statement } = local_call {
let who = origin.as_system_origin_signer().ok_or(InvalidTransaction::BadSigner)?;
let signer = Preclaims::<T>::get(who)
.ok_or(InvalidTransaction::Custom(ValidityError::SignerHasNoClaim.into()))?;
if let Some(s) = Signing::<T>::get(signer) {
Expand Down
8 changes: 7 additions & 1 deletion substrate/bin/node/cli/src/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1081,7 +1081,13 @@ mod tests {
function,
tx_ext,
(
((), spec_version, transaction_version, genesis_hash, genesis_hash, (), ()),
(),
spec_version,
transaction_version,
genesis_hash,
genesis_hash,
(),
(),
(),
None,
),
Expand Down
4 changes: 2 additions & 2 deletions substrate/bin/node/cli/tests/submit_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ fn should_submit_signed_twice_from_the_same_account() {
let s = state.read();
fn nonce(tx: UncheckedExtrinsic) -> frame_system::CheckNonce<Runtime> {
let extra = tx.preamble.to_signed().unwrap().2;
(extra.0).5
extra.5
}
let nonce1 = nonce(UncheckedExtrinsic::decode(&mut &*s.transactions[0]).unwrap());
let nonce2 = nonce(UncheckedExtrinsic::decode(&mut &*s.transactions[1]).unwrap());
Expand Down Expand Up @@ -180,7 +180,7 @@ fn should_submit_signed_twice_from_all_accounts() {
let s = state.read();
fn nonce(tx: UncheckedExtrinsic) -> frame_system::CheckNonce<Runtime> {
let extra = tx.preamble.to_signed().unwrap().2;
(extra.0).5
extra.5
}
let nonce1 = nonce(UncheckedExtrinsic::decode(&mut &*s.transactions[0]).unwrap());
let nonce2 = nonce(UncheckedExtrinsic::decode(&mut &*s.transactions[1]).unwrap());
Expand Down
2 changes: 1 addition & 1 deletion substrate/frame/metadata-hash-extension/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ use frame_system::Config;
use scale_info::TypeInfo;
use sp_runtime::{
impl_tx_ext_default,
traits::{TransactionExtension},
traits::TransactionExtension,
transaction_validity::{TransactionValidityError, UnknownTransaction},
};

Expand Down
5 changes: 1 addition & 4 deletions substrate/frame/sudo/src/extension.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,7 @@ use frame_support::{dispatch::DispatchInfo, ensure};
use scale_info::TypeInfo;
use sp_runtime::{
impl_tx_ext_default,
traits::{
AsSystemOriginSigner, DispatchInfoOf, Dispatchable, TransactionExtension,

},
traits::{AsSystemOriginSigner, DispatchInfoOf, Dispatchable, TransactionExtension},
transaction_validity::{
InvalidTransaction, TransactionPriority, TransactionValidityError, UnknownTransaction,
ValidTransaction,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,11 @@ pub fn expand_runtime_metadata(
extensions: <
<
#extrinsic as #scrate::sp_runtime::traits::ExtrinsicMetadata
>::SignedExtensions as #scrate::sp_runtime::traits::TransactionExtension::<<#runtime as #system_path::Config>::RuntimeCall> // TODO TODO: double check
>::SignedExtensions
as
#scrate::sp_runtime::traits::TransactionExtension::<
<#runtime as #system_path::Config>::RuntimeCall
>
>::metadata()
.into_iter()
.map(|meta| #scrate::__private::metadata_ir::TransactionExtensionMetadataIR {
Expand Down
1 change: 1 addition & 0 deletions substrate/frame/support/src/crypto/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

use codec::{Decode, Encode};

/// A mock type for account, identifies a u64 and consider any signature valid.
#[derive(Clone, Debug, Encode, Decode, PartialEq, Eq, PartialOrd, Ord, scale_info::TypeInfo)]
pub struct AccountU64(u64);
impl sp_runtime::traits::IdentifyAccount for AccountU64 {
Expand Down
5 changes: 1 addition & 4 deletions substrate/frame/system/src/extensions/check_mortality.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,7 @@ use scale_info::TypeInfo;
use sp_runtime::{
generic::Era,
impl_tx_ext_default,
traits::{
DispatchInfoOf, SaturatedConversion, TransactionExtension,
ValidateResult,
},
traits::{DispatchInfoOf, SaturatedConversion, TransactionExtension, ValidateResult},
transaction_validity::{InvalidTransaction, TransactionValidityError, ValidTransaction},
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,7 @@ use frame_support::{traits::OriginTrait, DefaultNoBound};
use scale_info::TypeInfo;
use sp_runtime::{
impl_tx_ext_default,
traits::{
DispatchInfoOf, TransactionExtension,
},
traits::{DispatchInfoOf, TransactionExtension},
transaction_validity::InvalidTransaction,
};

Expand Down
4 changes: 2 additions & 2 deletions substrate/frame/system/src/extensions/check_nonce.rs
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,9 @@ where
return Err(InvalidTransaction::Stale.into())
}

let provides = vec![Encode::encode(&(who.clone(), self.0))];
let provides = vec![Encode::encode(&(&who, self.0))];
let requires = if account.nonce < self.0 {
vec![Encode::encode(&(who.clone(), self.0.saturating_sub(One::one())))]
vec![Encode::encode(&(&who, self.0.saturating_sub(One::one())))]
} else {
vec![]
};
Expand Down
3 changes: 1 addition & 2 deletions substrate/frame/system/src/extensions/check_spec_version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ use crate::{Config, Pallet};
use codec::{Decode, Encode};
use scale_info::TypeInfo;
use sp_runtime::{
impl_tx_ext_default,
traits::{TransactionExtension},
impl_tx_ext_default, traits::TransactionExtension,
transaction_validity::TransactionValidityError,
};

Expand Down
3 changes: 1 addition & 2 deletions substrate/frame/system/src/extensions/check_tx_version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ use crate::{Config, Pallet};
use codec::{Decode, Encode};
use scale_info::TypeInfo;
use sp_runtime::{
impl_tx_ext_default,
traits::{TransactionExtension},
impl_tx_ext_default, traits::TransactionExtension,
transaction_validity::TransactionValidityError,
};

Expand Down
3 changes: 1 addition & 2 deletions substrate/frame/system/src/extensions/check_weight.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ use frame_support::{
use scale_info::TypeInfo;
use sp_runtime::{
traits::{
DispatchInfoOf, Dispatchable, PostDispatchInfoOf, TransactionExtension,
ValidateResult,
DispatchInfoOf, Dispatchable, PostDispatchInfoOf, TransactionExtension, ValidateResult,
},
transaction_validity::{InvalidTransaction, TransactionValidityError, ValidTransaction},
DispatchResult,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,7 @@ use frame_support::{
};
use scale_info::{StaticTypeInfo, TypeInfo};
use sp_runtime::{
traits::{
DispatchInfoOf, OriginOf, PostDispatchInfoOf, TransactionExtension,
ValidateResult,
},
traits::{DispatchInfoOf, OriginOf, PostDispatchInfoOf, TransactionExtension, ValidateResult},
transaction_validity::TransactionValidityError,
};

Expand Down
29 changes: 17 additions & 12 deletions substrate/primitives/runtime/src/generic/unchecked_extrinsic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
use crate::{
generic::{CheckedExtrinsic, ExtrinsicFormat},
traits::{
self, transaction_extension::TransactionExtension, Checkable, Dispatchable,
ExtrinsicLike, ExtrinsicMetadata, IdentifyAccount, MaybeDisplay, Member, SignaturePayload,
self, transaction_extension::TransactionExtension, Checkable, Dispatchable, ExtrinsicLike,
ExtrinsicMetadata, IdentifyAccount, MaybeDisplay, Member, SignaturePayload,
},
transaction_validity::{InvalidTransaction, TransactionValidityError},
OpaqueExtrinsic,
Expand Down Expand Up @@ -142,22 +142,27 @@ where
match &self {
Preamble::Bare(_) => EXTRINSIC_FORMAT_VERSION.size_hint(),
Preamble::Signed(address, signature, ext_version, ext, EXTRINSIC_FORMAT_VERSION) =>
EXTRINSIC_FORMAT_VERSION.size_hint() +
address.size_hint() + signature.size_hint() +
ext_version.size_hint() +
ext.size_hint(),
EXTRINSIC_FORMAT_VERSION
.size_hint()
.saturating_add(address.size_hint())
.saturating_add(signature.size_hint())
.saturating_add(ext_version.size_hint())
.saturating_add(ext.size_hint()),
Preamble::Signed(
address,
signature,
_,
ext,
LOWEST_SUPPORTED_EXTRINSIC_FORMAT_VERSION,
) =>
LOWEST_SUPPORTED_EXTRINSIC_FORMAT_VERSION.size_hint() +
address.size_hint() + signature.size_hint() +
ext.size_hint(),
Preamble::General(ext_version, ext) =>
EXTRINSIC_FORMAT_VERSION.size_hint() + ext_version.size_hint() + ext.size_hint(),
) => LOWEST_SUPPORTED_EXTRINSIC_FORMAT_VERSION
.size_hint()
.saturating_add(address.size_hint())
.saturating_add(signature.size_hint())
.saturating_add(ext.size_hint()),
Preamble::General(ext_version, ext) => EXTRINSIC_FORMAT_VERSION
.size_hint()
.saturating_add(ext_version.size_hint())
.saturating_add(ext.size_hint()),
_ => {
// unreachable, versions are checked in the constructor
0
Expand Down

0 comments on commit c02478b

Please sign in to comment.