Skip to main content

encode_v4_unsigned

Function encode_v4_unsigned 

Source
pub fn encode_v4_unsigned<CallData, Info, Resolver>(
    pallet_name: &str,
    call_name: &str,
    call_data: &CallData,
    info: &Info,
    type_resolver: &Resolver,
) -> Result<Vec<u8>, ExtrinsicEncodeError>
where CallData: EncodeAsFields, Resolver: TypeResolver<TypeId = Info::TypeId>, Info: ExtrinsicTypeInfo,
Expand description

Encode a V4 unsigned extrinsic (also known as an inherent).

This is the same as encode_v4_unsigned_to, but returns the encoded extrinsic as a Vec<u8>, rather than accepting a mutable output buffer.

ยงExample

use frame_decode::extrinsics::encode_v4_unsigned;
use frame_metadata::RuntimeMetadata;
use parity_scale_codec::Decode;

let metadata_bytes = std::fs::read("artifacts/metadata_10000000_9180.scale").unwrap();
let RuntimeMetadata::V14(metadata) = RuntimeMetadata::decode(&mut &*metadata_bytes).unwrap() else { return };

// Encode a call to Timestamp.set with an argument.
// The call_data type must implement `scale_encode::EncodeAsFields`.
let call_data = scale_value::value!({
    now: 1234567890u64,
});

let encoded = encode_v4_unsigned(
    "Timestamp",
    "set",
    &call_data,
    &metadata,
    &metadata.types,
).unwrap();