* Add and use subxt-signer crate for WASM compatible signing
* cargo fmt
* dev keypairs already references
* WIP fix various breakages
* re-jig features to be simpler and various test fixes etc
* doc and web fix
* fix various bits and pieces
* fix a test I broke
* dev-deps can't be linked to in docs, hrmph
* cargo fmt
* another doc link
* document the subxt_signer crate more thoroughly
* move feature flag for consistency
* more docs, no default subxt feature flag on signer, update release instrs
* Add missing license header
* unwrap_inner => into_inner
* extend a test a little to better check derive junctions
* note more clearly that the crypto bits come from sp_core::crypto
* metadata: Implement MetadataHashable for deterministic hashing
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Hash `scale_info::Field`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Hash `scale_info::Variant`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Hash `scale_info::TypeDef`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Hash pallet metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Avoid data representation collision via unique identifiers
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Finalize hashing on recursive types
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Cache recursive calls
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Move `MetadataHashable` to codegen to avoid cyclic dependency
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Add pallet unique hash
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Wrap metadata as owned
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Use MetadataHashable wrapper for clients
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Generate runtime pallet uid from metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Validate metadata compatibility at the pallet level
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update polkadot.rs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Modify examples and tests for the new API
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Implement metadata uid
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update polkadot with TryFrom implementation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* client: Change `to_runtime_api` to reflect TryFrom changes
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* client: Skip full metadata validation option
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Add option to skip pallet validation for TransactionApi
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Add option to skip pallet validation for StorageApi
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update polkadot.rs with ability to skip pallet validation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Change `MetadataHashable` to per function implementation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Use metadata hashes functions
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Use metadata hashes functions
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Make `get_type_uid` private
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen, subxt: Rename metadata functions `*_uid` to `*_hash`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Update `get_field_hash` to use `codec::Encode`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Update polkadot.rs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen, subxt: Move metadata check from client to subxt::Metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen, subxt: Rename metadata check functions to follow `*_hash` naming
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Update polkadot.rs to reflect naming changes
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Use `encode_to` for metadata generation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Update polkadot.rs to reflect `encode_to` changes
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Specific name for visited set
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Provide cache to hashing functions
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Compute metadata hash by sorted pallets
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Get extrinsic hash
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Extend metadata hash with extrinsic and metadata type
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Add cache as metadata parameter
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen, subxt: Update metadata hash to use cache
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Implement Default trait for MetadataHasherCache
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Add cache for pallets
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Move functionality to metadata crate
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen, subxt: Use subxt-metadata crate
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Remove metdata hashing functionality
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Add documentation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Fix vector capacity to include extrinisc and type hash
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Add empty CLI
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata-cli: Fetch metadata from substrate nodes
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata-cli: Log metadata hashes of provided nodes
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata-cli: Group compatible nodes by metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata-cli: Simplify hash map insertion
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata-cli: Move full metadata check to function
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata-cli: Group metadata validation at the pallet level
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Persist metadata cache
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Move compatibility cli from subxt-metadata to subxt-cli
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Remove cli from subxt-metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Fix clippy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Fix compatible metadata when pallets are registered in different order
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* tests: Handle result of pallet hashing
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Remove type cache for deterministic hashing
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Add test assets from `substrate-node-template` tag `polkadot-v0.9.17`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata-tests: Check cache hashing for Balances pallet
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Fix `get_type_hash` clippy issue
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata-tests: Compare one time cache with persistent cache
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata-test: Check metadata hash populates cache for pallets
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata-tests: Simplify `cache_deterministic_hash` test
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata-tests: Check deterministic metadata for different order pallets
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Fix clippy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Implement TransactionApiUnchecked for skipping pallet validation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Implement StorageApiUnchecked for skipping pallet validation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Remove skip_pallet_validation boolean
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Implement ClientUnchecked for skipping metadata validation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update polkadot.rs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update examples of rpc_call to skip metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Remove heck dependency
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Add pallet name as an identifier for pallet hashing
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Implement MetadataHashDetails
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Adjust testing to `MetadataHashDetails` interface
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Remove extra `pallet_name`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Update polkadot.rs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Fix clippy issue
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Change StorageApi to support `_unchecked` methods
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Change TransactionApi to support `_unchecked` methods
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Switch back from `TryFrom` to `From` for `subxt::Client`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen, subxt: Remove `ClientUnchecked`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Expose `validate_metadata` as validation of compatibility method
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Update to the new interface
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Update test integration to latest interface
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Update polkadot.rs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Check different pallet index order
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Check recursive type hashing
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Check recursive types registered in different order
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Fix recursive types warning
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Remove test assets
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Extend tests to verify cached pallet values
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Add metadata compatiblity example
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Revert balance_transfer to initial form
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Add ConstantsApi metadata check
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* tests: Modify tests to accomodate ConstantsApi changes
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Modify verified version
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Generate polkadot.rs from `0.9.18-4542a603cc-aarch64-macos`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Update polkadot_metadata.scale from `0.9.18-4542a603cc-aarch64-macos`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Update documentation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* tests: Modify default pallet usage
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Remove hex dependency
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Add MetadataTestType to capture complex types
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Update tests to use complex types
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Check metadata correctness via extending pallets
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Extend pallet hash with Events
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Extend pallet hash with constants
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Extend pallet hash with error
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Extend metadata compatibiliy with StorageApi and ConstantsApi
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Modify comments and documentation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Benchmarks for full validation and pallet validation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/benches: Fix clippy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Hash metadata just by inspecting the provided pallets
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Make pallets generic over T for `AsRef<str>`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Expose the name of the pallets composing the metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt/tests: Update polkadot.rs with pallets name
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Obtain metadata hash only by inspecting pallets
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen,subxt: Extend the metadata hash to utilize just pallets
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt/tests: Update polkadot.rs with client metadata has per pallet
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Test `get_metadata_per_pallet_hash` correctness
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Fix clippy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/benches: Fix decode of metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Fix clippy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* [static metadata] validate storage, calls and constants per call (#507)
* validate storage, calls and constants per call
* fix typo
* cache per-thing hashing, move an Arc, remove some unused bits
* create hash_cache to simplify metadata call/constant/storage caching
* simplify/robustify the caching logic to help prevent mismatch between get and set
* cargo fmt
* Fix clippy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* bench the per-call metadata functions
* metadata: Add test for `node_template_runtime_variant`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* ensure criteron cli opts work
* group benchmarks and avoid unwrap issues
* metadata: Check template runtime for handling the pallet swap order case
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Remove debug logs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Optimise by removing field's name and type_name and type's path
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Refactor `get_type_hash` to break recursion earlier
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Add tests for `hash_cache`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Add tests for checking Metadata Inner cache
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Check semantic changes inside enum and struct fields
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Add enums named differently with compatible semantic meaning
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Guard testing of release versions for `node_template_runtime`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Improve documentation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update polkadot.rs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/tests: Manually construct type of `node_template_runtimeL::Call`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* no more special Call handling, avoid a little cloning, and actually sort by name
* remove unused deps and fmt
* RuntimeMetadataLastVersion => RuntimeMetadataV14
* remove a bunch of allocations in the metadata hashing, speed up from ~17ms to ~5ms
* update release docs to release metadata crate too
* subxt: Remove codegen dependency
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Replace std RwLock with parking_lot
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt/tests: Add ws address to `TestNodeProcess`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt/tests: Add metadata validation integration test
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Allow setting metadata on the ClientBuilder
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt/tests: Check incompatible metadatas
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Fix constant hashing for deterministic output
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt/tests: Check metadata validation for constants
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt/tests: Test validation for calls
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt/tests: Test validation for storage
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Expose `set_metadata` for testing only
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Guard metadata tests under integration-tests
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Co-authored-by: James Wilson <james@jsdw.me>
* move into subfolder step 1
* Make folders a workspace again
* Move examples into their own workspace crate to make them more visible and easier to run
* clippy fix
* newline
* tweak releasing steps for folder move
* reference exampels more clearly in top level readme
* Add release checklist
* Subxt, not Soketto
* more Soketto -> Subxt fixes
* Signed tags and note about incrementing version of each crate
Co-authored-by: David <dvdplm@gmail.com>
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
* Add command to publish crates in required order
* undo test breakages and codegen first since macro depends on it
* Update RELEASING.md
Co-authored-by: Andrew Jones <ascjones@gmail.com>
* sleep 10, and text niggles
Co-authored-by: David <dvdplm@gmail.com>
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
Co-authored-by: Andrew Jones <ascjones@gmail.com>