diff --git a/polkadot/node/primitives/src/lib.rs b/polkadot/node/primitives/src/lib.rs index 5fb3f49308..6c4e63861c 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 for Statement { fn encode_as(&self) -> Vec { self.to_compact().encode() diff --git a/polkadot/primitives/src/v0.rs b/polkadot/primitives/src/v0.rs index 7ce060c528..348b5ad4b1 100644 --- a/polkadot/primitives/src/v0.rs +++ b/polkadot/primitives/src/v0.rs @@ -921,6 +921,16 @@ impl, RealPayload: Encode> Signed Payload { self.payload } + + /// Convert `Payload` into `RealPayload`. + pub fn convert_payload(&self) -> Signed where for<'a> &'a Payload: Into { + 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.