Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Migrate brigdes pallet to named events #5575

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
192 changes: 108 additions & 84 deletions bridges/modules/dispatch/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,30 +111,42 @@ pub mod pallet {
#[pallet::generate_deposit(pub(super) fn deposit_event)]
pub enum Event<T: Config<I>, I: 'static = ()> {
/// Message has been rejected before reaching dispatch.
MessageRejected(ChainId, BridgeMessageIdOf<T, I>),
MessageRejected { source_chain: ChainId, id: BridgeMessageIdOf<T, I> },
/// Message has been rejected by dispatcher because of spec version mismatch.
/// Last two arguments are: expected and passed spec version.
MessageVersionSpecMismatch(ChainId, BridgeMessageIdOf<T, I>, SpecVersion, SpecVersion),
MessageVersionSpecMismatch {
source_chain: ChainId,
id: BridgeMessageIdOf<T, I>,
expected_version: SpecVersion,
passed_version: SpecVersion,
},
/// Message has been rejected by dispatcher because of weight mismatch.
/// Last two arguments are: expected and passed call weight.
MessageWeightMismatch(ChainId, BridgeMessageIdOf<T, I>, Weight, Weight),
MessageWeightMismatch {
source_chain: ChainId,
id: BridgeMessageIdOf<T, I>,
expected_weight: Weight,
passed_weight: Weight,
},
/// Message signature mismatch.
MessageSignatureMismatch(ChainId, BridgeMessageIdOf<T, I>),
MessageSignatureMismatch { source_chain: ChainId, id: BridgeMessageIdOf<T, I> },
/// We have failed to decode Call from the message.
MessageCallDecodeFailed(ChainId, BridgeMessageIdOf<T, I>),
MessageCallDecodeFailed { source_chain: ChainId, id: BridgeMessageIdOf<T, I> },
/// The call from the message has been rejected by the call filter.
MessageCallRejected(ChainId, BridgeMessageIdOf<T, I>),
MessageCallRejected { source_chain: ChainId, id: BridgeMessageIdOf<T, I> },
/// The origin account has failed to pay fee for dispatching the message.
MessageDispatchPaymentFailed(
ChainId,
BridgeMessageIdOf<T, I>,
<T as frame_system::Config>::AccountId,
Weight,
),
MessageDispatchPaymentFailed {
source_chain: ChainId,
id: BridgeMessageIdOf<T, I>,
origin_account: <T as frame_system::Config>::AccountId,
weight: Weight,
},
/// Message has been dispatched with given result.
MessageDispatched(ChainId, BridgeMessageIdOf<T, I>, DispatchResult),
MessageDispatched {
source_chain: ChainId,
id: BridgeMessageIdOf<T, I>,
result: DispatchResult,
},
/// Phantom member, never used. Needed to handle multiple pallet instances.
_Dummy(PhantomData<I>),
_Dummy { phantom_member: PhantomData<I> },
}
}

Expand Down Expand Up @@ -167,7 +179,7 @@ impl<T: Config<I>, I: 'static> MessageDispatch<T::AccountId, T::BridgeMessageId>
source_chain,
id,
);
Self::deposit_event(Event::MessageRejected(source_chain, id));
Self::deposit_event(Event::MessageRejected { source_chain, id });
return MessageDispatchResult {
dispatch_result: false,
unspent_weight: 0,
Expand All @@ -192,12 +204,12 @@ impl<T: Config<I>, I: 'static> MessageDispatch<T::AccountId, T::BridgeMessageId>
expected_version,
message.spec_version,
);
Self::deposit_event(Event::MessageVersionSpecMismatch(
Self::deposit_event(Event::MessageVersionSpecMismatch {
source_chain,
id,
expected_version,
message.spec_version,
));
passed_version: message.spec_version,
});
return dispatch_result
}

Expand All @@ -211,7 +223,7 @@ impl<T: Config<I>, I: 'static> MessageDispatch<T::AccountId, T::BridgeMessageId>
source_chain,
id,
);
Self::deposit_event(Event::MessageCallDecodeFailed(source_chain, id));
Self::deposit_event(Event::MessageCallDecodeFailed { source_chain, id });
return dispatch_result
},
};
Expand Down Expand Up @@ -244,7 +256,7 @@ impl<T: Config<I>, I: 'static> MessageDispatch<T::AccountId, T::BridgeMessageId>
target_account,
target_signature,
);
Self::deposit_event(Event::MessageSignatureMismatch(source_chain, id));
Self::deposit_event(Event::MessageSignatureMismatch { source_chain, id });
return dispatch_result
}

Expand All @@ -269,7 +281,7 @@ impl<T: Config<I>, I: 'static> MessageDispatch<T::AccountId, T::BridgeMessageId>
id,
call,
);
Self::deposit_event(Event::MessageCallRejected(source_chain, id));
Self::deposit_event(Event::MessageCallRejected { source_chain, id });
return dispatch_result
}

Expand All @@ -287,12 +299,12 @@ impl<T: Config<I>, I: 'static> MessageDispatch<T::AccountId, T::BridgeMessageId>
expected_weight,
message.weight,
);
Self::deposit_event(Event::MessageWeightMismatch(
Self::deposit_event(Event::MessageWeightMismatch {
source_chain,
id,
expected_weight,
message.weight,
));
passed_weight: message.weight,
});
return dispatch_result
}

Expand All @@ -309,12 +321,12 @@ impl<T: Config<I>, I: 'static> MessageDispatch<T::AccountId, T::BridgeMessageId>
id,
message.weight,
);
Self::deposit_event(Event::MessageDispatchPaymentFailed(
Self::deposit_event(Event::MessageDispatchPaymentFailed {
source_chain,
id,
origin_account,
message.weight,
));
weight: message.weight,
});
return dispatch_result
}
dispatch_result.dispatch_fee_paid_during_dispatch = pay_dispatch_fee_at_target_chain;
Expand All @@ -339,11 +351,11 @@ impl<T: Config<I>, I: 'static> MessageDispatch<T::AccountId, T::BridgeMessageId>
result,
);

Self::deposit_event(Event::MessageDispatched(
Self::deposit_event(Event::MessageDispatched {
source_chain,
id,
result.map(drop).map_err(|e| e.error),
));
result: result.map(drop).map_err(|e| e.error),
});

dispatch_result
}
Expand Down Expand Up @@ -632,12 +644,12 @@ mod tests {
vec![EventRecord {
phase: Phase::Initialization,
event: Event::Dispatch(
call_dispatch::Event::<TestRuntime>::MessageVersionSpecMismatch(
SOURCE_CHAIN_ID,
call_dispatch::Event::<TestRuntime>::MessageVersionSpecMismatch {
source_chain: SOURCE_CHAIN_ID,
id,
TEST_SPEC_VERSION,
BAD_SPEC_VERSION
)
expected_version: TEST_SPEC_VERSION,
passed_version: BAD_SPEC_VERSION
}
),
topics: vec![],
}],
Expand Down Expand Up @@ -671,12 +683,12 @@ mod tests {
vec![EventRecord {
phase: Phase::Initialization,
event: Event::Dispatch(
call_dispatch::Event::<TestRuntime>::MessageWeightMismatch(
SOURCE_CHAIN_ID,
call_dispatch::Event::<TestRuntime>::MessageWeightMismatch {
source_chain: SOURCE_CHAIN_ID,
id,
call_weight,
7,
)
expected_weight: call_weight,
passed_weight: 7,
}
),
topics: vec![],
}],
Expand Down Expand Up @@ -712,10 +724,10 @@ mod tests {
vec![EventRecord {
phase: Phase::Initialization,
event: Event::Dispatch(
call_dispatch::Event::<TestRuntime>::MessageSignatureMismatch(
SOURCE_CHAIN_ID,
call_dispatch::Event::<TestRuntime>::MessageSignatureMismatch {
source_chain: SOURCE_CHAIN_ID,
id
)
}
),
topics: vec![],
}],
Expand All @@ -741,10 +753,10 @@ mod tests {
System::events(),
vec![EventRecord {
phase: Phase::Initialization,
event: Event::Dispatch(call_dispatch::Event::<TestRuntime>::MessageRejected(
SOURCE_CHAIN_ID,
event: Event::Dispatch(call_dispatch::Event::<TestRuntime>::MessageRejected {
source_chain: SOURCE_CHAIN_ID,
id
)),
}),
topics: vec![],
}],
);
Expand Down Expand Up @@ -778,10 +790,10 @@ mod tests {
vec![EventRecord {
phase: Phase::Initialization,
event: Event::Dispatch(
call_dispatch::Event::<TestRuntime>::MessageCallDecodeFailed(
SOURCE_CHAIN_ID,
call_dispatch::Event::<TestRuntime>::MessageCallDecodeFailed {
source_chain: SOURCE_CHAIN_ID,
id
)
}
),
topics: vec![],
}],
Expand Down Expand Up @@ -816,10 +828,10 @@ mod tests {
vec![EventRecord {
phase: Phase::Initialization,
event: Event::Dispatch(
call_dispatch::Event::<TestRuntime>::MessageCallRejected(
SOURCE_CHAIN_ID,
call_dispatch::Event::<TestRuntime>::MessageCallRejected {
source_chain: SOURCE_CHAIN_ID,
id
)
}
),
topics: vec![],
}],
Expand Down Expand Up @@ -851,15 +863,17 @@ mod tests {
vec![EventRecord {
phase: Phase::Initialization,
event: Event::Dispatch(
call_dispatch::Event::<TestRuntime>::MessageDispatchPaymentFailed(
SOURCE_CHAIN_ID,
call_dispatch::Event::<TestRuntime>::MessageDispatchPaymentFailed {
source_chain: SOURCE_CHAIN_ID,
id,
AccountIdConverter::convert(derive_account_id::<AccountId>(
origin_account: AccountIdConverter::convert(derive_account_id::<
AccountId,
>(
SOURCE_CHAIN_ID,
SourceAccount::Root
)),
TEST_WEIGHT,
)
weight: TEST_WEIGHT,
}
),
topics: vec![],
}],
Expand Down Expand Up @@ -892,11 +906,13 @@ mod tests {
System::events(),
vec![EventRecord {
phase: Phase::Initialization,
event: Event::Dispatch(call_dispatch::Event::<TestRuntime>::MessageDispatched(
SOURCE_CHAIN_ID,
id,
Ok(())
)),
event: Event::Dispatch(
call_dispatch::Event::<TestRuntime>::MessageDispatched {
source_chain: SOURCE_CHAIN_ID,
id,
result: Ok(())
}
),
topics: vec![],
}],
);
Expand Down Expand Up @@ -926,11 +942,13 @@ mod tests {
System::events(),
vec![EventRecord {
phase: Phase::Initialization,
event: Event::Dispatch(call_dispatch::Event::<TestRuntime>::MessageDispatched(
SOURCE_CHAIN_ID,
id,
Err(sp_runtime::DispatchError::BadOrigin)
)),
event: Event::Dispatch(
call_dispatch::Event::<TestRuntime>::MessageDispatched {
source_chain: SOURCE_CHAIN_ID,
id,
result: Err(sp_runtime::DispatchError::BadOrigin)
}
),
topics: vec![],
}],
);
Expand Down Expand Up @@ -960,11 +978,13 @@ mod tests {
System::events(),
vec![EventRecord {
phase: Phase::Initialization,
event: Event::Dispatch(call_dispatch::Event::<TestRuntime>::MessageDispatched(
SOURCE_CHAIN_ID,
id,
Ok(())
)),
event: Event::Dispatch(
call_dispatch::Event::<TestRuntime>::MessageDispatched {
source_chain: SOURCE_CHAIN_ID,
id,
result: Ok(())
}
),
topics: vec![],
}],
);
Expand Down Expand Up @@ -994,11 +1014,13 @@ mod tests {
System::events(),
vec![EventRecord {
phase: Phase::Initialization,
event: Event::Dispatch(call_dispatch::Event::<TestRuntime>::MessageDispatched(
SOURCE_CHAIN_ID,
id,
Ok(())
)),
event: Event::Dispatch(
call_dispatch::Event::<TestRuntime>::MessageDispatched {
source_chain: SOURCE_CHAIN_ID,
id,
result: Ok(())
}
),
topics: vec![],
}],
);
Expand Down Expand Up @@ -1028,11 +1050,13 @@ mod tests {
System::events(),
vec![EventRecord {
phase: Phase::Initialization,
event: Event::Dispatch(call_dispatch::Event::<TestRuntime>::MessageDispatched(
SOURCE_CHAIN_ID,
id,
Ok(())
)),
event: Event::Dispatch(
call_dispatch::Event::<TestRuntime>::MessageDispatched {
source_chain: SOURCE_CHAIN_ID,
id,
result: Ok(())
}
),
topics: vec![],
}],
);
Expand Down
Loading