ethers-rs/CHANGELOG-OLD.md

23 KiB

Changelog

The old ethers-rs changelog, that has been discontinued.

The new one is located here, which is automatically generated by git-cliff.

ethers-core

Unreleased

  • Add support for ethlive as a chain name #2268
  • Make Chain more round-trip friendly #2270
  • Add other: OtherFields to TransactionReceipt #2209
  • Add Signature::recover_typed_data #2120
  • Add abi::encode_packed #2104
  • Add support for custom JavaScript tracer to debug_traceCall and debug_traceTransaction #2064
  • Add a Send bound to the IntoFuture implementation of ContractCall #2083
  • Bump svm-rs dependency to fix conflicts with Rust Crytpo packages #2051
  • Avoid unnecessary allocations in utils #2046
  • Add abigen support for hardhat generated bytecode json format #2012
  • Fix typo in RwClient docs for write_client method.
  • Add support for Geth debug_traceCall #1949
  • Add support for Geth built-in tracer and config #2121
  • Graceful handling of WebSocket transport errors #1889 #1815
  • MiddlewareBuilder trait to instantiate a Provider as Middleware layers.
  • An Event builder can be instantiated specifying the event filter type, without the need to instantiate a contract.
  • Add 'ethers_core::types::OpCode' and use in 'ethers_core::types::VMOperation' #1857
  • Remove rust_decimals dependency for ethers-core
  • Add support for numbers greater than 2^96 for ethers_core::utils::parse_units #1822
  • Add comment about safety of u8 -> u64 cast in ethers_core::types::Signature
  • Stop defaulting to the "latest" block in eth_estimateGas params #1657
  • Fix geth trace types for debug_traceTransaction rpc
  • Fix RLP decoding of legacy Transaction
  • Fix RLP encoding of TransactionReceipt #1661
  • Add Unit8 helper type #1639
  • Add evm.deployedBytecode.immutableReferences output selector #1523
  • Added get_erc1155_token_transfer_events function for etherscan client #1503
  • Add support for Geth debug_traceTransaction #1469
  • Use correct, new transaction type for typool_content RPC endpoint #1501
  • Fix the default config for generated BuildInfo #1458
  • Allow configuration of the output directory of the generated BuildInfo #1433
  • capture unknown fields in Block and Transaction type via new OtherFields type #1423
  • Methods like set_to() from TypedTransaction can be chained
  • Use H64 for Block Nonce #1396
  • Add as_*_mut methods on TypedTransaction #1310
  • AWS EIP712 data signing no longer signs with EIP155
  • Added Cronos testnet to etherscan options #1276
  • Fix parsing of a pending block #1272
  • Removed Cronos mainnet beta from is_legacy 1246
  • Fix RLP decoding of from field for Eip1559TransactionRequest and Eip2930TransactionRequest, remove Eip1559TransactionRequest sighash method #1180
  • Fix RLP encoding of absent access list in Transaction 1137
  • Pass compilation time as additional argument to Reporter::on_solc_success #1098
  • Fix aws signer bug which maps un-normalized signature to error if no normalization occurs (in aws::utils::decode_signature)
  • Implement signed transaction RLP decoding #1096
  • Transaction::from will default to Address::zero(). Add recover_from and recover_from_mut methods for recovering the sender from signature, and also setting the same on tx #1075.
  • Add Etherscan account API endpoints #939
  • Add FTM Mainet and testnet to parse method "try_from" from Chain.rs and add cronos mainet and testnet to "from_str"
  • Add FTM mainnet and testnet Multicall addresses #927
  • Add Cronos mainnet beta and testnet to the list of known chains #926
  • Chain::to_string will return the same chain name as Chain::from_str
  • Add eth_syncing #848
  • Fix overflow and possible divide-by-zero in estimate_priority_fee
  • Add BSC mainnet and testnet to the list of known chains #831
  • Returns error on invalid type conversion instead of panicking #691
  • Change types mapping for solidity bytes to rust ethers::core::Bytes and solidity uint8[] to rust Vec<u8>. #613
  • Fix format_units to return a String of representing a decimal point float such that the decimal places don't get truncated. #597
  • Implement hex display format for ethers::core::Bytes #624.
  • Fix fee_history to first try with block_count encoded as a hex QUANTITY. #668
  • Fix fill_transaction to set nonces in transactions, if the sender is known and no nonce is specified
  • Move fill_transaction implementation to the provider, to allow middleware to properly override its behavior.
  • Add informational messages to solc installation and compilation.
  • Significantly refactor MultiAbigen module generation. Now allows for lib generation, and does not make unnecessary disk writes. #854
  • Refactor ethers-contract-abigen to use eyre instead of anyhow via #858
  • Add Deployer.send_with_receipt -> Result<(Contract, Receipt), Error> so that the receipt can be returned to the called when deploying a contract #865
  • Add Arbitrum mainnet and testnet to the list of known chains
  • Add ENS avatar and TXT records resolution #889
  • Do not override gas limits provided by an outer middleware when including an EIP-2930 access list #901
  • Add a getter to ProjectCompileOutput that returns a mapping of compiler versions to a vector of name + contract struct tuples #908
  • Add Yul compilation #994
  • Enforce commutativity of ENS reverse resolution #996
  • Add TransactionReceipt::to and TransactionReceipt::from #1184
  • Add From<H160> and From<Vec> traits to ValueOrArray<H160> #1199
  • Fix handling of Websocket connection errors #1287
  • Add Arithmetic Shift Right operation for I256 #1323
  • #1535 Add support to Aurora and Aurora testnet networks.
  • #1632 Re-export H32 from ethabi.
  • #1634 Derive missing Clone, Copy and Debug impls in ethers-etherscan.
  • Bytes debug format now displays hex literals #1658
  • #1451 Add Arithmetic Shift Left operation for I256
  • #1860 Update I256 type documentation calling out the inconsistency between its right shift operator and standard library numeric types.
  • #842 Add support for I256 types in parse_units and format_units. Added twos_complement function for I256.
  • #1934 Allow 16 calls in multicall.
  • #1941 Add add_calls and call_array for Multicall.
  • Added basic event log filtering example.

ethers-contract-abigen

Unreleased

  • Abigen now generates events with new <B, M> generic pattern #2103
  • Fix Cargo.toml generation issue that could cause dependency conflicts #1852
  • Use corresponding rust structs for event fields if they're solidity structs #1674
  • Add ContractFilter to filter contracts in MultiAbigen #1564
  • generate error bindings for custom errors #1549
  • Support overloaded events #1233
  • Relax Clone requirements when Arc is used #1183
  • Generate a deploy function if bytecode is provided in the abigen! input (json artifact) #1030.
  • Generate correct bindings of struct's field names that are reserved words #989.
  • Generate correct binding module names that are reserved words #1498. Note: this changes generated module names to snake case. For example, MyContract is now my_contract rather than mycontract_mod.
  • The Cargo.toml generated by bindings now includes the abigen feature on ethers. #1508
  • More descriptive contract deserialization errors. #1633

0.6.0

  • Add MultiAbigen to generate a series of contract bindings that can be kept in the repo #724.
  • Add provided event_derives to call and event enums as well #721.
  • Implement snowtrace and polygonscan on par with the etherscan integration #666.

ethers-solc

Unreleased

  • Add OutputContext to ArtifactOutput trait #1621
  • On windows all paths in the ProjectCompilerOutput are now slashed by default #1540
  • ArtifactOutput::write_extras now takes the Artifacts directly #1491
  • Make ethers-solc optional dependency of ethers, needs ethers-solc feature to activate #1463
  • Add rawMetadata:String field to configurable contract output #1365
  • Use relative source paths and solc --base-path #1317
  • Save cache entry objects with relative paths #1307
  • Bundle svm, svm-builds and sha2 dependencies in new svm-solc feature #1071
  • Emit artifact files for source files without any ContractDefinition #1296
  • Wrap ethabi::Contract into new type LosslessAbi and abi: Option<Abi> with abi: Option<LosslessAbi> in ConfigurableContractArtifact #952
  • Let Project take ownership of ArtifactOutput and change trait interface #907
  • Total revamp of the Project::compile pipeline #802
    • Support multiple versions of compiled contracts
    • Breaking: deprecate hardhat cache file compatibility, cache file now tracks artifact paths and their versions
  • Fix flatten replacement target location #846
  • Fix duplicate files during flattening #813
  • Add ability to flatten file imports #774
  • Add dependency graph and resolve all imported libraryfiles #750
  • Remapping::find_many does not return a Result anymore #707
  • Add support for hardhat artifacts #677
  • Add more utility functions to the Artifact trait #673
  • Return cached artifacts from project compile when the cache only contains some files
  • Add support for library linking and make Bytecode's object filed an enum BytecodeObject #656.
  • Nit: remove accidentally doubled double-quotes in an error message
  • Fix when compiler-out metadata is empty and there's no internalType #1182
  • Add basic solc model checker options. #1258

0.6.0

  • add EthAbiCodec proc macro to derive AbiEncode AbiDecode implementation #704
  • move AbiEncode AbiDecode trait to ethers-core and implement for core types #531
  • Add EIP-712 sign_typed_data signer method; add ethers-core type Eip712 trait and derive macro in ethers-derive-eip712 #481

0.5.3

  • Allow configuring the optimizer & passing arbitrary arguments to solc #427
  • Decimal support for ethers_core::utils::parse_units #463
  • Fixed Wei unit calculation in Units #460
  • Add ethers_core::utils::get_create2_address_from_hash #444
  • Bumped ethabi to 0.15.0 and fixing breaking changes #469, #448, #445

0.5.2

  • Correctly RLP Encode transactions as received from the mempool (#415)

ethers-providers

Unreleased

  • Breaking: WS now includes reconnection logic and a changed connect interface. Old behavior can be accessed via the legacy_ws feature #2181
  • Re-organize the crate. #2150
  • Convert provider errors to arbitrary middleware errors #1920
  • Add a subset of the admin namespace 1880
  • Return String for net version 1376
  • Stream of paginated logs that load logs in small pages 1285
  • Load previous logs before subscribing to new logs in case fromBlock is set 1264
  • Add retries to the pending transaction future 1221
  • Add support for basic and bearer authentication in http and non-wasm websockets. 829
  • Export ethers_providers::IpcError and ethers_providers::QuorumError 1012

0.6.0

  • re-export error types for Http and Ws providers in #570
  • add a method on the Middleware to broadcast a tx with a series of escalating gas prices via #566
  • Remove unnecessary Serialize constraint to R (the Response type) in the request method of JsonRpcClient.
  • Fix http Provider data race when generating new request ids.
  • Add support for net_version RPC method. 595
  • Add support for evm_snapshot and evm_revert dev RPC methods. 640

0.5.3

  • Expose ens module #435
  • Add eth_getProof #459

0.5.2

  • Set resolved ENS name during gas estimation (1e5a9e)

ethers-signers

Unreleased

  • fix: LedgerSigner has improved tracing and a ledger app bug mitigation #2192
  • eth-keystore-rs crate updated. Allow an optional name for the to-be-generated keystore file #910
  • 1983 Added a from_bytes function for the Wallet type.
  • Allow parsing of private key that has 0x prefix #2037

0.6.0

  • LocalWallet::new_keystore now returns a tuple (LocalWallet, String) instead of LocalWallet, where the string represents the UUID of the newly created encrypted JSON keystore. The JSON keystore is stored as a file /dir/uuid. The issue #557 is addressed #559

ethers-contract

Unreleased

  • (Breaking) Add Revert to ContractError. Add impl EthError for String. Modify existing ContractError variants to prevent accidental improper usage. Change MulticallError to use ContractError::Revert. Add convenience methods to decode errors from reverts. #2172
  • (Breaking) Improve Multicall result handling #2164
  • (Breaking) Make Event objects generic over borrow & remove lifetime #2105
  • Make Factory objects generic over the borrow trait, to allow non-arc mware #2103
  • Make Contract objects generic over the borrow trait, to allow non-arc mware #2082
  • Return pending transaction from Multicall::send #2044
  • Add abigen to default features #1684
  • Add extra Multicall helper methods #1666
  • Update Multicall to Multicall3 #1584
  • Add Event::stream_with_meta and Event::subscribe_with_meta #1483
  • Added tx builder methods to ContractFactory #1289
  • Relax Clone requirements when Arc is used #1183
  • Add EventStream::select to combine streams with different event types #725
  • Substitute output tuples with rust struct types for function calls #664
  • Add AbiType implementation during EthAbiType expansion #647
  • fix Etherscan conditional HTTP support #632
  • use CARGO_MANIFEST_DIR as root for relative paths in abigen #631

0.6.0

  • Provide a way to opt out of networking support in abigen proc macro with abigen-offline feature #580
  • Add .call() method to Deployer for performing dry runs of contract deployments. #554
  • Improve error message from failure in ethers_contract_abigen::Source::parse #552
  • use enumerated aliases for overloaded functions #545
  • add EthCall trait and derive macro which generates matching structs for contract calls #517
  • Use rust types as contract function inputs for human readable abi #482
  • abigen! now generates Display for all events using the new EthDisplay macro #513
  • abigen! now supports overloaded functions natively #501
  • abigen! now supports multiple contracts #498

Unreleased

0.5.3

  • (De)Tokenize structs and events with only a single field as Token:Tuple (#417)

ethers-middleware

Unreleased

  • Added openssl and rustls feature flags #1961
  • Relax Clone requirements when Arc is used #1183
  • Ensure a consistent chain ID between a Signer and Provider in SignerMiddleware #1095
  • Add BlockNative gas oracle #1175

0.6.0

  • add the missing constructor for Timelag middleware via #568
  • Removes GasNow as a gas price oracle #508
  • add initialize_nonce public function to initialize NonceMiddleManager

0.5.3

  • Added Time Lagged middleware #457