* feat(providers): add personal key mgmt rpcs
* add personal_importRawKey and personal_unlockAccount
* expose geth personal api
* do not prefix with 0x
* serialize privkey as string
* add allow-insecure-unlock option to Geth
* tell Geth to expose the admin namespace
* wip: add admin namespace support
* add networking and peer related structs
* add rest of chain config fields
* add datadir to geth
* fix data dir ref
* add dev flag to geth
* set dev only if block_time is not set
* put mutually exclusive options in an enum
* make block_time use the devmode enum
* add p2p port to geth
* add basic impls for admin endpoints
* move from_int_or_hex to ethers-core utils
* fix nodeinfo protocol field
* the type is better represented by a struct which can have either eth
or snap
* add chain id and discovery toggle for Geth
* remove PeerEvent
* should re-add when peer event endpoints are implemented
* simplify serde options for admin responses
* change signature for peer modification apis
* these admin apis accept an enode, which _may_ be an enr, but could
also be a legacy enode "v4" url.
* add note on where `ChainConfig` fields come from
* add note on PeerInfo about the source of fields
* add admin namespace support to CHANGELOG
* update pr number in changelog
* cargo fmt
* move chainconfig to genesis in utils
* accept genesis file in geth
* add genesis writing to geth spawn
* finally get geth nodes to connect
* import io::Read in provider tests
* fix PeerInfo and use enode id for provider test
* make clippy happy
* improve documentation for genesis module
* remove not(wasm) attributes on genesis module
* remove debugging printlns
* remove io::Read from provider tests
* add failing post merge test case
* add full mainnet nodeinfo for testing
* support deserializing json bignums to U256
* the serde_json arbitrary_precision feature is necessary so the
serde_json::Number variant of `IntOrHexOrBigNum` can be converted
into a string and fed into U256::from_dec_string
* fix from_int_or_hex_opt doc string
* remove third variant from IntOrHex
* unnecessary since serde_json::Number handles smaller ints as well
* add comments for ids
* fix enode id type in admin_peers provider test
* fix admin typo in Cargo.toml
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* add method to wait on a gethinstance adding a peer
* fix dial loop and wait_to_add_peer doc comments
* update geth
* the build can be updated by changing the GETH_BUILD env var
* wait for geth to exit on drop
* remove unnecessary wait
* fix mid-handshake PeerInfo deserialization
* remove println
* make tests less flaky
* handle discovery with the rest of the non dev opts
* dump geth stderr to debug failing ci test
* add method which dumps the unread stderr of the geth instance into a
string
* remove call_raw debug println
* bug is due to authrpc endpoint being in use
* use unused port when authrpc port is not specified
* remove dump_stderr from GethInstance
* did not work properly anyways
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* 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>
* 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>
* 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>
* feature: set nonce in fill transaction
* chore: update changelog
* refactor: remove nonce_setting in fill_transaction
* refactor: set nonce in send_escalating
* Add dev-rpc middleware
* Dont run dev-rpc tests with celo
* providers: clean up match statement
* providers: fix clippy lint
* doc(providers) doctest and changelog for DevRpcMiddleware
* feature: pending_escalator
* feature: send_escalating in Middleware
* bug: don't drop unready futures in escalator.poll
* chore: docs and must_use
* chores: lints, clippies, wasm fixes, dedup pinboxfut
* chore: more lints
* refactor: use Delay in polling interval to ensure re-waking
* refactor: simplify Sleeping state transition as last will never be None again
* bug: properly set last when broadcasts resolve
* feature: debug implementation for EscalatingPending
* refactor: with_ setters and escalations argument
* refactor: use FuturesUnOrdered instead of a vec of futures
* chore: update CHANGELOG with recent PR info
* chore: update all comments on pending escalator
* chore: run rustfmt
* fix: ensure gas estimation includes the access list in 1559/2930 txs
* feat: add gas_price to typed tx
* feat: add access list to typed tx
* chore(providers): cleanup fill_transaction
* chore: fmt
* chore: enable 712 on ethers-contract at top level crate
* fix: do not error if eth_createAccessList is not available
* feat: only use access list if needed
* Add getProof to provider
* Format updates
* Add docs
* Remove fill_tx method, not sure how it got there
* Fix removed Trace type
* Remove test, eth_getProof not supported by ganache
* ci: run examples in CI
* fix(ens): set the resolved ens addr for gas estimation
* fix(contract-examples): use legacy sends with ganache
* fix(ens-example): ensure test runs when forking from mainnet
* fix(watch-blocks-example): run our own provider with preset blocktime
* chore(core): remove ethers dep
* chore(providers): remove ethers dep
tests using higher-rank crates are temporarily disabled
* chore(middleware): remove ethers dep and move tests over from providers
* chore(signers): remove ethers dep
* fix(contracts): correctly determine ethers sub-crates & remove ethers
* fix: re-enable tests for all members
* fix: make contract compile without middleware dep
move over the test using middleware to ethers-middleware
* chore: cargo fmt
* chore(contract): add missing import
* WIP
* WIP
* fix(middleware): use rustls as dev dep
* chore: cargo fmt
* fix: use different key for nonce manager to avoid nonce conflicts
* chore: fix celo test ported over to middlewares
the test had the same private key with an existing middleware test,
causing potential nonce reuses
it now also uses a different storage contract, so we had to change
it to use u256 instead of string
* fix(middleware): enable contracts/celo feature
* chore: ignore non-eip2718 txs to rinkeby
* feat: partial wasm32 support
* make compile for wasm32
* feat: att async-trait attr
* make compatible with wasm
* add type alias for archs
* rustfmt
* add wasm ci
* make compile with wasm-pack test
* make compile with wasm-pack test
* make compile with wasm-pack test
* make compile with wasm-pack test
* ci: disable wasmpack
* feat: use wasm timer delay
* feat: add wasm provider
* rustfmt
* misc refactor
* add wasm example
* make example a directory
* untrack error log
* move profile to root
* fix unused imports
* ci: enable wasm-pack test
* style: unify websocket implementations
* fix: typos
* fix: make policy compatible with wasm target
* chore: do not include ethers-wasm example as top level workspace member
* chore: modify wasm32 dependencies
* chore: make note about getrandom
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* feat: fee estimation with custom/default fn
* fix: clippy and percentage calc fix
* calculate priority fee only if base fee above threshold
* chore: some comments
* fix: use legacy tx for ganache
* test: test a few cases for fee estimation using utils
* feat(contract): use eip-1559 txs by default
This may break any tests which use Ganache, since it only supports legacy transactions.
We should replace Ganache with hardhat where possible
* fix(providers): always try setting default_sender
* chore: make all test transactions legacy
* feat(multicall): allow submitting legacy txs
* chore: default to legacy txs via feature flag
This is useful for chains like Celo that do not support the Typed Envelope
* fix: use legacy txs in ds proxy deployment / tests
* chore: fix review comments
* feat(providers): add eth_feeHistory api
* add access list
* feat: fill transactions with access list / default sender info
* feat: add helpers for operating on the txs enum
* feat: send_transaction takes TypedTransaction now
* fix(contract): temp wrap all contract txs as Legacy txs
* feat(middleware): use TypedTransaction in Transformer
* feat(signers): use TypedTransaction in Wallet/Ledger
* feat(core): add helpers for setting typed tx fields
* feat(signer): use typed transactions
* fix(middleware): adjust nonce/gas/escalators for TypedTxs
The GPO and the Escalators will throw an error if they are provided an EIP1559 transaction
* fix(providers): ensure the correct account's nonce is filled
* fix: add .into() to txs until we make the fn call more generic
* Revert "fix: add .into() to txs until we make the fn call more generic"
This reverts commit 04dc34b26d0e3f418ed3fc69ea35ad538b83dd50.
* feat: generalize send_transaction interface
* fix: only set the nonce manually in the Signer middleware
* fix(transformer): fill the transaction after transformation
* chore: fix compilation errors & lints
* fix(signer): set the correct account's nonce
* feat: make trace_call / call take TypedTransaction
* fix: set sender to transaction in signer
* chore: ethgasstation broke
* chore: cargo fmt / lints
* Fix(signer): pass the chain id
* fix: final tx encoding fixes
1. Normalize v values for eip1559/2730
2. Make access lists mandatory for 1559
3. do not double-rlp on rlp_signed
* fix: set access list only if available
* test: check 1559 / 2930 txs
* fix: do not prepend a 0 for Legacy txs & test
* chore: code review comments
* chore: fix aws signer signature
* refactor: move tx types to subdirectory
* feat(receipt): add tx-type and effective gas price for eip1559
* feat: add base_fee_per_gas to Block
* feat(tx): add eip1559/2930/2718 ret values
* fix(middleware): return signed raw rlp from tx signer / adjust tests
* chore: remove unused vars
* chore(core): remove funty lock from Cargo.toml
* chore: rename json var / cargo fmt
* add more context on eip1559 fees
* feat: add support for `eth_getBlockReceipts`
* Add comment to the `get_block_receipts` function
* Add `client_version()` function
* Refactor `Provider` into a proper struct