feature: providererror conversion to middleware error (#1920)

* feature: providererror conversion to middleware error

* chore: update changelog
This commit is contained in:
James Prestwich 2022-12-02 15:12:14 -05:00 committed by GitHub
parent 5af2800f15
commit d6fea13d23
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 299 additions and 283 deletions

View File

@ -3,353 +3,357 @@
## ethers-core ## ethers-core
### Unreleased ### Unreleased
- Graceful handling of WebSocket transport errors [#1889](https://github.com/gakonst/ethers-rs/issues/1889) [#1815](https://github.com/gakonst/ethers-rs/issues/1815)
- `MiddlewareBuilder` trait to instantiate a `Provider` as `Middleware` layers. - Graceful handling of WebSocket transport errors [#1889](https://github.com/gakonst/ethers-rs/issues/1889) [#1815](https://github.com/gakonst/ethers-rs/issues/1815)
- An `Event` builder can be instantiated specifying the event filter type, without the need to instantiate a contract. - `MiddlewareBuilder` trait to instantiate a `Provider` as `Middleware` layers.
- Add 'ethers_core::types::OpCode' and use in 'ethers_core::types::VMOperation' [#1857](https://github.com/gakonst/ethers-rs/issues/1857) - An `Event` builder can be instantiated specifying the event filter type, without the need to instantiate a contract.
- Remove rust_decimals dependency for ethers-core - Add 'ethers_core::types::OpCode' and use in 'ethers_core::types::VMOperation' [#1857](https://github.com/gakonst/ethers-rs/issues/1857)
- Add support for numbers greater than 2^96 for `ethers_core::utils::parse_units` [#1822](https://github.com/gakonst/ethers-rs/issues/1822) - Remove rust_decimals dependency for ethers-core
- Add comment about safety of u8 -> u64 cast in `ethers_core::types::Signature` - Add support for numbers greater than 2^96 for `ethers_core::utils::parse_units` [#1822](https://github.com/gakonst/ethers-rs/issues/1822)
- Stop defaulting to the `"latest"` block in `eth_estimateGas` params [#1657](https://github.com/gakonst/ethers-rs/pull/1657) - Add comment about safety of u8 -> u64 cast in `ethers_core::types::Signature`
- Fix geth trace types for debug_traceTransaction rpc - Stop defaulting to the `"latest"` block in `eth_estimateGas` params [#1657](https://github.com/gakonst/ethers-rs/pull/1657)
- Fix RLP decoding of legacy `Transaction` - Fix geth trace types for debug_traceTransaction rpc
- Fix RLP encoding of `TransactionReceipt` [#1661](https://github.com/gakonst/ethers-rs/pull/1661) - Fix RLP decoding of legacy `Transaction`
- Add `Unit8` helper type [#1639](https://github.com/gakonst/ethers-rs/pull/1639) - Fix RLP encoding of `TransactionReceipt` [#1661](https://github.com/gakonst/ethers-rs/pull/1661)
- Add `evm.deployedBytecode.immutableReferences` output selector [#1523](https://github.com/gakonst/ethers-rs/pull/1523) - Add `Unit8` helper type [#1639](https://github.com/gakonst/ethers-rs/pull/1639)
- Added `get_erc1155_token_transfer_events` function for etherscan client [#1503](https://github.com/gakonst/ethers-rs/pull/1503) - Add `evm.deployedBytecode.immutableReferences` output selector [#1523](https://github.com/gakonst/ethers-rs/pull/1523)
- Add support for Geth `debug_traceTransaction` [#1469](https://github.com/gakonst/ethers-rs/pull/1469) - Added `get_erc1155_token_transfer_events` function for etherscan client [#1503](https://github.com/gakonst/ethers-rs/pull/1503)
- Use correct, new transaction type for `typool_content` RPC endpoint [#1501](https://github.com/gakonst/ethers-rs/pull/1501) - Add support for Geth `debug_traceTransaction` [#1469](https://github.com/gakonst/ethers-rs/pull/1469)
- Fix the default config for generated `BuildInfo` [#1458](https://github.com/gakonst/ethers-rs/pull/1458) - Use correct, new transaction type for `typool_content` RPC endpoint [#1501](https://github.com/gakonst/ethers-rs/pull/1501)
- Allow configuration of the output directory of the generated `BuildInfo` [#1433](https://github.com/gakonst/ethers-rs/pull/1433) - Fix the default config for generated `BuildInfo` [#1458](https://github.com/gakonst/ethers-rs/pull/1458)
- capture unknown fields in `Block` and `Transaction` type via new `OtherFields` type [#1423](https://github.com/gakonst/ethers-rs/pull/1423) - Allow configuration of the output directory of the generated `BuildInfo` [#1433](https://github.com/gakonst/ethers-rs/pull/1433)
- Methods like `set_to()` from `TypedTransaction` can be chained - capture unknown fields in `Block` and `Transaction` type via new `OtherFields` type [#1423](https://github.com/gakonst/ethers-rs/pull/1423)
- Use H64 for Block Nonce [#1396](https://github.com/gakonst/ethers-rs/pull/1396) - Methods like `set_to()` from `TypedTransaction` can be chained
- Add `as_*_mut` methods on `TypedTransaction` - Use H64 for Block Nonce [#1396](https://github.com/gakonst/ethers-rs/pull/1396)
[#1310](https://github.com/gakonst/ethers-rs/pull/1310) - Add `as_*_mut` methods on `TypedTransaction`
- AWS EIP712 data signing no longer signs with EIP155 [#1310](https://github.com/gakonst/ethers-rs/pull/1310)
- Added Cronos testnet to etherscan options [#1276](https://github.com/gakonst/ethers-rs/pull/1276) - AWS EIP712 data signing no longer signs with EIP155
- Fix parsing of a pending block - Added Cronos testnet to etherscan options [#1276](https://github.com/gakonst/ethers-rs/pull/1276)
[#1272](https://github.com/gakonst/ethers-rs/pull/1272) - Fix parsing of a pending block
- Removed Cronos mainnet beta from `is_legacy` [1246](https://github.com/gakonst/ethers-rs/pull/1246) [#1272](https://github.com/gakonst/ethers-rs/pull/1272)
- Fix RLP decoding of `from` field for `Eip1559TransactionRequest` and - Removed Cronos mainnet beta from `is_legacy` [1246](https://github.com/gakonst/ethers-rs/pull/1246)
`Eip2930TransactionRequest`, remove `Eip1559TransactionRequest` `sighash` - Fix RLP decoding of `from` field for `Eip1559TransactionRequest` and
method [#1180](https://github.com/gakonst/ethers-rs/pull/1180) `Eip2930TransactionRequest`, remove `Eip1559TransactionRequest` `sighash`
- Fix RLP encoding of absent access list in `Transaction` [1137](https://github.com/gakonst/ethers-rs/pull/1137) method [#1180](https://github.com/gakonst/ethers-rs/pull/1180)
- Pass compilation time as additional argument to `Reporter::on_solc_success` [#1098](https://github.com/gakonst/ethers-rs/pull/1098) - Fix RLP encoding of absent access list in `Transaction` [1137](https://github.com/gakonst/ethers-rs/pull/1137)
- Fix aws signer bug which maps un-normalized signature to error if no normalization occurs (in `aws::utils::decode_signature`) - Pass compilation time as additional argument to `Reporter::on_solc_success` [#1098](https://github.com/gakonst/ethers-rs/pull/1098)
- Implement signed transaction RLP decoding [#1096](https://github.com/gakonst/ethers-rs/pull/1096) - Fix aws signer bug which maps un-normalized signature to error if no normalization occurs (in `aws::utils::decode_signature`)
- `Transaction::from` will default to `Address::zero()`. Add `recover_from` and - Implement signed transaction RLP decoding [#1096](https://github.com/gakonst/ethers-rs/pull/1096)
`recover_from_mut` methods for recovering the sender from signature, and also - `Transaction::from` will default to `Address::zero()`. Add `recover_from` and
setting the same on tx [#1075](https://github.com/gakonst/ethers-rs/pull/1075). `recover_from_mut` methods for recovering the sender from signature, and also
- Add Etherscan account API endpoints [#939](https://github.com/gakonst/ethers-rs/pull/939) setting the same on tx [#1075](https://github.com/gakonst/ethers-rs/pull/1075).
- Add FTM Mainet and testnet to parse method "try_from" from Chain.rs and add cronos mainet and testnet to "from_str" - Add Etherscan account API endpoints [#939](https://github.com/gakonst/ethers-rs/pull/939)
- Add FTM mainnet and testnet Multicall addresses [#927](https://github.com/gakonst/ethers-rs/pull/927) - Add FTM Mainet and testnet to parse method "try_from" from Chain.rs and add cronos mainet and testnet to "from_str"
- Add Cronos mainnet beta and testnet to the list of known chains - Add FTM mainnet and testnet Multicall addresses [#927](https://github.com/gakonst/ethers-rs/pull/927)
[#926](https://github.com/gakonst/ethers-rs/pull/926) - Add Cronos mainnet beta and testnet to the list of known chains
- `Chain::to_string` will return the same chain name as `Chain::from_str` [#926](https://github.com/gakonst/ethers-rs/pull/926)
- Add `eth_syncing` [#848](https://github.com/gakonst/ethers-rs/pull/848) - `Chain::to_string` will return the same chain name as `Chain::from_str`
- Fix overflow and possible divide-by-zero in `estimate_priority_fee` - Add `eth_syncing` [#848](https://github.com/gakonst/ethers-rs/pull/848)
- Add BSC mainnet and testnet to the list of known chains - Fix overflow and possible divide-by-zero in `estimate_priority_fee`
[#831](https://github.com/gakonst/ethers-rs/pull/831) - Add BSC mainnet and testnet to the list of known chains
- Returns error on invalid type conversion instead of panicking [#831](https://github.com/gakonst/ethers-rs/pull/831)
[#691](https://github.com/gakonst/ethers-rs/pull/691/files) - Returns error on invalid type conversion instead of panicking
- Change types mapping for solidity `bytes` to rust `ethers::core::Bytes` and [#691](https://github.com/gakonst/ethers-rs/pull/691/files)
solidity `uint8[]` to rust `Vec<u8>`. - Change types mapping for solidity `bytes` to rust `ethers::core::Bytes` and
[#613](https://github.com/gakonst/ethers-rs/pull/613) solidity `uint8[]` to rust `Vec<u8>`.
- Fix `format_units` to return a `String` of representing a decimal point float [#613](https://github.com/gakonst/ethers-rs/pull/613)
such that the decimal places don't get truncated. - Fix `format_units` to return a `String` of representing a decimal point float
[#597](https://github.com/gakonst/ethers-rs/pull/597) such that the decimal places don't get truncated.
- Implement hex display format for `ethers::core::Bytes` [#597](https://github.com/gakonst/ethers-rs/pull/597)
[#624](https://github.com/gakonst/ethers-rs/pull/624). - Implement hex display format for `ethers::core::Bytes`
- Fix `fee_history` to first try with `block_count` encoded as a hex `QUANTITY`. [#624](https://github.com/gakonst/ethers-rs/pull/624).
[#668](https://github.com/gakonst/ethers-rs/pull/668) - Fix `fee_history` to first try with `block_count` encoded as a hex `QUANTITY`.
- Fix `fill_transaction` to set nonces in transactions, if the sender is known [#668](https://github.com/gakonst/ethers-rs/pull/668)
and no nonce is specified - Fix `fill_transaction` to set nonces in transactions, if the sender is known
- Move `fill_transaction` implementation to the provider, to allow middleware and no nonce is specified
to properly override its behavior. - Move `fill_transaction` implementation to the provider, to allow middleware
- Add informational messages to solc installation and compilation. to properly override its behavior.
- Significantly refactor `MultiAbigen` module generation. Now allows for lib - Add informational messages to solc installation and compilation.
generation, and does not make unnecessary disk writes. - Significantly refactor `MultiAbigen` module generation. Now allows for lib
[#854](https://github.com/gakonst/ethers-rs/pull/852) generation, and does not make unnecessary disk writes.
- Refactor `ethers-contract-abigen` to use `eyre` instead of `anyhow` via [#854](https://github.com/gakonst/ethers-rs/pull/852)
[#858](https://github.com/gakonst/ethers-rs/pull/858) - Refactor `ethers-contract-abigen` to use `eyre` instead of `anyhow` via
- Add `Deployer.send_with_receipt -> Result<(Contract, Receipt), Error>` [#858](https://github.com/gakonst/ethers-rs/pull/858)
so that the receipt can be returned to the called when deploying - Add `Deployer.send_with_receipt -> Result<(Contract, Receipt), Error>`
a contract [#865](https://github.com/gakonst/ethers-rs/pull/865) so that the receipt can be returned to the called when deploying
- Add Arbitrum mainnet and testnet to the list of known chains a contract [#865](https://github.com/gakonst/ethers-rs/pull/865)
- Add ENS avatar and TXT records resolution - Add Arbitrum mainnet and testnet to the list of known chains
[#889](https://github.com/gakonst/ethers-rs/pull/889) - Add ENS avatar and TXT records resolution
- Do not override gas limits provided by an outer middleware when including an EIP-2930 access list [#889](https://github.com/gakonst/ethers-rs/pull/889)
[#901](https://github.com/gakonst/ethers-rs/pull/901) - Do not override gas limits provided by an outer middleware when including an EIP-2930 access list
- Add a getter to `ProjectCompileOutput` that returns a mapping of compiler [#901](https://github.com/gakonst/ethers-rs/pull/901)
versions to a vector of name + contract struct tuples - Add a getter to `ProjectCompileOutput` that returns a mapping of compiler
[#908](https://github.com/gakonst/ethers-rs/pull/908) versions to a vector of name + contract struct tuples
- Add Yul compilation [#994](https://github.com/gakonst/ethers-rs/pull/994) [#908](https://github.com/gakonst/ethers-rs/pull/908)
- Enforce commutativity of ENS reverse resolution - Add Yul compilation [#994](https://github.com/gakonst/ethers-rs/pull/994)
[#996](https://github.com/gakonst/ethers-rs/pull/996) - Enforce commutativity of ENS reverse resolution
- Add `TransactionReceipt::to` and `TransactionReceipt::from` [#996](https://github.com/gakonst/ethers-rs/pull/996)
[#1184](https://github.com/gakonst/ethers-rs/pull/1184) - Add `TransactionReceipt::to` and `TransactionReceipt::from`
- Add `From<H160>` and From<Vec<H160>> traits to `ValueOrArray<H160>` [#1199](https://github.com/gakonst/ethers-rs/pull/1200) [#1184](https://github.com/gakonst/ethers-rs/pull/1184)
- Fix handling of Websocket connection errors [#1287](https://github.com/gakonst/ethers-rs/pull/1287) - Add `From<H160>` and From<Vec<H160>> traits to `ValueOrArray<H160>` [#1199](https://github.com/gakonst/ethers-rs/pull/1200)
- Add Arithmetic Shift Right operation for I256 [#1323](https://github.com/gakonst/ethers-rs/issues/1323) - Fix handling of Websocket connection errors [#1287](https://github.com/gakonst/ethers-rs/pull/1287)
- [#1535](https://github.com/gakonst/ethers-rs/pull/1535) Add support to Aurora and Aurora testnet networks. - Add Arithmetic Shift Right operation for I256 [#1323](https://github.com/gakonst/ethers-rs/issues/1323)
- [#1632](https://github.com/gakonst/ethers-rs/pull/1632) Re-export `H32` from `ethabi`. - [#1535](https://github.com/gakonst/ethers-rs/pull/1535) Add support to Aurora and Aurora testnet networks.
- [#1634](https://github.com/gakonst/ethers-rs/pull/1634) Derive missing `Clone`, `Copy` and `Debug` impls in ethers-etherscan. - [#1632](https://github.com/gakonst/ethers-rs/pull/1632) Re-export `H32` from `ethabi`.
- Bytes debug format now displays hex literals [#1658](https://github.com/gakonst/ethers-rs/pull/1658) - [#1634](https://github.com/gakonst/ethers-rs/pull/1634) Derive missing `Clone`, `Copy` and `Debug` impls in ethers-etherscan.
- [#1451](https://github.com/gakonst/ethers-rs/issues/1451) Add Arithmetic Shift Left operation for I256 - Bytes debug format now displays hex literals [#1658](https://github.com/gakonst/ethers-rs/pull/1658)
- [#1860](https://github.com/gakonst/ethers-rs/pull/1860) Update I256 type documentation calling out the inconsistency - [#1451](https://github.com/gakonst/ethers-rs/issues/1451) Add Arithmetic Shift Left operation for I256
between its right shift operator and standard library numeric types. - [#1860](https://github.com/gakonst/ethers-rs/pull/1860) Update I256 type documentation calling out the inconsistency
- [#842](https://github.com/gakonst/ethers-rs/issues/842) Add support for I256 types in `parse_units` and `format_units`. between its right shift operator and standard library numeric types.
Added `twos_complement` function for I256. - [#842](https://github.com/gakonst/ethers-rs/issues/842) Add support for I256 types in `parse_units` and `format_units`.
Added `twos_complement` function for I256.
## ethers-contract-abigen ## ethers-contract-abigen
### Unreleased ### Unreleased
- Fix Cargo.toml generation issue that could cause dependency conflicts [#1852](https://github.com/gakonst/ethers-rs/pull/1852)
- Use corresponding rust structs for event fields if they're solidity structs [#1674](https://github.com/gakonst/ethers-rs/pull/1674) - Fix Cargo.toml generation issue that could cause dependency conflicts [#1852](https://github.com/gakonst/ethers-rs/pull/1852)
- Add `ContractFilter` to filter contracts in `MultiAbigen` [#1564](https://github.com/gakonst/ethers-rs/pull/1564) - Use corresponding rust structs for event fields if they're solidity structs [#1674](https://github.com/gakonst/ethers-rs/pull/1674)
- generate error bindings for custom errors [#1549](https://github.com/gakonst/ethers-rs/pull/1549) - Add `ContractFilter` to filter contracts in `MultiAbigen` [#1564](https://github.com/gakonst/ethers-rs/pull/1564)
- Support overloaded events - generate error bindings for custom errors [#1549](https://github.com/gakonst/ethers-rs/pull/1549)
[#1233](https://github.com/gakonst/ethers-rs/pull/1233) - Support overloaded events
- Relax Clone requirements when Arc<Middleware> is used [#1233](https://github.com/gakonst/ethers-rs/pull/1233)
[#1183](https://github.com/gakonst/ethers-rs/pull/1183) - Relax Clone requirements when Arc<Middleware> is used
- Generate a deploy function if bytecode is provided in the abigen! input (json artifact) [#1183](https://github.com/gakonst/ethers-rs/pull/1183)
[#1030](https://github.com/gakonst/ethers-rs/pull/1030). - Generate a deploy function if bytecode is provided in the abigen! input (json artifact)
- Generate correct bindings of struct's field names that are reserved words [#1030](https://github.com/gakonst/ethers-rs/pull/1030).
[#989](https://github.com/gakonst/ethers-rs/pull/989). - Generate correct bindings of struct's field names that are reserved words
- Generate correct binding module names that are reserved words [#989](https://github.com/gakonst/ethers-rs/pull/989).
[#1498](https://github.com/gakonst/ethers-rs/pull/1498). Note: this changes - Generate correct binding module names that are reserved words
generated module names to snake case. For example, `MyContract` is now [#1498](https://github.com/gakonst/ethers-rs/pull/1498). Note: this changes
`my_contract` rather than `mycontract_mod`. generated module names to snake case. For example, `MyContract` is now
- The `Cargo.toml` generated by bindings now includes the `abigen` feature on `my_contract` rather than `mycontract_mod`.
ethers. [#1508](https://github.com/gakonst/ethers-rs/pull/1508) - The `Cargo.toml` generated by bindings now includes the `abigen` feature on
- More descriptive contract deserialization errors. ethers. [#1508](https://github.com/gakonst/ethers-rs/pull/1508)
[#1633](https://github.com/gakonst/ethers-rs/pull/1633) - More descriptive contract deserialization errors.
[#1633](https://github.com/gakonst/ethers-rs/pull/1633)
### 0.6.0 ### 0.6.0
- Add `MultiAbigen` to generate a series of contract bindings that can be kept in the repo - Add `MultiAbigen` to generate a series of contract bindings that can be kept in the repo
[#724](https://github.com/gakonst/ethers-rs/pull/724). [#724](https://github.com/gakonst/ethers-rs/pull/724).
- Add provided `event_derives` to call and event enums as well - Add provided `event_derives` to call and event enums as well
[#721](https://github.com/gakonst/ethers-rs/pull/721). [#721](https://github.com/gakonst/ethers-rs/pull/721).
- Implement snowtrace and polygonscan on par with the etherscan integration - Implement snowtrace and polygonscan on par with the etherscan integration
[#666](https://github.com/gakonst/ethers-rs/pull/666). [#666](https://github.com/gakonst/ethers-rs/pull/666).
## ethers-solc ## ethers-solc
### Unreleased ### Unreleased
- Add `OutputContext` to `ArtifactOutput` trait - Add `OutputContext` to `ArtifactOutput` trait
[#1621](https://github.com/gakonst/ethers-rs/pull/1621) [#1621](https://github.com/gakonst/ethers-rs/pull/1621)
- On windows all paths in the `ProjectCompilerOutput` are now slashed by default - On windows all paths in the `ProjectCompilerOutput` are now slashed by default
[#1540](https://github.com/gakonst/ethers-rs/pull/1540) [#1540](https://github.com/gakonst/ethers-rs/pull/1540)
- `ArtifactOutput::write_extras` now takes the `Artifacts` directly - `ArtifactOutput::write_extras` now takes the `Artifacts` directly
[#1491](https://github.com/gakonst/ethers-rs/pull/1491) [#1491](https://github.com/gakonst/ethers-rs/pull/1491)
- Make `ethers-solc` optional dependency of `ethers`, needs `ethers-solc` feature to activate - Make `ethers-solc` optional dependency of `ethers`, needs `ethers-solc` feature to activate
[#1463](https://github.com/gakonst/ethers-rs/pull/1463) [#1463](https://github.com/gakonst/ethers-rs/pull/1463)
- Add `rawMetadata:String` field to configurable contract output - Add `rawMetadata:String` field to configurable contract output
[#1365](https://github.com/gakonst/ethers-rs/pull/1365) [#1365](https://github.com/gakonst/ethers-rs/pull/1365)
- Use relative source paths and `solc --base-path` - Use relative source paths and `solc --base-path`
[#1317](https://github.com/gakonst/ethers-rs/pull/1317) [#1317](https://github.com/gakonst/ethers-rs/pull/1317)
- Save cache entry objects with relative paths - Save cache entry objects with relative paths
[#1307](https://github.com/gakonst/ethers-rs/pull/1307) [#1307](https://github.com/gakonst/ethers-rs/pull/1307)
- Bundle svm, svm-builds and sha2 dependencies in new `svm-solc` feature - Bundle svm, svm-builds and sha2 dependencies in new `svm-solc` feature
[#1071](https://github.com/gakonst/ethers-rs/pull/1071) [#1071](https://github.com/gakonst/ethers-rs/pull/1071)
- Emit artifact files for source files without any ContractDefinition - Emit artifact files for source files without any ContractDefinition
[#1296](https://github.com/gakonst/ethers-rs/pull/1296) [#1296](https://github.com/gakonst/ethers-rs/pull/1296)
- Wrap `ethabi::Contract` into new type `LosslessAbi` and `abi: Option<Abi>` with `abi: Option<LosslessAbi>` in `ConfigurableContractArtifact` - Wrap `ethabi::Contract` into new type `LosslessAbi` and `abi: Option<Abi>` with `abi: Option<LosslessAbi>` in `ConfigurableContractArtifact`
[#952](https://github.com/gakonst/ethers-rs/pull/952) [#952](https://github.com/gakonst/ethers-rs/pull/952)
- Let `Project` take ownership of `ArtifactOutput` and change trait interface - Let `Project` take ownership of `ArtifactOutput` and change trait interface
[#907](https://github.com/gakonst/ethers-rs/pull/907) [#907](https://github.com/gakonst/ethers-rs/pull/907)
- Total revamp of the `Project::compile` pipeline - Total revamp of the `Project::compile` pipeline
[#802](https://github.com/gakonst/ethers-rs/pull/802) [#802](https://github.com/gakonst/ethers-rs/pull/802)
- Support multiple versions of compiled contracts - Support multiple versions of compiled contracts
- Breaking: deprecate hardhat cache file compatibility, cache file now tracks artifact paths and their versions - Breaking: deprecate hardhat cache file compatibility, cache file now tracks artifact paths and their versions
- Fix flatten replacement target location - Fix flatten replacement target location
[#846](https://github.com/gakonst/ethers-rs/pull/846) [#846](https://github.com/gakonst/ethers-rs/pull/846)
- Fix duplicate files during flattening - Fix duplicate files during flattening
[#813](https://github.com/gakonst/ethers-rs/pull/813) [#813](https://github.com/gakonst/ethers-rs/pull/813)
- Add ability to flatten file imports - Add ability to flatten file imports
[#774](https://github.com/gakonst/ethers-rs/pull/774) [#774](https://github.com/gakonst/ethers-rs/pull/774)
- Add dependency graph and resolve all imported libraryfiles - Add dependency graph and resolve all imported libraryfiles
[#750](https://github.com/gakonst/ethers-rs/pull/750) [#750](https://github.com/gakonst/ethers-rs/pull/750)
- `Remapping::find_many` does not return a `Result` anymore - `Remapping::find_many` does not return a `Result` anymore
[#707](https://github.com/gakonst/ethers-rs/pull/707) [#707](https://github.com/gakonst/ethers-rs/pull/707)
- Add support for hardhat artifacts - Add support for hardhat artifacts
[#677](https://github.com/gakonst/ethers-rs/pull/677) [#677](https://github.com/gakonst/ethers-rs/pull/677)
- Add more utility functions to the `Artifact` trait - Add more utility functions to the `Artifact` trait
[#673](https://github.com/gakonst/ethers-rs/pull/673) [#673](https://github.com/gakonst/ethers-rs/pull/673)
- Return cached artifacts from project `compile` when the cache only contains - Return cached artifacts from project `compile` when the cache only contains
some files some files
- Add support for library linking and make `Bytecode`'s `object` filed an - Add support for library linking and make `Bytecode`'s `object` filed an
`enum BytecodeObject` [#656](https://github.com/gakonst/ethers-rs/pull/656). `enum BytecodeObject` [#656](https://github.com/gakonst/ethers-rs/pull/656).
- Nit: remove accidentally doubled double-quotes in an error message - Nit: remove accidentally doubled double-quotes in an error message
- Fix when compiler-out metadata is empty and there's no internalType [#1182](https://github.com/gakonst/ethers-rs/pull/1182) - Fix when compiler-out metadata is empty and there's no internalType [#1182](https://github.com/gakonst/ethers-rs/pull/1182)
- Add basic `solc` model checker options. - Add basic `solc` model checker options.
[#1258](https://github.com/gakonst/ethers-rs/pull/1258) [#1258](https://github.com/gakonst/ethers-rs/pull/1258)
### 0.6.0 ### 0.6.0
- add `EthAbiCodec` proc macro to derive `AbiEncode` `AbiDecode` implementation - add `EthAbiCodec` proc macro to derive `AbiEncode` `AbiDecode` implementation
[#704](https://github.com/gakonst/ethers-rs/pull/704) [#704](https://github.com/gakonst/ethers-rs/pull/704)
- move `AbiEncode` `AbiDecode` trait to ethers-core and implement for core types - move `AbiEncode` `AbiDecode` trait to ethers-core and implement for core types
[#531](https://github.com/gakonst/ethers-rs/pull/531) [#531](https://github.com/gakonst/ethers-rs/pull/531)
- Add EIP-712 `sign_typed_data` signer method; add ethers-core type `Eip712` - Add EIP-712 `sign_typed_data` signer method; add ethers-core type `Eip712`
trait and derive macro in ethers-derive-eip712 trait and derive macro in ethers-derive-eip712
[#481](https://github.com/gakonst/ethers-rs/pull/481) [#481](https://github.com/gakonst/ethers-rs/pull/481)
### 0.5.3 ### 0.5.3
- Allow configuring the optimizer & passing arbitrary arguments to solc - Allow configuring the optimizer & passing arbitrary arguments to solc
[#427](https://github.com/gakonst/ethers-rs/pull/427) [#427](https://github.com/gakonst/ethers-rs/pull/427)
- Decimal support for `ethers_core::utils::parse_units` - Decimal support for `ethers_core::utils::parse_units`
[#463](https://github.com/gakonst/ethers-rs/pull/463) [#463](https://github.com/gakonst/ethers-rs/pull/463)
- Fixed Wei unit calculation in `Units` - Fixed Wei unit calculation in `Units`
[#460](https://github.com/gakonst/ethers-rs/pull/460) [#460](https://github.com/gakonst/ethers-rs/pull/460)
- Add `ethers_core::utils::get_create2_address_from_hash` - Add `ethers_core::utils::get_create2_address_from_hash`
[#444](https://github.com/gakonst/ethers-rs/pull/444) [#444](https://github.com/gakonst/ethers-rs/pull/444)
- Bumped ethabi to 0.15.0 and fixing breaking changes - Bumped ethabi to 0.15.0 and fixing breaking changes
[#469](https://github.com/gakonst/ethers-rs/pull/469), [#469](https://github.com/gakonst/ethers-rs/pull/469),
[#448](https://github.com/gakonst/ethers-rs/pull/448), [#448](https://github.com/gakonst/ethers-rs/pull/448),
[#445](https://github.com/gakonst/ethers-rs/pull/445) [#445](https://github.com/gakonst/ethers-rs/pull/445)
### 0.5.2 ### 0.5.2
- Correctly RLP Encode transactions as received from the mempool - Correctly RLP Encode transactions as received from the mempool
([#415](https://github.com/gakonst/ethers-rs/pull/415)) ([#415](https://github.com/gakonst/ethers-rs/pull/415))
## ethers-providers ## ethers-providers
### Unreleased ### Unreleased
- Add a subset of the `admin` namespace - Convert provider errors to arbitrary middleware errors
[1880](https://github.com/gakonst/ethers-rs/pull/1880) [#1920](https://github.com/gakonst/ethers-rs/pull/1920)
- Return String for net version - Add a subset of the `admin` namespace
[1376](https://github.com/gakonst/ethers-rs/pull/1376) [1880](https://github.com/gakonst/ethers-rs/pull/1880)
- Stream of paginated logs that load logs in small pages - Return String for net version
[1285](https://github.com/gakonst/ethers-rs/pull/1285) [1376](https://github.com/gakonst/ethers-rs/pull/1376)
- Load previous logs before subscribing to new logs in case fromBlock is set - Stream of paginated logs that load logs in small pages
[1264](https://github.com/gakonst/ethers-rs/pull/1264) [1285](https://github.com/gakonst/ethers-rs/pull/1285)
- Add retries to the pending transaction future - Load previous logs before subscribing to new logs in case fromBlock is set
[1221](https://github.com/gakonst/ethers-rs/pull/1221) [1264](https://github.com/gakonst/ethers-rs/pull/1264)
- Add support for basic and bearer authentication in http and non-wasm websockets. - Add retries to the pending transaction future
[829](https://github.com/gakonst/ethers-rs/pull/829) [1221](https://github.com/gakonst/ethers-rs/pull/1221)
- Export `ethers_providers::IpcError` and `ethers_providers::QuorumError` - Add support for basic and bearer authentication in http and non-wasm websockets.
[1012](https://github.com/gakonst/ethers-rs/pull/1012) [829](https://github.com/gakonst/ethers-rs/pull/829)
- Export `ethers_providers::IpcError` and `ethers_providers::QuorumError`
[1012](https://github.com/gakonst/ethers-rs/pull/1012)
### 0.6.0 ### 0.6.0
- re-export error types for `Http` and `Ws` providers in - re-export error types for `Http` and `Ws` providers in
[#570](https://github.com/gakonst/ethers-rs/pull/570) [#570](https://github.com/gakonst/ethers-rs/pull/570)
- add a method on the `Middleware` to broadcast a tx with a series of escalating - add a method on the `Middleware` to broadcast a tx with a series of escalating
gas prices via [#566](https://github.com/gakonst/ethers-rs/pull/566) gas prices via [#566](https://github.com/gakonst/ethers-rs/pull/566)
- Remove unnecessary `Serialize` constraint to `R` (the Response type) in the - Remove unnecessary `Serialize` constraint to `R` (the Response type) in the
`request` method of `JsonRpcClient`. `request` method of `JsonRpcClient`.
- Fix `http Provider` data race when generating new request `id`s. - Fix `http Provider` data race when generating new request `id`s.
- Add support for `net_version` RPC method. - Add support for `net_version` RPC method.
[595](https://github.com/gakonst/ethers-rs/pull/595) [595](https://github.com/gakonst/ethers-rs/pull/595)
- Add support for `evm_snapshot` and `evm_revert` dev RPC methods. - Add support for `evm_snapshot` and `evm_revert` dev RPC methods.
[640](https://github.com/gakonst/ethers-rs/pull/640) [640](https://github.com/gakonst/ethers-rs/pull/640)
### 0.5.3 ### 0.5.3
- Expose `ens` module [#435](https://github.com/gakonst/ethers-rs/pull/435) - Expose `ens` module [#435](https://github.com/gakonst/ethers-rs/pull/435)
- Add `eth_getProof` [#459](https://github.com/gakonst/ethers-rs/pull/459) - Add `eth_getProof` [#459](https://github.com/gakonst/ethers-rs/pull/459)
### 0.5.2 ### 0.5.2
- Set resolved ENS name during gas estimation - Set resolved ENS name during gas estimation
([1e5a9e](https://github.com/gakonst/ethers-rs/commit/1e5a9efb3c678eecd43d5c341b4932da35445831)) ([1e5a9e](https://github.com/gakonst/ethers-rs/commit/1e5a9efb3c678eecd43d5c341b4932da35445831))
## ethers-signers ## ethers-signers
### Unreleased ### Unreleased
- `eth-keystore-rs` crate updated. Allow an optional name for the to-be-generated - `eth-keystore-rs` crate updated. Allow an optional name for the to-be-generated
keystore file [#910](https://github.com/gakonst/ethers-rs/pull/910) keystore file [#910](https://github.com/gakonst/ethers-rs/pull/910)
### 0.6.0 ### 0.6.0
- `LocalWallet::new_keystore` now returns a tuple `(LocalWallet, String)` - `LocalWallet::new_keystore` now returns a tuple `(LocalWallet, String)`
instead of `LocalWallet`, where the string represents the UUID of the newly instead of `LocalWallet`, where the string represents the UUID of the newly
created encrypted JSON keystore. The JSON keystore is stored as a file created encrypted JSON keystore. The JSON keystore is stored as a file
`/dir/uuid`. The issue [#557](https://github.com/gakonst/ethers-rs/issues/557) `/dir/uuid`. The issue [#557](https://github.com/gakonst/ethers-rs/issues/557)
is addressed [#559](https://github.com/gakonst/ethers-rs/pull/559) is addressed [#559](https://github.com/gakonst/ethers-rs/pull/559)
## ethers-contract ## ethers-contract
### Unreleased ### Unreleased
- Add abigen to default features - Add abigen to default features
[#1684](https://github.com/gakonst/ethers-rs/pull/1684) [#1684](https://github.com/gakonst/ethers-rs/pull/1684)
- Add extra Multicall helper methods - Add extra Multicall helper methods
[#1666](https://github.com/gakonst/ethers-rs/pull/1666) [#1666](https://github.com/gakonst/ethers-rs/pull/1666)
- Update Multicall to Multicall3 - Update Multicall to Multicall3
[#1584](https://github.com/gakonst/ethers-rs/pull/1584) [#1584](https://github.com/gakonst/ethers-rs/pull/1584)
- Add `Event::stream_with_meta` and `Event::subscribe_with_meta` - Add `Event::stream_with_meta` and `Event::subscribe_with_meta`
[#1483](https://github.com/gakonst/ethers-rs/pull/1483) [#1483](https://github.com/gakonst/ethers-rs/pull/1483)
- Added tx builder methods to `ContractFactory` - Added tx builder methods to `ContractFactory`
[#1289](https://github.com/gakonst/ethers-rs/pull/1289) [#1289](https://github.com/gakonst/ethers-rs/pull/1289)
- Relax Clone requirements when Arc<Middleware> is used - Relax Clone requirements when Arc<Middleware> is used
[#1183](https://github.com/gakonst/ethers-rs/pull/1183) [#1183](https://github.com/gakonst/ethers-rs/pull/1183)
- Add `EventStream::select` to combine streams with different event types - Add `EventStream::select` to combine streams with different event types
[#725](https://github.com/gakonst/ethers-rs/pull/725) [#725](https://github.com/gakonst/ethers-rs/pull/725)
- Substitute output tuples with rust struct types for function calls - Substitute output tuples with rust struct types for function calls
[#664](https://github.com/gakonst/ethers-rs/pull/664) [#664](https://github.com/gakonst/ethers-rs/pull/664)
- Add AbiType implementation during EthAbiType expansion - Add AbiType implementation during EthAbiType expansion
[#647](https://github.com/gakonst/ethers-rs/pull/647) [#647](https://github.com/gakonst/ethers-rs/pull/647)
- fix Etherscan conditional HTTP support - fix Etherscan conditional HTTP support
[#632](https://github.com/gakonst/ethers-rs/pull/632) [#632](https://github.com/gakonst/ethers-rs/pull/632)
- use `CARGO_MANIFEST_DIR` as root for relative paths in abigen - use `CARGO_MANIFEST_DIR` as root for relative paths in abigen
[#631](https://github.com/gakonst/ethers-rs/pull/631) [#631](https://github.com/gakonst/ethers-rs/pull/631)
### 0.6.0 ### 0.6.0
- Provide a way to opt out of networking support in abigen proc macro with - Provide a way to opt out of networking support in abigen proc macro with
`abigen-offline` feature [#580](https://github.com/gakonst/ethers-rs/pull/580) `abigen-offline` feature [#580](https://github.com/gakonst/ethers-rs/pull/580)
- Add `.call()` method to `Deployer` for performing dry runs of contract - Add `.call()` method to `Deployer` for performing dry runs of contract
deployments. [#554](https://github.com/gakonst/ethers-rs/pull/554) deployments. [#554](https://github.com/gakonst/ethers-rs/pull/554)
- Improve error message from failure in `ethers_contract_abigen::Source::parse` - Improve error message from failure in `ethers_contract_abigen::Source::parse`
[#552](https://github.com/gakonst/ethers-rs/pull/552) [#552](https://github.com/gakonst/ethers-rs/pull/552)
- use enumerated aliases for overloaded functions - use enumerated aliases for overloaded functions
[#545](https://github.com/gakonst/ethers-rs/pull/545) [#545](https://github.com/gakonst/ethers-rs/pull/545)
- add `EthCall` trait and derive macro which generates matching structs for - add `EthCall` trait and derive macro which generates matching structs for
contract calls [#517](https://github.com/gakonst/ethers-rs/pull/517) contract calls [#517](https://github.com/gakonst/ethers-rs/pull/517)
- Use rust types as contract function inputs for human readable abi - Use rust types as contract function inputs for human readable abi
[#482](https://github.com/gakonst/ethers-rs/pull/482) [#482](https://github.com/gakonst/ethers-rs/pull/482)
- `abigen!` now generates `Display` for all events using the new `EthDisplay` - `abigen!` now generates `Display` for all events using the new `EthDisplay`
macro [#513](https://github.com/gakonst/ethers-rs/pull/513) macro [#513](https://github.com/gakonst/ethers-rs/pull/513)
- `abigen!` now supports overloaded functions natively - `abigen!` now supports overloaded functions natively
[#501](https://github.com/gakonst/ethers-rs/pull/501) [#501](https://github.com/gakonst/ethers-rs/pull/501)
- `abigen!` now supports multiple contracts - `abigen!` now supports multiple contracts
[#498](https://github.com/gakonst/ethers-rs/pull/498) [#498](https://github.com/gakonst/ethers-rs/pull/498)
### Unreleased ### Unreleased
### 0.5.3 ### 0.5.3
- (De)Tokenize structs and events with only a single field as `Token:Tuple` - (De)Tokenize structs and events with only a single field as `Token:Tuple`
([#417](https://github.com/gakonst/ethers-rs/pull/417)) ([#417](https://github.com/gakonst/ethers-rs/pull/417))
## ethers-middleware ## ethers-middleware
### Unreleased ### Unreleased
- Relax Clone requirements when Arc<Middleware> is used - Relax Clone requirements when Arc<Middleware> is used
[#1183](https://github.com/gakonst/ethers-rs/pull/1183) [#1183](https://github.com/gakonst/ethers-rs/pull/1183)
- Ensure a consistent chain ID between a Signer and Provider in SignerMiddleware - Ensure a consistent chain ID between a Signer and Provider in SignerMiddleware
[#1095](https://gakonst/ethers-rs/pull/1095) [#1095](https://gakonst/ethers-rs/pull/1095)
- Add BlockNative gas oracle [#1175](https://github.com/gakonst/ethers-rs/pull/1175) - Add BlockNative gas oracle [#1175](https://github.com/gakonst/ethers-rs/pull/1175)
### 0.6.0 ### 0.6.0
- add the missing constructor for `Timelag` middleware via - add the missing constructor for `Timelag` middleware via
[#568](https://github.com/gakonst/ethers-rs/pull/568) [#568](https://github.com/gakonst/ethers-rs/pull/568)
- Removes GasNow as a gas price oracle - Removes GasNow as a gas price oracle
[#508](https://github.com/gakonst/ethers-rs/pull/508) [#508](https://github.com/gakonst/ethers-rs/pull/508)
- add initialize_nonce public function to initialize NonceMiddleManager - add initialize_nonce public function to initialize NonceMiddleManager
### 0.5.3 ### 0.5.3
- Added Time Lagged middleware - Added Time Lagged middleware
[#457](https://github.com/gakonst/ethers-rs/pull/457) [#457](https://github.com/gakonst/ethers-rs/pull/457)

View File

@ -159,6 +159,13 @@ pub trait Middleware: Sync + Send + Debug {
/// The next middleware in the stack /// The next middleware in the stack
fn inner(&self) -> &Self::Inner; fn inner(&self) -> &Self::Inner;
/// Convert a provider error into the associated error type by successively
/// converting it to every intermediate middleware error
fn convert_err(p: ProviderError) -> Self::Error {
let e = <Self as Middleware>::Inner::convert_err(p);
FromErr::from(e)
}
/// The HTTP or Websocket provider. /// The HTTP or Websocket provider.
fn provider(&self) -> &Provider<Self::Provider> { fn provider(&self) -> &Provider<Self::Provider> {
self.inner().provider() self.inner().provider()

View File

@ -304,6 +304,11 @@ impl<P: JsonRpcClient> Middleware for Provider<P> {
self self
} }
fn convert_err(p: ProviderError) -> Self::Error {
// no conversion necessary
p
}
fn default_sender(&self) -> Option<Address> { fn default_sender(&self) -> Option<Address> {
self.from self.from
} }