Commit Graph

176 Commits

Author SHA1 Message Date
Matthias Seitz beffd96cc4
chore(providers): add traces to retry provider (#1382) 2022-06-15 11:47:01 -07:00
Matthias Seitz 05864ff9ed
fix: net_version returns string (#1376)
* fix: net_version returns string

* chore: update CHANGELOG
2022-06-14 13:00:46 -07:00
Resende c76f325b14
feat(provider): add option to create ws provider with auth (#1363)
Currently `Provider::<Ws>` only exposes `connect` from `Ws` module.
This pull request exposes the `connect_with_auth` function added on 829.
2022-06-09 00:45:33 -07:00
joshieDo ea1a87271c
feat(solc): add script/ to project paths (#1359)
* add script to ProjectPaths

* change default ProjectPaths scripts/ tests/ to script/ test/

* fmt

* chore: ignore ens avatar tests

we know we can decode them properly by this point, they are flaky
because people change their info

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-06-08 05:13:03 -07:00
Meet Mangukiya 6bddd53010
test: update test with changed state on forked tests (#1353) 2022-06-07 08:45:13 -07:00
Matthias Seitz 0197fe3fc4
test: set nonce for tx stream explicitly (#1354) 2022-06-07 08:44:02 -07:00
Gio a532eb4d29
Add call builder and eth_call state overrides (#1340)
* Add call builder and eth_call state overrides

* Fix <Caller as Future>::poll impl

* Move call overrides to ethers_provider::call_raw

* Add example for call_raw overrides

* Add support for contract call overrides

* Documentation and convenience impls for call_raw types

* Test for eth_call state overrides

* ci: install geth

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-06-04 14:18:25 -07:00
Matthias Seitz 89bc6420bb
test: replace ganache with anvil (#1286)
* ci: install anvil

* test: use anvil instead of ganache

* ci: fix anvil ver

* ci: re-enable example tests

* test: remove unnecessary assertions

* test: enable anvil launch test

* docs: typo

* test: fix anvil chain id

* ci: install ganache

Ganache is needed for the Ganache tests

* chore: remove legacy feature from some examples

* ci: correctly build examples

* test: use correct account balance for anvil

* chore: remove sub_id == 1 check

this was only possible in ganache because it gives serial
sub ids, but in every other reasonable client the ids are generated
randomly, so we cannot test for its value

* test: ensure txs are different

There is a bug in Ganache's mempool which accepts duplicate transactions (here with the same nonce), whereas here we pre-set all the nonces so that they end up having a different transaction hash.

* test: ignore ganache tests

* fix: terzor api changes

* ci(examples): install Anvil, remove geth/ganache

* test(provider): Anvil instead of Geth

some tests start to fail now

* fix: revert usage of Anvil in ipc tests

Anvil does not support IPC yet

* fix: update examples script

* ci: use anvil for wasm example

* replace last ganache usage

Co-authored-by: Oliver Nordbjerg <hi@notbjerg.me>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-06-01 08:22:39 -07:00
Meet Mangukiya e0db2f0606
`get_paginated_logs` fixes and refactoring (#1328)
* fix(providers): do not load boundry blocks on every page

* refactor(providers): make get_paginated_logs TryStream
2022-05-31 09:43:03 -07:00
Meet Mangukiya e3ab2feada
feat(providers): add `RetryClient` (#1302)
* feat(providers): add RateAwareClient

* feat(providers): add RetryClient

* remove RateAwareClient

* feat(providers): add RetryPolicy, Backoff traits and some implementations

* remove backoff abstractions

* fix doc tests

* add helper methods for RetryClient Provider

* remove backoff wasm dependency

* remove conflicitng impl for TryFrom<&str>, etc.

* update docs and remove backoff crate dependency

* fix tests

* fix backoff formula

* use value, string is not leading to corerct serialization

* catch 429 error thrown as JsonRpcError

* fix requests_enqueued, make backoff and max retries configurable

* fix doc tests

* fix tests

* use match statement

* revert incorrect change

* ms precision backoffs, remove reduntant continue
2022-05-27 14:02:16 -07:00
Meet Mangukiya 266b1f4777
chore: fix wasm warnings (#1312) 2022-05-27 10:10:51 -04:00
Meet Mangukiya a150666d54
feat: add paginated logs (#1285)
* feat: add paginated logs

* docs: add paginated_logs example

* remove unpin
2022-05-23 14:23:35 -07:00
Georgios Konstantopoulos f237f85959 chore: log error on ws unexpected close 2022-05-23 11:58:49 -07:00
Bryan Stitt 9ed9395c2c
return instead of ignore error (#1287)
* return error instead of swallow error

* changelog

Co-authored-by: Bryan Stitt <bryan@satoshiandkin.com>
2022-05-23 11:58:41 -07:00
Matthias Seitz cffcc7bbec
chore(clippy): fix newest nightly lints (#1298) 2022-05-22 15:18:57 -07:00
Georgios Konstantopoulos 4c75e4ae19 test: expose test provider url 2022-05-18 13:41:11 -07:00
Matthias Seitz 7509e42d3b
fix: serialize eth_getStorageAt position param as quantity (#1281)
* fix: serialize eth_getStorageAt position param as quantity

* test: add quantity test
2022-05-18 07:49:32 -07:00
Meet Mangukiya b15d0f8643
feat(providers): load previous logs before subscribing (#1264)
* feat(providers): load previous logs before subscribing

Load previous logs and stream it back to the user before establishing
a new stream for streaming future logs.

Closes #988

* docs: add subscribe_logs example

* fix clippy errors

* refactor: use VecDeque and address review
2022-05-16 08:11:25 -07:00
oliver-giersch 3df1527cef
fix: all request ids start at 1 (#1265)
Co-authored-by: Oliver Giersch <oliver.giersch@gmail.com>
2022-05-14 16:31:40 -07:00
Matthias Seitz ce3ebaefa0
chore(clippy): make clippy happy (#1230) 2022-05-06 08:15:49 -07:00
James Prestwich c70cd81de0
feature: pending transaction retries repeatedly before assuming dropped (#1221) 2022-05-05 07:22:47 -07:00
oliver-giersch a115e957db
refactors ipc transport internals (#1174)
* refactors ipc transport internals

ran cargo +nightly fmt

fixes typo

remove some commented out code

* remove one unnecessary return stmt

Co-authored-by: Oliver Giersch <oliver.giersch@b-tu.de>
Co-authored-by: Oliver Giersch <oliver.giersch@gmail.com>
2022-04-24 16:09:56 +02:00
Matthias Seitz 35c29c82c6
chore: silence unused warnings (#1162) 2022-04-21 19:30:02 +02:00
Matthias Seitz 02ad93a1cf
feat(provider): add RwClient (#1016)
* feat(provider): add RwClient

* docs: fix failing doc test
2022-04-13 13:21:52 -07:00
oliver-giersch db1870c891
Fix IPC handling of jsonrpc errors (#1123)
* fixes ipc jsonrpc error handling, use json RawValue where sensible

* ran cargo +nightly fmt

Co-authored-by: Oliver Giersch <oliver.giersch@b-tu.de>
2022-04-08 19:11:53 -07:00
Matthias Seitz df855b045e
feat: add TryFrom String reference for http provider (#1084) 2022-03-27 14:37:15 -07:00
Matthias Seitz 916e9a7334
chore(clippy): add some deny lints (#1064)
* feat: add deny lints

* trim ethers core

* trim ethers eip712

* deny ethers contract derive

* deny ethers contract abigen

* deny ethers contract

* deny ethers providers

* chore: add denies and fix unused deps

* doc: fix links

* fix: wasm build

* doc: fix links

* doc: fix links

* doc: fix inline doc links

* docs: fix intra doc links
2022-03-19 10:05:39 -07:00
Meet Mangukiya cde52c7c20
fix(core/TypedTransaction): eip1559 gas price should be max_fee_per_gas (#1062)
* fix(core/TypedTransaction): eip1559 gas price should be max_fee_per_gas

* fix tests

* tests(nonce_manager): reduce flakiness
2022-03-19 09:41:03 -07:00
Georgios Konstantopoulos beffe32f15 fix: feature-gate TestProvider.ws fn 2022-03-13 11:29:11 -07:00
Georgios Konstantopoulos 4f37287859 feat: rotate infura keys for ws 2022-03-13 10:11:27 -07:00
Georgios Konstantopoulos ae125bcfc7
feat: rotating infura keys (#1017)
* feat: add providers which rotate api keys

* test: use rotating key in provider instead of hardcoded

* chore: fmt
2022-03-13 09:04:09 -07:00
oblique 367f3444ec
fix: Export `ethers_providers::IpcError` and `ethers_providers::QuorumError` (#1012) 2022-03-13 13:58:29 +02:00
th4s b05136e173
Fix websocket connection request (#1005)
In tungstenite 0.17 a change was introduced considering the logic of
`IntoClientRequest`. When using this trait on a `HttpRequest` it just
uses the request without any changes to inititate the websocket
connection.

This makes it necessary for the consumer of the api to supply the
correct http headers for initiating a websocket connection when using
`IntoClientRequest` on `HttpRequest`.

This commit adapts the logic in `connect_with_auth` to this new
behavior.
2022-03-10 13:36:42 -08:00
Simon Bihel 1641be7395
Enforce commutativity of reverse resolution (#996)
As specified in https://docs.ens.domains/dapp-developer-guide/resolving-names#reverse-resolution
2022-03-08 06:45:45 -08:00
wolflo a1accbf6ac
fix(providers): Propogate gas limit with access list (#901)
* fix(providers): Propogate gas price with access list

* Update CHANGELOG.md

* Fix clippy lint

* Clarify fill_transaction comments

* Fill tx gas price before gas limit

Updates Provider::fill_transaction() to fill the gas price of a
transaction before filling the gas limit. There are cases where the gas
used by a transaction may be dependent on the gas price. For example,
the following contract bytecode branches based on the result of the GASPRICE
opcode:
GASPRICE PUSH1 0xff GT PUSH1 {label} JUMPI

* Cleanup

* Propogate eth_estimateGas failure
2022-03-01 14:13:06 +02:00
dependabot[bot] a6999f377e
chore(deps): bump tokio-tungstenite from 0.16.1 to 0.17.1 (#945)
* chore(deps): bump tokio-tungstenite from 0.16.1 to 0.17.1

Bumps [tokio-tungstenite](https://github.com/snapview/tokio-tungstenite) from 0.16.1 to 0.17.1.
- [Release notes](https://github.com/snapview/tokio-tungstenite/releases)
- [Changelog](https://github.com/snapview/tokio-tungstenite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/snapview/tokio-tungstenite/compare/v0.16.1...v0.17.1)

---
updated-dependencies:
- dependency-name: tokio-tungstenite
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: no-op raw websocket frames

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-02-28 10:40:42 +02:00
Meet Mangukiya 133c32d64a
feat(ethers-providers): expose pending tx_hash with a getter (#968) 2022-02-26 16:36:29 +02:00
joshieDo 7afde0ca0a
handle case where the data from the resolver is empty (#963)
* handle case where the data from the resolver is empty

* is_empty instead of 0 comparison
2022-02-24 18:42:32 +02:00
Nicolas Trippar f9f466ef07
change visibility of the function request in Provider<JsonRpcClient> to public so one can implement Middleware's with custom call to the node (#919) 2022-02-17 14:30:03 +02:00
Simon Bihel cd8a9b5a97
Add ENS avatar and TXT records resolution (#889)
* Add ENS avatar resolution

As well as arbitrary fields.

* Use try_join

* Improve reqwest's error passing

* Split avatar resolution in ERC token parsing and resolution

* no_run examples

* Rename token to NFT

* A bit more documentation

* Nightly cargo fmt

* Use different ERC-721 test

* Update CHANGELOG

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-02-16 16:25:41 +02:00
wolflo 14551a90c1
fix(providers): PendingTransaction::log() missing deref (#886) 2022-02-09 08:48:03 +02:00
wolflo b657e47e6b
feat(providers): Log methods for PendingTransaction (#884)
* feat(providers): Log method for PendingTransaction

* feat(poviders): Add PendingTransaction inspect() method

* Apply suggestions from code review

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-02-09 00:55:35 +02:00
wolflo 885aa9c967
fix(providers): doc test for dev_rpc (#857) 2022-02-02 19:20:01 +02:00
rakita 24e7c471e4
add eth_syncing RPC (#848)
* add eth_syncing RPC

* Changelo updated

* small comments

* Intermediate SyncingStatus
2022-02-01 12:58:45 +02:00
Dan Cline 01544ec4b7
Implement RLP decoding for transactions (#805)
* Implement RLP decoding for transactions

* set chain_id in fill_transaction
2022-01-30 21:21:16 +02:00
th4s a97526d6fe
Add authorization for http and websocket (#829)
* Added  basic and bearer authentication for http and websocket transport

* Improved api for websocket `connect_with_auth`

* Bugfix in doc

* Moved use statement into non-wasm imports

* Adapted changelog

* Fixed doc test

* Added constructors for Authorization

* Improved code quality and implemented feedback

* Made bas64 crate for basic auth encoding non-optional

* Added `Display` for `Authorization` instead of `into_auth_string`
2022-01-27 12:04:53 +02:00
Erwan f9f77e829b
fix(ws): propagate deserialization errors upstream + infura quickfix (#827)
* fix(ws): propagate error when deserialization fails

* fix(ws): tolerate case-insensitive match on the jsonrpc field

Infura streams notifications with jsonrpc all capitalized. This fails to
deserialize on our end because serde expect a precise match ressembling
the Notification jsonrpc field.

Fixes #684.

* chore(fmt): use nightly rustfmt

* chore: fmt

* chore: fix failing celo test

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-01-24 15:38:00 +02:00
Matthias Seitz d2318d285d
chore(deps): bump solang (#796)
* chore(deps): bump solang

* fix: breaking test
2022-01-15 17:53:46 +02:00
Eugene cbfbd6052c
Implement trace_callMany (#792)
* Implement trace_callMany

* cargo fix and ignore flaky test for now

* Update ethers-providers/src/provider.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-01-15 12:41:43 +02:00
Matthias Seitz d2b59d7097
chore: silence unused ws macro (#788) 2022-01-13 02:59:02 +02:00