paritytech / paritytech/web3-storage
Migration: subxt::dynamic → typed storage_subxt bindings
@danielbui12 is already working on this.
Since Jun 26, 2026.
- Dominant language
- Rust
- Stars
- 12
- Forks
- 3
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 33
Description
Follow-up https://github.com/paritytech/web3-storage/pull/207#discussion_r3465733093
The storage-subxt crate (storage-subxt/) contains pre-generated, fully-typed Rust bindings for the parachain runtime, produced by subxt-cli from metadata/storage_paseo_runtime.scale. These bindings provide:
- Typed transactions via
runtime::tx().storage_provider().*(),runtime::tx().drive_registry().*(), etc. - Typed storage queries via
runtime::storage().storage_provider().*(), etc. - Typed runtime API calls via
runtime::apis().storage_provider_api().*(). - Generated runtime types under
runtime_types::*— the canonical source of truth for all on-chain structs (e.g.pallet_storage_provider::pallet::ProviderInfo,ProviderSettings,ProviderStats,BoundedVec).
Before this work, several parts of the codebase used subxt::dynamic::tx(...) and subxt::dynamic::storage(...) with manually constructed ScaleValue trees, and declared local hand-rolled structs that duplicated fields already present in the generated types.
TODO:
Rust clients: client/*, storage-interfaces/s3/client/src/substrate.rs, storage-interfaces/file-system/client/src/substrate.rs
Use storage-subxt as trusted type definition
- Eliminate
subxt::dynamiccalls - Replace hand-rolled types with generated equivalents
- Replace
sp-runtimewithsubxt_core,storage_subxt
Note: The HTTP /info response from provider-node changed shape as a side effect of this migration. Any external HTTP client consuming /info must be updated.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.