Releases: Kr1ptal/ethers-kt
Releases · Kr1ptal/ethers-kt
v1.2.1
Highlights
- Foundry abi source: fix generating bindings for projects with non-standard folder layout. Foundry project is now also force-built if it needs to be rebuilt so the output does not contain removed contracts.
Bug Fixes
- Lazy-evaluate all input properties of
FoundrySourceProvider
(#167) - Return error instead of throwing exception in
AnvilBuilder#spawn
method
Features
- Make
Multicall3.Aggregatable
implementIntoCallRequest
V1.2.0
Highlights
- Foundry abi source: automatically builds foundry project and generates ABI contract bindings.
- Documentation on ABI contract bindings.
Provider#fillTransaction
works on more RPC's, even if they don't supporteth_fillTransaction
call.
Bug Fixes
- [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
Features
- 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
Miscellaneous Tasks
- Upgrade gradle to v8.9
Refactor
- Simplify
CallRequest#toUnsignedTransactionOrNull
Misc
- Replace deprecated kotlin compiler flags
- Set correct current version in README.md
- Update ethers-kt plugin version to 1.1.0 in
examples
v1.1.0
Highlights
- Spin up and interact with
Anvil
instances - Google KMS signer
- Block requests now return the result wrapped in
Optional
.
Bug Fixes
- 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)
Features
- Add support for GCP KMS Signer (#141)
- Implement
anvil
bindings andAnvilProvider
(#143) - Add support for parsing raw abi function signatures with argument names (#149)
Miscellaneous Tasks
- Change version to snapshot
- Add additional documentation to
AccountOverride
andBlockOverride
Misc
- Add depsize gradle task
- Fix
watch*
methods docstrings - [breaking] Rename
watchNewBlocks
towatchNewBlockHashes
v1.0.0
Highlights
This release marks the first API-stable release! We do not expect major API changes going forward, but they will now follow semantic versioning. The library is fully production ready and has been running so for the last couple of months without any major stability issues.
- First API-stable release
StateOverrides
as a safer alternative to plainAccountOverride
map- Core types performance improvements during repeated serialization
- Faster RLP encoding
- Address checksum support
- Improved multi-chain compatibility (Optimsim, Arbitrum, ZkSync)
- Bug fixes for
WsClient
Bug Fixes
- [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
Features
- 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
Miscellaneous Tasks
- Inspection fixes
- Replace usage of deprecated Jackson methods
- Update gradle GH action to gradle/actions/setup-gradle@v3 (#115)
- Upgrade gradle to v8.7
Performance
- 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)
Refactor
- Merge
JsonPubSubClient
intoJsonRpcClient
(#116) - [breaking] Make
access list
property immutable on unsigned txs, replacerlpEncodeFields
withrlpEncodeEnveloped
(#136)
Misc
- 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)
v0.5.0
Bug Fixes
- 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)
Features
- 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)
Miscellaneous Tasks
- Fix Middleware code example in docs
- Simplify applying of abigen plugin in consuming projects by releasing it as a fat jar
Performance
- 40% reduced allocation rate when decoding BigInteger/String types
Refactor
- 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)
v0.4.0
Bug Fixes
- 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
Features
- 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
Miscellaneous Tasks
- 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
Refactor
- [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
v0.3.0
Bug Fixes
- TracerConfig state/block overrides field name
- Don't override kotlin compiler arg "-opt-in" in tests
Features
- 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)
Miscellaneous Tasks
- 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
v0.2.0
Bug Fixes
- 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
Features
- 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
Miscellaneous Tasks
- Update readme files
- Add abigen plugin to quickstart gradle example
- Upgrade gradle to v8.5 (#38)
Refactor
- Convert "invoke" functions back to constructors in PrivateKeySigner (#35)
Full Changelog: v0.1.0...v0.2.0
v0.1.0
Initial version release