frame-decode
Decode extrinsics and storage from Substrate based chains
0.18.1
6.4M downloads/mo
#3986 most downloaded on crates.io
paritytech/frame-decode
What this package is like to depend on
Last release 17 days ago
06 Aug 2026
Release timing varies
gaps range from 8 days to 5 months
Most releases are documented
notes for 28 of 35 stable releases
1 version withdrawn
withdrawn after publishing
2 years old
37 releases · first in 2024
16 releases in the last 12 months
see the full history below
Release timeline
37 releases · Sep 2024 to Aug 2026Releases
latest 37-
0.18.106 Aug 2026Release notes
Open source →Note:
0.18.0was published to crates.io by accident and yanked; this release takes its place.- Fix V5 signer payloads to hash the transaction extension version and call, followed by the extension values and implicits of only the extensions after the last authorization extension (such as
VerifyMultiSignature), matching FRAME's transaction extension pipeline semantics. - Add
TransactionExtension::is_authorization_extension(and the correspondingTransactionExtensionsmethod), which extensions likeVerifyMultiSignatureshould override to returntrue. It defaults tofalse. - Remove
TransactionExtension::encode_value_for_signer_payload_toandTransactionExtensions::encode_extension_value_for_signer_payload_to; extension values are now encoded identically in transactions and signer payloads, with authorization extensions excluded viais_authorization_extensioninstead. - Change
encode_v5_signer_payload_with_infoto require the transaction extension version needed to construct a valid V5 signer payload.
- Fix V5 signer payloads to hash the transaction extension version and call, followed by the extension values and implicits of only the extensions after the last authorization extension (such as
-
0.18.023 Feb 2026 withdrawnRelease notes
Open source →- Fix V5 signer payloads to hash the transaction extension version and call, followed by the extension values and implicits of only the extensions after the last authorization extension (such as
VerifyMultiSignature), matching FRAME's transaction extension pipeline semantics. - Add
TransactionExtension::is_authorization_extension(and the correspondingTransactionExtensionsmethod), which extensions likeVerifyMultiSignatureshould override to returntrue. It defaults tofalse. - Remove
TransactionExtension::encode_value_for_signer_payload_toandTransactionExtensions::encode_extension_value_for_signer_payload_to; extension values are now encoded identically in transactions and signer payloads, with authorization extensions excluded viais_authorization_extensioninstead. - Change
encode_v5_signer_payload_with_infoto require the transaction extension version needed to construct a valid V5 signer payload.
- Fix V5 signer payloads to hash the transaction extension version and call, followed by the extension values and implicits of only the extensions after the last authorization extension (such as
-
0.17.212 Mar 2026Release notes
Open source →- When encoding extrinsics, unknown Transaction Extensions that are
Option<SomeType>will now be accepted, and encoded as0u8(ie theNonevariant) by default if an extension with the corresponding name is not provided by the user. This allows transaction encoding to succeed in more cases, such as when a bunch of optional extensions exist for a chian, but still allows the user to properly implement and provide those extensions if they wish.
- When encoding extrinsics, unknown Transaction Extensions that are
-
0.17.123 Feb 2026 -
0.17.013 Feb 2026Release notes
Open source →- Add extrinsic encode methods in
frame_decode::extrinsics. This covers encoding v4 and v5 unsigned and signed extrinsics, new traits for providing transaction extensions, encoding v4 and v5 signer payloads and encoding call data.
- Add extrinsic encode methods in
-
0.17.0-beta.112 Feb 2026 pre-releaseNothing published for this version
-
0.16.103 Dec 2025Release notes
Open source →- Expose the
crate::helpers::ToTypeRegistrytrait so that inputs tocrate::helpers::type_registry_from_metadatacan be named. Make it sealed so that others cannot rely on it.
- Expose the
-
0.16.026 Nov 2025Release notes
Open source →- Add a flag to
StorageInfowhich can be set in order to tellframe-decodeto use the old version of V9 storage hashers when decoding storage keys. We need to manually toggle this flag when using metadata produced by runtimes prior to this change, which altered the storage hashers (and thus their encoding/decoding). Kusama prior to spec version 1032 is one such case when this needs to be toggled.
- Add a flag to
-
0.15.020 Nov 2025Release notes
Open source →- Update to
scale-info-legacy0.4.0. - Tweak
AccountId32types to be unnamed structs rather than tuple types, so that they get a path. - Add
legacy_types::from_bytesto convert provided bytes into aChainTypeRegistry, negating the need to includeserde_yamlor whatever in other crates.
- Update to
-
0.14.019 Nov 2025Release notes
Open source →- Add Kusama RC types capable of decoding historic blocks.
- Enforce that type definitions have sane variable names and use snake case rather than camel case for field names. If field names were relied on, then note that some of them will change as a result of this.
-
0.13.014 Nov 2025Release notes
Open source →- Separate the iterating over entries from the core
frame-decode*Infotraits; One only needs to implement*Infotraits to work withframe-decode; the other traits are convenience traits. - Make
Entrytype generic so that it can potentially be used in more places, expose it, and expose concrete versions from each module. - Expose Kusama RC and AH types (though keep these hidden until the types are more complete).
- Remove
helpers::list_storage_entries_any: it was a bit of an anomaly to have this and not a version for any other thing. Better to keep this upstream for now.
- Separate the iterating over entries from the core
-
0.12.112 Nov 2025Release notes
Open source →- Add
map_ids()functions toRuntimeApiInfo,StorageInfoandViewFunctionInfoto make translating theTypeIdparameter simpler. This adds a'staticbound toStorageInfotype IDs, but it is not expected that this will break anything as this is already the case foru32andLookupNameIDs (and is required in many other places).
- Add
-
0.12.010 Nov 2025Release notes
Open source →- Bump to scale-info-legacy 0.3.0.
- It's now easier to iterate over items handed back in
*Infotraits, and to do so in only one pallet/trait where that is applicable.
-
0.11.124 Oct 2025 -
0.11.021 Oct 2025Release notes
Open source →This release adds encode/decode logic for Runtime APIs, Constants and Custom Values, and removes some unused bits and pieces. Additionally we merge the trait functions for getting lists of entries into the main
*TypeInfotraits, and do a little renaming for consistency. See #46 for more information. -
0.10.029 Aug 2025Release notes
Open source →- Provide information about the default value in
StorageInfo, if one exists. This may be borrowed, and so adds a lifetime to theStorageInfotype (which.into_owned()can handle if necessary).
- Provide information about the default value in
-
0.9.024 Jul 2025Release notes
Open source →- Remove the
_legacyfunctions; just use the non suffixed versions which are identical. - Adds storage key encoding via
frame_decode::storage::encode_storage_key,frame_decode::storage::encode_storage_key_to, andframe_decode::storage::encode_storage_key_with_info_to, with supporting traits. - Rename
prefixtoencode_prefixto align with the above.
- Remove the
-
0.8.317 Jul 2025Release notes
Open source →- Make a couple of methods in
crate::extrinsicsreturnimpl ExactSizeIteratorrather thanimpl Iterator, enabling them to be used withscale_decode::DecodeAsFields.
- Make a couple of methods in
-
0.8.216 Jul 2025Release notes
Open source →- Make the
crate::extrinsics::NamedArgtype public, since it's in the public interface.`
- Make the
-
0.8.115 Jul 2025Release notes
Open source →- Expose a
crate::legacy_typesmodule which providescrate::legacy_types::polkadot::relay_chain()to access the relay chain types. This is gated behind the "legacy-types" feature which is disabled by default.
- Expose a
-
0.8.007 May 2025Release notes
Open source →- Support
frame-metadatav23. That stabilized V16 metadata, so we implement the relevant traits for that here to support it.
- Support
-
0.7.123 Apr 2025 -
0.7.005 Mar 2025 -
0.6.130 Jan 2025Release notes
Open source →- Fix a decoding error where the ranges end at 0 if an extrinsic is 0 bytes in length (#30)
-
0.6.018 Nov 2024Release notes
Open source →- Bump frame-metadata to 18.0, scale-decode to 0.16 and scale-value to 0.18 (latest versions at time of release).
-
0.5.131 Jan 2025Nothing published for this version
-
0.5.023 Oct 2024 -
0.4.022 Oct 2024Release notes
Open source →- Split
ExtrinsicTypeInfotrait to get signature and extensions info separately, and support being given an extension version in the latter. - Remove support for V5 signed extrinsics, which are no longer a thing (see #3685 for context).
- Split
-
0.3.030 Sep 2024Release notes
Open source →- Fix
extrinsic.call_range()andextensions.range()functions, and clarify descriptions. - Add
extrinsic.call_args_range()to return the call data arguments.
- Fix
-
0.2.030 Sep 2024Release notes
Open source →- Consistify helper functions; have
list_storage_entries{_any}andtype_registry_from_metadata{_any}, where theanyversions take aRuntimeMetadataenum and the others take the specific metadata versions contained within. - Improve the top level docs.
- Consistify helper functions; have
-
0.1.027 Sep 2024 -
0.0.726 Sep 2024Nothing published for this version
-
0.0.626 Sep 2024Nothing published for this version
-
0.0.525 Sep 2024Nothing published for this version
-
0.0.423 Sep 2024Nothing published for this version
-
0.0.323 Sep 2024Nothing published for this version
-
0.0.120 Sep 2024Nothing published for this version