Commit Graph

329 Commits

Author SHA1 Message Date
James Wilson b3317c5b77 Add DefaultParams to allow more transaction extensions to be used when calling _default() methods (#1979)
* Add DefaultParams to allow more transaction extensions to be used when calling _default() methods

* More imple for AnyOf/DefaultParams

* Prevent T param being used twice in macro

* clippy
2025-04-04 10:08:26 +01:00
James Wilson 06e658cd4b Allow submitting transactions ignoring follow events (#1962) 2025-03-14 16:08:38 +00:00
James Wilson 16c50846c1 Map finality timeout to Dropped instead of Invalid (#1953) 2025-03-11 15:49:52 +01:00
James Wilson b6b9ac65c7 Support constructing and submitting V5 transactions (#1931)
* TransactionExtensions basic support for V5 VerifySignature and renames

* WIP: subxt-core v5 transaction support

* Subxt to support V5 extrinsics

* WIP tests failing with wsm trap error

* Actually encode mortality to fix tx encode issue

* fmt

* rename to sign_with_account_and_signature

* Add explicit methods for v4 and v5 ext construction

* clippy

* fix wasm example and no mut self where not needed

* fix doc example

* another doc fix

* Add tests for tx encoding and fix v5 encode issue

* add copyright and todo

* refactor APIs to have clear v4/v5 split in core and slightly nicer split in subxt proper

* rename Partial/SubmittableExtrinsic to *Transaction

* Remove SignerT::address since it's not needed

* doc fixes

* fmt

* doc fixes

* Fix comment number

* Clarify panic behaviour of inject_signature

* fmt
2025-03-11 11:14:27 +00:00
James Wilson 49c66a0fd5 Wrap the subxt::events::Events type to avoid exposing subxt_core errors and types unnecessarily (#1948)
* Wrap the subxt::events::Events type to avoid exposing subxt_core errors and types unnecessarily (#1947)

* Actually import module and fix issues

* Remove a couple of unnecessary conversions now

* Test
2025-03-06 16:30:47 +00:00
James Wilson e59eef21b4 Allow transaction timeout in ChainheadBackend to be configured (#1943)
* Add configurable transaction timeout to ChainheadBackend

* u64, not usize

* Actually, stick with usize
2025-03-05 10:43:54 +00:00
James Wilson 037d5178b8 Document generating interface from Runtime WASM and change feature to runtime-wasm-path (#1936)
* runtime_metadata_path => runtime_wasm_path and document this feature

* fix doc
2025-03-03 12:07:48 +00:00
Alex Bean 72f8e0372e refactor: make ExtrinsicEvents::new public for external access (#1933) 2025-02-25 14:28:01 +00:00
wgyt 396762510a update copyright year (#1924)
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2025-02-24 16:07:29 +00:00
Niklas Adolfsson 69ce6d726f deps: remove polkadot-sdk umbrella crate (#1926)
* deps: get rid of polkadot-sdk umbrella crate

* fix nits

* Update subxt/src/backend/mod.rs

* Update subxt/src/events/events_client.rs

* Update metadata/src/utils/validation.rs

* cargo clippy fix

* fix ui tests
2025-02-24 12:38:21 +01:00
James Wilson 816a86423b Split RPCs into a separate crate (#1910)
* WIP extract RPCs into separate crate

* fmt

* Fix test

* Remove unused deps

* fix import

* WIP: Fix up errors and most tests. Start extracintg some tests/code to rpc crate

* MockRpcClient sync or async

* MockRpcClient only async but better type inference

* WIP MockRpcClient FnMuts and some test updates to use it

* Get all but one test working with new MockRpcClient

* WIP trying to debug failure

* WIP, Tests mostly fixed, need to add back oen more

* Get mock RPC tests working

* fmt

* fmt

* Clippy and comment tweak

* update CI to explicitly check subxt-rpc features

* clippy

* small tweaks after pass over

* feature flag rename

* update some docs

* Fix some examples

* fmt

* Fix features flags to work with web/wasm32

* Fix unused dep warning

* explicit targets in wasm CI

* Add better crate level docs

* fmt

* Address review comments

* Comment out flaky test for now and make more obvious how similar POlkadot and Substrate configs are

* Not a doc comment

* Remove unused imports
2025-02-18 12:07:00 +00:00
James Wilson d924ece39a Don't double hash: use the same hash in ExtrinsicDetails and ExtrinsicDetails (#1917)
* Don't double hash: use the same hash in ExtrinsicDetails and ExtrinsicEvents

* clippy
2025-02-03 17:47:31 +00:00
Niklas Adolfsson 39507c7eb4 fix: don't wrap rpc error in DisconnectedWillReconnect in reconnecting rpc client (#1904)
* fix: don't wrap rpc err in DisconnectedWillRecon

* add clarifying comment

* fix no-std-test build

* fix no-std-test build v2
2025-01-24 14:18:12 +01:00
Niklas Adolfsson f363f77a60 chore: fix clippy lints (#1882) 2024-12-10 13:08:40 +01:00
Niklas Adolfsson f5e9ce0d2c remove substrate compat (#1850)
* remove substrate compat

* add hacky example

* simplify substrate-compat example

* simplify substrate-compat example

* cargo fmt

* fix build

* add more examples

* fix nit

* fix test build

* Update subxt/examples/substrate_compat_signer.rs

Co-authored-by: James Wilson <james@jsdw.me>

* keep only polkadot signer example

* remove more substrate compat related stuff

* fix example

* link to substrate signer example in book

* Update subxt/src/book/usage/transactions.rs

* Update subxt/src/book/usage/transactions.rs

* address grumbles

* fix nits

---------

Co-authored-by: James Wilson <james@jsdw.me>
2024-11-27 16:46:38 +01:00
James Wilson 057c847474 Fix unstable-light-client + ChainHeadBackend tx events (#1865)
* Fix unstable-light-client + ChainHeadBackend tx events

* Add note that Broadcasted event should no longer be returned at all

* fmt
2024-11-13 15:26:11 +01:00
James Wilson f861adf5f0 When native feature is enabled, we need polkadot-sdk/std for eg examples to work (#1864) 2024-11-13 10:59:01 +00:00
paritytech-subxt-pr-maker[bot] cb9571d7a6 Update Artifacts (auto-generated) (#1860)
* Update Artifacts (auto-generated)

* fix assethub example

* update Cargo.lock for wasm tests

* cargo fmt

* fix subxt cli tests

* disable failing wasm tests

* add issue link for disabled test

---------

Co-authored-by: niklasad1 <14157425+niklasad1@users.noreply.github.com>
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2024-11-11 18:34:02 +01:00
PG Herveou 251a925da2 fix (#1843) 2024-10-26 02:26:43 +02:00
Niklas Adolfsson dc0795b3b9 move fetch metadata to a separate crate subxt_utils_fetchmetadata (#1829)
* macros: feature-gate jsonrpsee/fetch metadata url

* make CI happy

* Update codegen/src/error.rs

* extract `fetch-metdata` to separate crate

* add missing license headers

* introduce subxt-utils crate

* add missing files

* codegen: remove unused hex crate

* fix test build

* move subxt_utils -> subxt_utils_fetchmetadata

* cargo fmt

* runtime-path -> runtime-metadata-path

* Update utils/fetch-metadata/src/lib.rs
2024-10-24 14:45:39 +01:00
James Wilson 15cf58f723 Make it clearer which extrinsic failed to decode (#1835)
* Add an extrinsic index to decode errors so that we know which extrinsic failed

* Fix subxt::BlockError to align with subxt_core::BlockError

---------

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2024-10-23 18:03:32 +02:00
Niklas Adolfsson 9b5523e4b0 chore(deps): bump scale family crates, primitive-types and impl-serde (#1832)
* chore(deps): bump scale-encode and scale-decode

* Update Cargo.toml

* Update Cargo.toml

* Update Cargo.toml

* update Cargo.lock

* bump scale-typegen

* use primitive_types::H256

* cargo fmt

* remove old darling hack
2024-10-22 19:23:38 +02:00
Niklas Adolfsson 418bd88e62 chore(deps): replace instant with web-time (#1830)
* chore(deps): replace `instant` with `web-time`

Close https://github.com/paritytech/subxt/issues/1597

* fix build

* fix build v2

* cargo fmt
2024-10-22 15:54:54 +02:00
Niklas Adolfsson 0e86993cd7 deps: use polkadot-sdk umbrella crate (#1786)
* deps: unify usage of polkadot-sdk crates

* cargo fmt

* fix macro crate

* make tests compile

* fix more nits

* fix doc tests

* fix more nits

* more nits

* core: remove polkadot-sdk/std

* cargo fmt

* remove polkadot-sdk/std by default

* Update metadata/Cargo.toml

* remove more std

* Update Cargo.toml
2024-10-11 14:19:11 +02:00
Niklas Adolfsson 5bf1756394 chainhead backend: notify subscribers when the backend is closed (#1817)
* FollowEvent::stop include backend closed or not

* simplify code: enum variant BackendClosed

* check both stopped and backend closed

* simplify hacky code

* remove old test

* Update subxt/src/backend/chain_head/follow_stream_driver.rs

* Update subxt/src/backend/chain_head/mod.rs

* Update subxt/src/backend/chain_head/mod.rs

* Update subxt/src/backend/chain_head/follow_stream_driver.rs
2024-10-11 11:14:50 +02:00
Niklas Adolfsson 8f3c0b44fb stabilize reconnecting-rpc-client (#1803)
* stabilize reconnecting-rpc-client

* fix build

* remove missed unstable stuff
2024-10-03 20:03:16 +02:00
Niklas Adolfsson 3807b29f36 rpc: stabilize chainhead backend (#1802)
* rpc: stabilize ChainHeadBackend

* remove noise from example

* add missing features

* make tests compile

* make tests compile v2

* revert stop event

* feature-gate runtime

* Update subxt/Cargo.toml

* add docsrs feature stuff

* Update subxt/src/backend/chain_head/mod.rs

* Update subxt/src/backend/chain_head/mod.rs

* Update subxt/src/backend/chain_head/mod.rs
2024-10-03 18:14:38 +02:00
Pavlo Khrystenko 7f9a1a17c0 derive serialize on more types (#1797)
* derive serialize on more types

---------

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2024-10-03 11:15:09 +02:00
Niklas Adolfsson cbf05d1999 fix: error message on rpc errors (#1804) 2024-10-01 20:01:07 +02:00
James Wilson b5209a162e Use frame-decode for core extrinsic decode logic (#1785)
* WIP using frame-decode for core extrinsic decode logic

* fmt

* Fix dependabot config

* clippy

* tidy some imports

* Fix a couple of tests

* Update to frame-decode 0.0.7

* fix docs

* Decode exts earlier to avoid doing it every iter/find step

* frame-decode to 0.1.0

* fmt

* clippy

* fix wasm example

* doc test fixes

* Fix test

* Fix a couple of subxt_core tests
2024-10-01 11:21:51 +01:00
Niklas Adolfsson 72db833def reconn-rpc-client: parse URL before connecting (#1789)
* reconn-rpc-client: parse URL before connecting

It was hard to figure whether one simply entered a faulty URL
and it tried to reconnect according to the retry policy.

With this change we first parse url and then try to reconnect.
This will detect invalid directly instead of waiting for the retry
to complete.

* clippy fix

* wasm: &str -> Url
2024-09-30 16:40:20 +02:00
Pavlo Khrystenko 8f2c92f0ef add reconnecting tests for unstable_backend (#1765)
* add tests for unstable_backend

---------

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2024-09-30 00:03:11 +02:00
Alexandru Vasile 2471aefe3b clippy: Remove unneeded ?Sized bound and replace never type with () (#1758)
* storage: Remove ?Sized bound

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

* backend: Use () instead of !

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

* backend: Return directly

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

---------

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
2024-09-06 17:14:40 +02:00
Pavlo Khrystenko b8735e5782 Add tests for legacy Backend impl (#1751)
---------

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2024-09-06 11:26:22 +02:00
Niklas Adolfsson e4f6f08eb7 fix: nits in tests (#1750)
* fix: nits in tests

* fix filter nit
2024-09-02 14:13:27 +02:00
Pavlo Khrystenko 3866737b29 Add support for generating metadata from runtime wasm files (#1720)
closes #1660
2024-09-02 11:07:50 +02:00
Niklas Adolfsson 374193ac31 examples: fix reconnecting logging target (#1733) 2024-08-28 19:51:53 +02:00
Niklas Adolfsson 4bc27d4977 refactor: replace reconnecting-jsonrpsee-ws-client with subxt-reconnecting-rpc-client (#1705)
* feat: add native subxt rpc reconn client

* add jsonrpsee dep to reconnecting-client

* Update subxt/src/backend/rpc/reconnecting_rpc_client/tests.rs

* fix grumbles

* add simple wasm test for reconnecting client

* fix test build

* cargo fmt

* remove reconnect apis

* Update testing/wasm-rpc-tests/tests/wasm.rs

* Update subxt/src/backend/rpc/reconnecting_rpc_client/tests.rs

* Update subxt/src/backend/rpc/reconnecting_rpc_client/tests.rs
2024-08-27 15:18:06 +02:00
James Wilson 83ef8a9f13 Allow tx payloads to be boxed (#1690)
* Allow tx payloads to be boxed

* Add example of boxed payloads

* explicit box import

* box import at top

* cargo fmt
2024-07-29 17:10:49 +01:00
Niklas Adolfsson 39d130ec69 chore: make it possible override clippy all (#1698)
* chore: make it possible override `clippy all`

* chore: fix clippy lints

* Update Cargo.toml
2024-07-29 17:43:33 +02:00
James Wilson c3267ed488 Add hash method to ExtrinsicDetails (#1676)
* Add hash method to ExtrinsicDetails

* fix test
2024-07-22 13:54:32 +01:00
James Wilson 75bb9b8354 Allow PartialExtrinsic to be held across await points (#1658)
* Allow PartialTransaction to be held across await points, and example to prove it

* Add comment to tx_parital example

* Fix book link
2024-06-26 13:23:26 +01:00
Niklas Adolfsson 4fcabe211d chore(deps): bump jsonrpsee from 0.22.5 to 0.23.1 (#1656)
* chore(deps): bump jsonrpsee from 0.22.5 to 0.23.1

* bump reconnecting-rpc-client dep
2024-06-25 18:05:45 +02:00
Pavlo Khrystenko 5a5c5fc382 Add 20-byte account id to subxt_core (#1638)
* Add accountId20 impl to subxt_core

closes #1576
2024-06-19 13:31:04 +02:00
James Wilson dd343be1f3 Add a basic version of the CheckMetadataHash signed extension (#1590)
* Add a basic version of the CheckMetadataHash signed extension

* update example too

* encode None to signer payload when no hash provided

* Enable decoding txs using CheckMetadataHash, too

* Tidy up decoding CheckMetadataHash
2024-05-23 11:54:53 +02:00
James Wilson 8c6452e22a Prep for 0.36.0 release (#1587)
* Prep for 0.36.0 release

* Stabilise unstabvle backend notes

* Make clearer that RPC methods dont retry
2024-05-16 16:37:20 +01:00
Niklas Adolfsson bec896d91a rpc: add full support reconnecting rpc client (#1505)
* add simple reconnecting rpc client

* initial retryable calls

* add reconnecting backend

* add reconnecting example for unstable backend

* add todo what isn't working

* FollowStream: restart on reconn

* naive fix: fetch sub_id in stream_headers

* cleanup

* remove resubscribe APIs

* cleanup and remove many wrapper streams

* remove retry backend

* legacy rpc: make it retryable

* unstable rpc: make it retryable

* fix nits

* support wasm as well

* remove deadcode

* address grumbles

* revert rpc methods

* don't create a subscription per block

* get rid off retry logic in subxt rpc

* Update subxt/Cargo.toml

* Update subxt/src/backend/legacy/mod.rs

* Update subxt/src/backend/legacy/mod.rs

* remove outdated comments

* fix bad merge

* Fix reconnecting RPC client and update dependencies

* add back retry logic and remove `finito`

* fix nits

* cleanup

* add hack for race when reconnecting

* backend: emit Stop event DisconnectWillRecoonect

* merge reconnecting client examples

* add fn retry_stream

* cleanup

* add all features from reconnecting-rpc-client

* fix build

* remove needless retry for fetch_storage

* StorageFetchDescendantKeysStream handle disconnect err

* dont retry transactions

* fetch subscription ID from FollowStreamMsg

* fix nits

* Update subxt/src/backend/legacy/mod.rs

* Update subxt/src/backend/legacy/mod.rs

* add reconn to StorageItems stream

* StorageFetchDescendantKeysStreamchore: retry storage call

* RetryStream: emit DisconnectWillReconnect msg

* runtime subscriptions ignore DisconnectWillReconn

* Update subxt/examples/setup_reconnecting_rpc_client.rs

* Update subxt/src/client/online_client.rs

* Update subxt/src/client/online_client.rs

* Add custom stream wrapper for finalized blocks

* add missing retry block

* clippy

* clippy again

* cleanup

* remove duplicate logic

* fix more grumbles

* Update subxt/examples/setup_reconnecting_rpc_client.rs

Co-authored-by: James Wilson <james@jsdw.me>

* simplify the example

* remove pin-project dep

* remove duplicate retry logic

* remove extra code

* specify trait bounds for retry api

* simplify the example

* fix weird Poll::Pending return

* fix nit in poll impl

* remove needless paths

* make retry_stream pub and add doc examples

* Update subxt/src/backend/utils.rs

---------

Co-authored-by: James Wilson <james@jsdw.me>
2024-05-08 15:12:54 +02:00
Alexandru Vasile a5d94a4b8b metadata: Fix cargo clippy (#1574)
* metadata: Fix cargo clippy

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

* subxt/backend: Fix clone clippy

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

* tests: Use clone into

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

---------

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
2024-05-06 10:11:39 +02:00
James Wilson bc079e7c98 Update deps to use scale-type-resolver 0.2 (#1565)
* Updates for scale-type-resolver 0.2

* show that we can check the name too now

* Bump versions and fix WrapperKeepOpaque name check
2024-04-30 08:45:39 +01:00
Niklas Adolfsson 25193d75af add frontier/ethereum example (#1557)
* add ethereum example

The ethereum config doesn't work with the default PolkadotConfig which
this shows how to do.

Tested with a frontier node

* address grumbles

* Update subxt/examples/tx_basic_frontier.rs

* Update subxt/examples/tx_basic_frontier.rs
2024-04-26 16:18:19 +02:00