Skip to content

chore: update subxt to 0.51.0 and drop the v4 extension version workaround - #415

Merged
TarikGul merged 1 commit into
mainfrom
tg-subxt-0.51
Sep 17, 2026
Merged

TarikGul merged 1 commit into
mainfrom
tg-subxt-0.51

Conversation

@TarikGul

@TarikGul TarikGul commented Sep 17, 2026 •

Copy link
Copy Markdown
Member

Closes: nothing, follow up to #406.

Description

subxt 0.51.0 carries the upstream fix from paritytech/subxt#2277, so extrinsic_extension_info(None) now resolves to transaction extension version 0 for a v4 extrinsic rather than the newest version in the metadata. V4CompatMetadata existed only to correct that, so it goes.

frame-decode moves to 0.18.1 alongside it. subxt 0.51 builds against that version, and the ExtrinsicTypeInfo implementation we decode through has to come from the same one.

0.51.0 is a breaking release upstream, but only for signing: DefaultTransactionExtensions and DefaultExtrinsicParams became structs. This service never builds or signs a transaction, so nothing here needed changing.

Changes

DecodedExtrinsic and fetch_block_body stay. They were never about the extension version. subxt still keeps the raw bytes of each block body entry private, and that is what lets us report an undecodable extrinsic at its own index and log the bytes that failed.

The test that pinned the old upstream behaviour now asserts the fix instead, so a regression on some future bump fails there rather than quietly dropping extrinsics from block responses again.

Blocks 20487777 and 20492483 still return all their extrinsics with the workaround removed, which is the thing this needed to prove.

…round

subxt 0.51.0 carries the upstream fix from paritytech/subxt#2277, so
`extrinsic_extension_info(None)` now resolves to transaction extension
version 0 for v4 extrinsics rather than the newest version in the
metadata. `V4CompatMetadata` existed only to correct that, so it goes.

frame-decode moves to 0.18.1 alongside, since subxt 0.51 builds against
it and the `ExtrinsicTypeInfo` implementation we decode through has to
come from the same version.

`DecodedExtrinsic` and `fetch_block_body` stay. They are not about the
extension version; subxt still keeps the raw bytes of each block body
entry private, which is what lets us report an undecodable extrinsic at
its own index and log the bytes that failed.

The test that pinned the old upstream behaviour now asserts the fix
instead, so a regression on a future bump fails here rather than quietly
dropping extrinsics from block responses.
@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedcargo/​subxt@​0.50.2 ⏵ 0.51.0601009410090
Updatedcargo/​subxt-rpcs@​0.50.2 ⏵ 0.51.0821009310090
Updatedcargo/​subxt-metadata@​0.50.2 ⏵ 0.51.01001009410090
Updatedcargo/​frame-decode@​0.17.1 ⏵ 0.18.1100100100100100

View full report

@bee344 bee344 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lgtm

@TarikGul
TarikGul merged commit 87bb383 into main Sep 17, 2026
14 checks passed
@TarikGul
TarikGul deleted the tg-subxt-0.51 branch September 17, 2026 15:43
@TarikGul TarikGul mentioned this pull request Sep 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants