* feat(providers): tokio 1.0
BREAKING: This removes async-std as a compatibility option
* feat: tokio 1.0 in rest of crates
* fix: patch Cargo.toml until deps are released
* fix(contract): load ws deps
* feat: bytes 1.0 (#121)
* feat(core): move to bytes::Bytes
* feat: adjust rest of crates to Bytes
* chore: bump deps
CI fails due to:
https://github.com/snapview/tokio-tungstenite/pull/142#discussion_r550445144
* chore: use latest tokio-tungstenite
* ci: split tests into jobs (#129)
* Switch to `hex` (#128)
* fix(core): replace rustc_hex with hex
* fix(providers): replace rustc_hex with hex
* chore: replace rustc-hex with hex
* chore: cargo fmt
* fix(ledger): copy address from string correctly
* chore: fix flaky tests
Fixes#105
* feat(providers): return a PendingTransaction from send_tx calls
* feat(providers): expose the internal provider to all middlewares
* fix(middleware): use the returned PendingTx instead of using a hash
* fix(contract): use the pending tx returned value
Note1: To support that, we need to clone the tx when sending in order to make lifetimes work out
Note2: Multicall does not support that feature
* fix(ethers): adjust examples
* chore: fix provider test
* chore: fix celo test
BREAKING CHANGE
* feat: support for txpool API
* feat: add a geth spawner test helper
* fix(txpool): use TxRequest instead of new data struct
The `raw` field is no longer present in latest geth's response.
* fix(txpool): use proper api response format
ref: https://github.com/ethereum/go-ethereum/pull/21720
Also add a Geth test
* ci: install geth 1.9.23
Co-authored-by: Rohit Narurkar <rohit.narurkar@protonmail.com>
* fix(BREAKING): return Option for txs/receipts/blocks
Otherwise if a user asks for a transaction hash or block that does not exist yet they'll get an Error
* test: ensure that unmined txs return None receipts
* test: fix remaining tests
* chore: re-enable sparkpool gas oracle
* chore: fix celo tests
* fix: run the non-existing data against infura
* fix: fix etherscan gas oracle tests
* (feat) gas oracle support
* (refactor) make a separate module | fix clippy warning
* add gas oracle to client using dynamic dispatch
* fix doc build in multicall module
* gas oracle returns U256
* support gas price fetching from client
* avoid querying for unsupported gas categories
* changes based on PR review
* add support for gasnow API, refactor gwei to wei
* feat(provider): allow specifying a default polling interval param
This parameter is going to be used for all subsequent client calls by default. It can still be overriden with the internal
`interval` calls
* feat(contract): replace reference to Client with Arc
* feat(abigen): adjusts codegen to use Arcs
* fix(ethers): adjust examples to new apis
* fix(provider): return TxHash instead of PendingTransaction on tx submission
Returning a PendingTransaction allowed us to have nice ethers.js-like syntax where you submit
a transaction and then can immediately await it. Unfortunately, now that we use Arcs and not lifetimes
this meant that we would need to bind the function call in a variable, and then await on it, which is pretty
bad UX.
To fix this, we revert back to returning a TxHash and introduce a convenience method on the provider and the
contract which takes a tx_hash and returns a PendingTransaction object. The syntax ends up being slightly
more verbose (although more explicit), but the issue is fixed.
* fix: relax trait bounds on JsonRpcClient
* refactor(provider): move http client to separate dir
* feat(provider): add initial Websocket support over Stream/Sink + Tungstenite
* test(provider): add websocket test
* feat(provider): add convenience method using tokio/async-std behind a feature flag
* test(provider): add websocket ssl test
* feat(provider): add TLS websockets for tokio/async-std
* docs(provider): add websocket docs / examples
* fix(provider): make tokio an optional dep
* fix(provider): do not pass a param to estimate_gas
* fix(provider): pass correct number of args to new_filter
* test(signer): add test to ensure that the Pending block number works
* docs: fix links
* feat(types): add optional Celo support
* feat: add Celo feature flags to all crates
* test(provider): add get_transaction celo test
* test(signer): add send_transaction celo test
* test(contract): add deploy and call contract function celo test
* fix(provider): ensure the Pending transaction calls the waker to get polled again
* feat(core): allow setting the blocktime in ganache
* test(provider): move pending txs test to integration tests + use block time
* fix(signers): make EIP-155 optional and fix sighash generation bug