All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Lazy-evaluate all input properties of
FoundrySourceProvider
(#167) - Return error instead of throwing exception in
AnvilBuilder#spawn
method
- Make
Multicall3.Aggregatable
implementIntoCallRequest
- [breaking] Change
estimateGas
to return gas asLong
instead ofBigInteger
- Handle contract reverts even if JSON-RPC returns wrong error code
- Fix abigen of overloaded functions with same java types (#154)
- Convert
addresses
array content to string inLogFilter#toString
- Manually fill missing transaction details if
eth_fillTransaction
is not supported (#152) - Add docs to generated contract bindings (#155)
- Add support for auto-generating bindings for foundry projects (#156)
- Add a default value for
foundryRoot
option inFoundrySourceProvider
- Add function selector suffix to generated duplicate function names
- Allow passing
BlockId
parameter toLogFilter#atBlock
function
- Upgrade gradle to v8.9
- Simplify
CallRequest#toUnsignedTransactionOrNull
- Replace deprecated kotlin compiler flags
- Set correct current version in README.md
- Update ethers-kt plugin version to 1.1.0 in
examples
- Add word and checksum validation to
MnemonicCode
initialization - Support deserializing
RpcError#data
as any type - [breaking] Change
RpcError#data
toJsonNode
type - [breaking] Change
getBlockHeader
/getBlockWithTransactions
/getBlockWithHashes
/getUncleBlockHeader
to returnOptional
-lly wrapped value - Serialize
CallRequest#data
field asdata
instead ofinput
(#147)
- Add support for GCP KMS Signer (#141)
- Implement
anvil
bindings andAnvilProvider
(#143) - Add support for parsing raw abi function signatures with argument names (#149)
- Change version to snapshot
- Add additional documentation to
AccountOverride
andBlockOverride
- Add depsize gradle task
- Fix
watch*
methods docstrings - [breaking] Rename
watchNewBlocks
towatchNewBlockHashes
- [breaking] Standardize transactionIndex field type to Int
- Handle hyphens in module names for loaderPrefix in EthersAbigenTask
- Set correct formula for Uniswap v2 fee derivation in docstring
- Fix potential deadlocks during reconnection in
WsClient
- Use correct name and type for
yParity
field when decodingRPCTransaction
- Remove gas tip/fee cap validation from
TxBlob
andTxDynamicFee
- Make signature values in
RPCTransaction
optional - Add missing closed connection condition signaler to
WsClient#onFailure
- Make
Block#mixHash
nullable - Encode
blockCount
param to hex ingetFeeHistory
RPC call - Update no wildcard ENS test case
AnonymousEventFilter#topic0
filter, add convenience methods forBigInteger
/Address
topics
- Document
FeeHistory
and add additional helper methods - Add support for using
BlockId.Name
when fetchingFeeHistory
- [breaking] Implement
StateOverride
as a safer alternative to working withMap<Address, AccountOverride>
directly (#106) - Add option to set initial map size for
StateOverride
- Support nullable types in
StateOverride
when merging/applying changes StateOverride#takeChanges
function- Add cloning constructor to
CallRequest
- Add
TransactionReceipt#getEffectiveGasTip
method - Add
ExecutionRevertedError
contract error - Implement equals/hashCode/toString for StateOverride along with apply/take methods for single element
- Add UniswapV2FeeFinder to examples
- Add txIndex to
TracerConfig
- Add support for defining RPC request headers
- Add
Multicall
example (#111) - Add documentation for rewardPercentiles value range. (#113)
- Add block transaction simulation with provider.traceCall and IntoCallRequest to examples (#112)
- Suppress IDE inspections in generated contract wrappers (#114)
EventFactory#isLogValid
and additional utils for converting logs to events- Add
blockTimestamp
field toLog
type - Ignore unknown JSON fields by default on all types
- Add 10sec ping interval to default OkHttpClient in JsonClientConfig
- Implement equals/hashCode for
Result
variants - Enable
BatchRpcRequest
batchSent
Status Modification (#122) - [breaking] Make
BlockingSubscriptionStream
more configurable and reduce gc pressure when waiting for new events - Make SubscriptionStream#forEachAsync return itself
- Support deserialization of other fields in
CallTracer
. (#125) - Add constructor for hex strings to Signature (#121)
- Implement
PrivateKeySigner#toString
- Add "type" field to CallTracer
- Add Result#isNullOrFailure extension function
- Implement equals/hashCode for crypto and signer types
- Add
onSuccess
/onFailure
operators toRpcRequest
/RpcSubscribe
- Implement equals/hashCode for
BlockOverride
andCallRequest
- Add additional conversion methods to
EthUnit
forInt
/Long
/Double
types - Add support for EIP-55 and EIP-1191 checksummed addresses
- Add BigInteger constructor to Hash type
- Inspection fixes
- Replace usage of deprecated Jackson methods
- Update gradle GH action to gradle/actions/setup-gradle@v3 (#115)
- Upgrade gradle to v8.7
- Use concurrent queues from jctools for better performance in
WsClient
- Add
toString
cache forAddress
/Hash
/Bytes
types (#124) - [breaking] Implement
RlpEncoder
pre-sizing for allRlpEncodable
types and list encodings (#137)
- Merge
JsonPubSubClient
intoJsonRpcClient
(#116) - [breaking] Make
access list
property immutable on unsigned txs, replacerlpEncodeFields
withrlpEncodeEnveloped
(#136)
- Release abigen-plugin as a fat jar
- Fix docstring typo for ExecutionRevertedError
- Fix RpcClientConfig docstrings
- Add
out
generic bound toAbiType.Tuple#factory
input type array - Fix TxDynamicFeeTest
- Document which fields from
Aggregatable
are used for aggregate call - Minor readme update (#138)
- Add missing list append in
List<CompletableFuture<T>>.await()
extension function (#89) - Don't include logs from failed CallTracer frames (#88)
- Handle empty ByteArray in RlpDecodable
- Make Provider#fromUrl actually return failure instead of throwing
- Remove deprecated "packages" parameter from log4j2.xml
- Fix decoding arrays of type Bytes/FixedBytes in AbiCodec (#102)
- [breaking] Change
ConstructorCall#call
result to include all state changes made by contract deployment (#90)
- Add function to create signature from 65 bytes long array
- Validate BigInteger BlockOverride fields and allow assigning back to null
- Add "flatten" function to CallTracer and clarify "getAllLogs" docstring
- Throw an exception if multiple tracers of the same type are added to the same
MuxTracer
- Option to provide custom OkHttpClient instance to Provider#fromUrl
- Replace Stopwatch with kotlin TimeSource
- [breaking] Move
chainId
fetching from constructor toProvider#fromUrl
(#97) - Return a failure response instead of throwing if pub-sub not available in
Provider#subscribe*
methods (#98) - Make BatchRpcRequest#sendAsync return "false" future if no requests added
- Simplify Result generics
- Add Bytes#copyOfRange function and some additional docs
- [breaking] Simplify and improve ergonomics of
LogFilter
(#92) - [breaking] Add RpcClientConfig for configuring JsonRpcClient implementations (#91)
- [breaking] Generify
AbiType
(#104)
- Fix Middleware code example in docs
- Simplify applying of abigen plugin in consuming projects by releasing it as a fat jar
- 40% reduced allocation rate when decoding BigInteger/String types
- Split Tracer into two interfaces for improved API without the need for throwing exceptions in Mux/Struct tracers
- [breaking] Treat failed transaction as successful inclusion result in
PendingInclusion
(#99)
- Rlp encoding of BigInteger where its bytearray has exactly one non-zero element but is larger than RLP_STRING_SHORT
- RLP-encoding of ByteArray with a single, 0 element
- [breaking] Make encoding/decoding RLP lists non-ambiguous by returning empty List instead of null (#65)
- Gracefully handle unsuccessful http responses (close #68)
- [breaking] Correctly abi-generate complex constant names. Might break some incorrectly generated AbiFunction constants
- Set missing generic result type for
EthApi#createAccessList
function
- Add
createAccessList
function toReadWriteContractCall
- Add helper method to initialize Provider with correct client directly from url
- Add
Signature#toByteArray
function - Add additional
ContractCall#call/traceCall
overloads (#67) - Add
baseFeePerBlobGas
andblobGasUsedRatio
toFeeHistory
type - Add
eth_blobBaseFee
RPC call - Add support for aggregating contract calls into
Multicall3
(#70) - Add
GasUtils
for working with eip1559 gas price mechanics - Add
eth_callMany
/debug_traceCallMany
RPC calls (#75) - Add
IntoCallRequest
interface and use it in provider function arguments (#76) - Add additional
call/traceCall
function overloads with block number/hash - Add function to
PrestateTracer.Result
to create state override from state diff (#78) - Add support for converting
CallTracer#CallLog
intoLog
, and returning all logs from aCallFrame
(#79) - Add
Web3Api
- Temporarily disable jacoco coverage reports
- Move
TxBlob
test RLP to a file, so it does not clutter the editor - Update README.md to use the new Result type functions
- [breaking] Make
value
property private and replace it with asByteArray/toByteArray functions for Address/Bloom/Bytes/Hash types - [breaking] Change
selector
property type ofAbiFunction
fromByteArray
toBytes
- [breaking] Rename
Bytes#ZERO
toBytes#EMPTY
- TracerConfig state/block overrides field name
- Don't override kotlin compiler arg "-opt-in" in tests
- Full support for ENS names and avatars, with wildcard resolution and offchain resolution via CCIP-Read (#59)
- Add additional conversion methods to
EthUnit
- Improve functional operators on
RpcRequest
/RpcResponse
(#60) - New Result type (#62)
- [breaking] Migrate the project to use new
Result
type (#63)
- Update ktlint-gradle plugin to v12.1.0
- Add ens section to README.md
- Fix gradle unit-test report aggregation and GH actions upload
- Join lint and test runs via gradle check
- Project artifact publishing and move to maven central (#1)
- Ethers-abi README file (#13)
- Ethers-providers README file (#14)
- Correctly return mapped rpc requests (#25)
- Create
eth_call
params array with minimal amount of values (#28) - Add resolver error factories in generated wrappers via companion object init (#41)
eth_call
execution revert decoding (#42)- Race condition when awaiting new WS events
- Clear previous task outputs if its inputs have changed (#49)
- Normalize reserved field and parameter names
- Implement support for bip32, bip39 and mnemonic key source (#2)
- Add usage examples (#24)
- Function to unwrap all batch responses (#30)
- Wei units conversion (#29)
- Force-load all generated contract wrapper classes on first access (#44)
- Add support for generating random mnemonics using SecureRandom
- Add support for eip-4844 blob transactions (#3)
- Add support for receiving unsupported tx types (#34)
- Add support for eip-4788
parentBeaconBlockRoot
header field (#43) - Add traceBlock RPC call
- Update readme files
- Add abigen plugin to quickstart gradle example
- Upgrade gradle to v8.5 (#38)
- Convert "invoke" functions back to constructors in PrivateKeySigner (#35)
Initial release