encode_storage_key

Function encode_storage_key 

Source
pub fn encode_storage_key<Info, Resolver, Keys>(
    pallet_name: &str,
    storage_entry: &str,
    keys: Keys,
    info: &Info,
    type_resolver: &Resolver,
) -> Result<Vec<u8>, StorageKeyEncodeError>
where Keys: IntoStorageKeys, Info: StorageTypeInfo, Info::TypeId: Clone + Debug, Resolver: TypeResolver<TypeId = Info::TypeId>,
Expand description

Encode a complete storage key for a given pallet and storage entry and a set of keys that are each able to be encoded via scale_encode::EncodeAsType.

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

ยงExample

use frame_decode::storage::encode_storage_key;
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 };

let account_id = [0u8; 32];

// System.Account needs only one key to point at a specific value; the account ID.
// We just fake an account ID for this example  by providing 32 0 bytes, but anything
// which would `scale_encode::EncodeAsType` into 32 bytes would work.
let encoded_key = encode_storage_key(
    "System",
    "Account",
    [account_id],
    &metadata,
    &metadata.types,
).unwrap();