diff --git a/polkadot/node/primitives/src/lib.rs b/polkadot/node/primitives/src/lib.rs index 5fb3f49308fb1056c16fef1a638003cc9fd4efaa..6c4e63861c1a0d826315474fd2267e6bec12ca51 100644 --- a/polkadot/node/primitives/src/lib.rs +++ b/polkadot/node/primitives/src/lib.rs @@ -85,6 +85,12 @@ impl Statement { } } +impl From<&'_ Statement> for CompactStatement { + fn from(stmt: &Statement) -> Self { + stmt.to_compact() + } +} + impl EncodeAs<CompactStatement> for Statement { fn encode_as(&self) -> Vec<u8> { self.to_compact().encode() diff --git a/polkadot/primitives/src/v0.rs b/polkadot/primitives/src/v0.rs index 7ce060c528a8fe7953b3d5c74398c26fb8db64fe..348b5ad4b1d474b9ab0f0c6f6a746c869a0a28b0 100644 --- a/polkadot/primitives/src/v0.rs +++ b/polkadot/primitives/src/v0.rs @@ -921,6 +921,16 @@ impl<Payload: EncodeAs<RealPayload>, RealPayload: Encode> Signed<Payload, RealPa pub fn into_payload(self) -> Payload { self.payload } + + /// Convert `Payload` into `RealPayload`. + pub fn convert_payload(&self) -> Signed<RealPayload> where for<'a> &'a Payload: Into<RealPayload> { + Signed { + signature: self.signature.clone(), + validator_index: self.validator_index, + payload: self.payload().into(), + real_payload: sp_std::marker::PhantomData, + } + } } /// Custom validity errors used in Polkadot while validating transactions.