* WIP new Metadata type
* Finish basic Metadata impl inc hashing and validation
* remove caching from metadata; can add that higher up
* remove caches
* update retain to use Metadata
* clippy fixes
* update codegen to use Metadata
* clippy
* WIP fixing subxt lib
* WIP fixing tests, rebuild artifacts, fix OrderedMap::retain
* get --all-targets compiling
* move DispatchError type lookup back to being optional
* cargo clippy
* fix docs
* re-use VariantIndex to get variants
* add docs and enforce docs on metadata crate
* fix docs
* add test and fix docs
* cargo fmt
* address review comments
* update lockfiles
* ExactSizeIter so we can ask for len() of things (and hopefully soon is_empty()
* add cli command to explore metadata
* fmt and clippy
* Bump serde from 1.0.160 to 1.0.162 (#948)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.160 to 1.0.162.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.160...1.0.162)
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* extrinsics: Decode extrinsics from blocks (#929)
* Update polkadot.scale
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* extrinsics: Add extrinsics client
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* extrinsics: Decode extrinsics
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Add extrinsic error
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* blocks: Expose extrinsics
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Fetch and decode block extrinsics
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Fix clippy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* extrinsics: Fetch pallet and variant index
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Move extrinsics on the subxt::blocks
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* example: Adjust example
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Collect ExtrinsicMetadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Implement StaticExtrinsic for the calls
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Adjust examples
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Add root level Call enum
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Adjust testing
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Add new decode interface
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Merge ExtrinsicError with BlockError
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Find first extrinsic
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Move code to extrinsic_types
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Add Extrinsic struct
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Adjust examples
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* test: Decode extinsics
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* extrinsics/test: Add fake metadata for static decoding
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* extrinsics/test: Decode from insufficient bytes
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* extrinsics/test: Check unsupported versions
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* extrinsics/test: Statically decode to root and pallet enums
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* extrinsics/tests: Remove clones
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* blocks: Fetch block body inline
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* blocks: Rename ExtrinsicIds to ExtrinsicPartTypeIds
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* extrinsics/test: Check decode as_extrinsic
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* blocks: Remove InsufficientData error
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* blocks: Return error from extrinsic_metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* extrinsics: Postpone decoding of call bytes
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata_type: Rename variables
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Adjust calls path for example and tests
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Remove traces
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* book: Add extrinsics documentation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* book: Improve extrinsics docs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
---------
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Co-authored-by: James Wilson <james@jsdw.me>
* change doc comments
* add constants exploration
* add storage access interface but not done yet
* add storage exploration
* formatting
* remove dbg
* some small tweaks
* fix formatting and scale value for storage
* split up files, sort entries, change formatting
* fmt and clippy fix
* fix minor formatting issue
* implement suggestions
* implement other suggestion, fix bug
---------
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexandru Vasile <60601340+lexnv@users.noreply.github.com>
Co-authored-by: James Wilson <james@jsdw.me>
* Have a pass over metadata validation
* trait metadata; fold instead of map+for
* remove a couple of other XORs, so all uses of it are now commented
* appease clippy
* Update frame-metadata to v15.1.0
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Enable V15 unstable metadata in frame-metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Move validation hashing to dedicated file
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Use sp-metadata-ir from substrate to work with metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Revert using sp-metadata-ir in favor of conversion to v15
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Convert v14 to v15
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Use v15 for validation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Use v15 for codegen
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/bench: Use v15
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Adjust to v15 metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Adjust testing
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Improve documentation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* force CI
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* rpc: Fetch metadata at version
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* artifacts: Update polkadot.scale from commit 6dc9e84dde2
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Fetch V15 using the new API
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Add runtime API interface
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Hash runtime API metadata for validation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Extract runtime API metadata wrapper from subxt::Metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Adjust hashing cache to reflect root+item keys
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* rpc: Add raw state_call API method
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* runtime_api: Add payload with static and dynamic variants
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Allow payloads to call into the runtime
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Add example to make a runtime API call both static and dynamic
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update polkadot.rs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Simplify client fetching
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Address feedback and fallback to old API if needed
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* runtime_api: Make mutability conditional on input params
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Regenerate polkadot.rs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Retain only pallets without runtime API info
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Retry via `Metadata_metadata` without conversion
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* payload: Remove `Decode` and change validation fn
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Retain runtime API types
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Runtime APIs documentation based on flag
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update examples/examples/custom_metadata_url.rs
Co-authored-by: James Wilson <james@jsdw.me>
* Update artifacts from polkadot-a6cfdb16e9
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update polkadot.rs with polkadot-a6cfdb16e9
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Generate input structures for runtime API
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* runtime_api: Remove the static paylaod and use single impl
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Fetch account nonce
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* testing: Adjust build script to fetch latest metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* testing: Check account nonce from runtime API
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update cargo.lock
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Fix doc generation for runtime types
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Rename `inputs` runtime calls module to `types`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Generate Calls structs inside the types module
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* testing: Check Alice account nonce before submitting the tx
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Add metadata version option flag supporting v14 and unstable
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Specify version to fetch
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Fallback to fetching latest stable metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Add unstable-metadata feature to fetch the latest
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* RuntimeVersion with Latest and Version(u32)
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update polkadot.rs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Adjust fetch_metadata to inspect version list
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* testing: Adjust metadata to metadata_legacy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* events: Adjust docs to use metadata_legacy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* have a pass over fetch_metadata
* cargo fmt
* Option<String> when fetch metadata via latest API
* clippy
* fmt
* cli: Use the MetadataVersion from codegen
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Specify latest as default for MetadataVersion
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Remove version from metadata and use the one from file_or_url
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Fix clippy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Decode metadata independently for different RPC calls
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
---------
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Co-authored-by: James Wilson <james@jsdw.me>
* Move all deps to workspace toml
* cargo fmt and codec 3.4, removing now unneeded 'full' feature
* add wasm-tests to workspace and fix subxt inheritng
* cargo fmt
* wasm-test thing can't be in workspace so revert that
* remove unwanted target dir from wasm-tests
* Update cargo.lock to use scale-info v2.4.0
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Retain only a subset of the metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Generate top level Event
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Only retain DispatchError
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Export just the retain method
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Retain pallets
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Do not include extrinsic metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* retain: Fix clippy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* test-runtime: Generate per pallet metadata and rs file
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* ui-tests: Check per metadata generated files
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Revert "test-runtime: Generate per pallet metadata and rs file"
This reverts commit 725a2e5f8339a795892dbbd2df19e49330ae3a9b.
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* ui-tests: Adjust path to metadata file
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* ui-tests: Change drop order to keep `PalletMetadata` around
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update metadata/src/retain.rs
Co-authored-by: James Wilson <james@jsdw.me>
* Address feedback
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* retain: Keep extrinsic type
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Introduce `MetadataSource`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Use `MetadataSource` helper
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Use `FileOrUrl` flatten command argument
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* retain: Do not include generic type params in retained metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Adjust subxt to scale-info v2.5.0
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update scaleinfo to v2.5.0
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Remove deprecated fn
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* testing: Fix clippy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* benches: Use inner fields of scale info
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* address nits, and strip RuntimeCall type instead of trying to filter out use of it for better overall wins/clarity
* fix UI test
* move utils out of commands folder and fix clippy etc
* address nits
---------
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Co-authored-by: James Wilson <james@jsdw.me>
* Add Static type which defers to Encode/Decode and impls EncodeAsType/DecodeAsType
* rename to static_type and impl Deref/Mut
* Improve type substitution in codegen so that concrete types can be swapped in
* A couple of comment tweaks and no need for a macro export
* Extend type substitution logic to work recursively on destination type
* cargo fmt
* Fix a couple of comments
* update ui test outpuot
* Add docs and missing_docs lint
* Add test for replacing multiple of Ident
* Update codegen/src/error.rs
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
* update copyright year and fix ui test
* simplify another error
---------
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
* chore: use workspace inheritance for package info
* add rust-version field into workspace package
* .workspace = true
---------
Co-authored-by: James Wilson <james@jsdw.me>
* feat!: Allow for remapping type parameters in type substitutions
* chore: cargo fmt
* chore: cargo clippy
* chore: Remove some old code
* a little tidy
* address comment nit
Co-authored-by: James Wilson <james@jsdw.me>
* get started
* make it work again
* make it compile again
* Use async-wasm-feature of jsonrpsee from the master branch
* Ensure we enable JS feature of getrandom for the wasm target
* Update subxt/src/lib.rs
* update jsonrpsee
* fix CI
* cargo fmt
* fix wasm test
* fix grumbles
* exclude wasm-tests from workspace
To avoid leaking `jsonrpsee-web` feature into the workspace
Co-authored-by: Igor Matuszewski <xanewok@gmail.com>
* Allow metadata to be pulled directly from a node with runtime_metadata_url
* Update docs
* https too, and abstract out block_on fn
* tweak a comment in the example