Skip to content

Commit 53c0379

Browse files
committed
Revert "Revert "FRAME: Create TransactionExtension as a replacement for SignedExtension (paritytech#2280)" (paritytech#3665)"
This reverts commit bbd51ce.
1 parent 878b5dd commit 53c0379

File tree

350 files changed

+24248
-15770
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

350 files changed

+24248
-15770
lines changed

Cargo.lock

Lines changed: 23 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bridges/bin/runtime-common/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ runtime-benchmarks = [
9393
"pallet-bridge-messages/runtime-benchmarks",
9494
"pallet-bridge-parachains/runtime-benchmarks",
9595
"pallet-bridge-relayers/runtime-benchmarks",
96+
"pallet-transaction-payment/runtime-benchmarks",
9697
"pallet-utility/runtime-benchmarks",
9798
"sp-runtime/runtime-benchmarks",
9899
"xcm-builder/runtime-benchmarks",

bridges/bin/runtime-common/src/lib.rs

Lines changed: 41 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -105,43 +105,48 @@ macro_rules! generate_bridge_reject_obsolete_headers_and_messages {
105105
($call:ty, $account_id:ty, $($filter_call:ty),*) => {
106106
#[derive(Clone, codec::Decode, Default, codec::Encode, Eq, PartialEq, sp_runtime::RuntimeDebug, scale_info::TypeInfo)]
107107
pub struct BridgeRejectObsoleteHeadersAndMessages;
108-
impl sp_runtime::traits::SignedExtension for BridgeRejectObsoleteHeadersAndMessages {
108+
impl sp_runtime::traits::TransactionExtensionBase for BridgeRejectObsoleteHeadersAndMessages {
109109
const IDENTIFIER: &'static str = "BridgeRejectObsoleteHeadersAndMessages";
110-
type AccountId = $account_id;
111-
type Call = $call;
112-
type AdditionalSigned = ();
110+
type Implicit = ();
111+
}
112+
impl<Context> sp_runtime::traits::TransactionExtension<$call, Context> for BridgeRejectObsoleteHeadersAndMessages {
113113
type Pre = ();
114-
115-
fn additional_signed(&self) -> sp_std::result::Result<
116-
(),
117-
sp_runtime::transaction_validity::TransactionValidityError,
118-
> {
119-
Ok(())
120-
}
114+
type Val = ();
121115

122116
fn validate(
123117
&self,
124-
_who: &Self::AccountId,
125-
call: &Self::Call,
126-
_info: &sp_runtime::traits::DispatchInfoOf<Self::Call>,
118+
origin: <$call as sp_runtime::traits::Dispatchable>::RuntimeOrigin,
119+
call: &$call,
120+
_info: &sp_runtime::traits::DispatchInfoOf<$call>,
127121
_len: usize,
128-
) -> sp_runtime::transaction_validity::TransactionValidity {
129-
let valid = sp_runtime::transaction_validity::ValidTransaction::default();
122+
_context: &mut Context,
123+
_self_implicit: Self::Implicit,
124+
_inherited_implication: &impl codec::Encode,
125+
) -> Result<
126+
(
127+
sp_runtime::transaction_validity::ValidTransaction,
128+
Self::Val,
129+
<$call as sp_runtime::traits::Dispatchable>::RuntimeOrigin,
130+
), sp_runtime::transaction_validity::TransactionValidityError
131+
> {
132+
let tx_validity = sp_runtime::transaction_validity::ValidTransaction::default();
130133
$(
131-
let valid = valid
132-
.combine_with(<$filter_call as $crate::BridgeRuntimeFilterCall<$call>>::validate(call)?);
134+
let call_filter_validity = <$filter_call as $crate::BridgeRuntimeFilterCall<$call>>::validate(call)?;
135+
let tx_validity = tx_validity.combine_with(call_filter_validity);
133136
)*
134-
Ok(valid)
137+
Ok((tx_validity, (), origin))
135138
}
136139

137-
fn pre_dispatch(
140+
fn prepare(
138141
self,
139-
who: &Self::AccountId,
140-
call: &Self::Call,
141-
info: &sp_runtime::traits::DispatchInfoOf<Self::Call>,
142-
len: usize,
142+
_val: Self::Val,
143+
_origin: &<$call as sp_runtime::traits::Dispatchable>::RuntimeOrigin,
144+
_call: &$call,
145+
_info: &sp_runtime::traits::DispatchInfoOf<$call>,
146+
_len: usize,
147+
_context: &Context,
143148
) -> Result<Self::Pre, sp_runtime::transaction_validity::TransactionValidityError> {
144-
self.validate(who, call, info, len).map(drop)
149+
Ok(())
145150
}
146151
}
147152
};
@@ -150,12 +155,14 @@ macro_rules! generate_bridge_reject_obsolete_headers_and_messages {
150155
#[cfg(test)]
151156
mod tests {
152157
use crate::BridgeRuntimeFilterCall;
153-
use frame_support::{assert_err, assert_ok};
158+
use codec::Encode;
159+
use frame_support::assert_err;
154160
use sp_runtime::{
155-
traits::SignedExtension,
161+
traits::DispatchTransaction,
156162
transaction_validity::{InvalidTransaction, TransactionValidity, ValidTransaction},
157163
};
158164

165+
#[derive(Encode)]
159166
pub struct MockCall {
160167
data: u32,
161168
}
@@ -206,17 +213,20 @@ mod tests {
206213
);
207214

208215
assert_err!(
209-
BridgeRejectObsoleteHeadersAndMessages.validate(&(), &MockCall { data: 1 }, &(), 0),
216+
BridgeRejectObsoleteHeadersAndMessages.validate_only((), &MockCall { data: 1 }, &(), 0),
210217
InvalidTransaction::Custom(1)
211218
);
212219

213220
assert_err!(
214-
BridgeRejectObsoleteHeadersAndMessages.validate(&(), &MockCall { data: 2 }, &(), 0),
221+
BridgeRejectObsoleteHeadersAndMessages.validate_only((), &MockCall { data: 2 }, &(), 0),
215222
InvalidTransaction::Custom(2)
216223
);
217224

218-
assert_ok!(
219-
BridgeRejectObsoleteHeadersAndMessages.validate(&(), &MockCall { data: 3 }, &(), 0),
225+
assert_eq!(
226+
BridgeRejectObsoleteHeadersAndMessages
227+
.validate_only((), &MockCall { data: 3 }, &(), 0)
228+
.unwrap()
229+
.0,
220230
ValidTransaction { priority: 3, ..Default::default() }
221231
)
222232
}

bridges/bin/runtime-common/src/mock.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ impl pallet_balances::Config for TestRuntime {
164164
type AccountStore = System;
165165
}
166166

167+
#[derive_impl(pallet_transaction_payment::config_preludes::TestDefaultConfig as pallet_transaction_payment::DefaultConfig)]
167168
impl pallet_transaction_payment::Config for TestRuntime {
168169
type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter<Balances, ()>;
169170
type OperationalFeeMultiplier = ConstU8<5>;
@@ -176,7 +177,6 @@ impl pallet_transaction_payment::Config for TestRuntime {
176177
MinimumMultiplier,
177178
MaximumMultiplier,
178179
>;
179-
type RuntimeEvent = RuntimeEvent;
180180
}
181181

182182
impl pallet_bridge_grandpa::Config for TestRuntime {

bridges/bin/runtime-common/src/priority_calculator.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,20 +169,23 @@ mod integrity_tests {
169169
// nodes to the proof (x0.5 because we expect some nodes to be reused)
170170
let estimated_message_size = 512;
171171
// let's say all our messages have the same dispatch weight
172-
let estimated_message_dispatch_weight =
173-
Runtime::WeightInfo::message_dispatch_weight(estimated_message_size);
172+
let estimated_message_dispatch_weight = <Runtime as pallet_bridge_messages::Config<
173+
MessagesInstance,
174+
>>::WeightInfo::message_dispatch_weight(
175+
estimated_message_size
176+
);
174177
// messages proof argument size is (for every message) messages size + some additional
175178
// trie nodes. Some of them are reused by different messages, so let's take 2/3 of default
176179
// "overhead" constant
177-
let messages_proof_size = Runtime::WeightInfo::expected_extra_storage_proof_size()
180+
let messages_proof_size = <Runtime as pallet_bridge_messages::Config<MessagesInstance>>::WeightInfo::expected_extra_storage_proof_size()
178181
.saturating_mul(2)
179182
.saturating_div(3)
180183
.saturating_add(estimated_message_size)
181184
.saturating_mul(messages as _);
182185

183186
// finally we are able to estimate transaction size and weight
184187
let transaction_size = base_tx_size.saturating_add(messages_proof_size);
185-
let transaction_weight = Runtime::WeightInfo::receive_messages_proof_weight(
188+
let transaction_weight = <Runtime as pallet_bridge_messages::Config<MessagesInstance>>::WeightInfo::receive_messages_proof_weight(
186189
&PreComputedSize(transaction_size as _),
187190
messages as _,
188191
estimated_message_dispatch_weight.saturating_mul(messages),

0 commit comments

Comments
 (0)