Skip to content

1.0.0

Latest

Choose a tag to compare

@kuny0707 kuny0707 released this 11 Aug 09:12
ee2b345

This release includes ABI v2 struct support, TLS support for gRPC connections, a chainable client builder, a security-hardening pass over the ABI decoder, crypto utilities and ApiWrapper, and a dependency overhaul (gRPC / Netty / BouncyCastle).

New Features

  • ABI v2 structs and nested arrays: encode/decode StaticStruct / DynamicStruct, including nested structs, arrays of structs and nested arrays; adds packed encoding (TypeEncoder.encodePacked) (#212).
  • TLS support for gRPC connections: enable via withTLS(), optionally with a custom trust certificate (withTLS(certFile)) (#211).
  • Chainable ApiWrapperBuilder: chainable configuration (withApiKey, withTimeout, addInterceptors, withPrivateKey, …); the SolidityNode endpoint is optional; ofMainnet / ofShasta / ofNile now build through the builder (#211, #217).
  • CI: new PR workflow running checkstyle and unit tests on JDK 8 and 17 (#218).

Security Hardening & Bug Fixes

  • ABI decoder hardening: malformed return data / event logs now fail fast with IllegalArgumentException instead of crashing or over-allocating memory (#219, #221).
  • Crypto hardening: invalid SECP256K1 arguments and out-of-range private keys now throw; Trident no longer installs the JVM-global BouncyCastle provider — register it yourself if you relied on this (#219, #222).
  • ApiWrapper hardening: failed construction no longer leaks channels and close() shuts down gracefully; invalid private keys, timeouts, addresses and empty transactions that were silently accepted before now throw (#211, #217, #222).
  • Contract deploy encoding: constructor arguments of a dynamic type are now encoded correctly (#223).

Deprecations (kept for compatibility)

  • All ApiWrapper constructors — use new ApiWrapperBuilder(...).build() (#211).
  • Address(Uint) — does not normalize to 160 bits; use Address(BigInteger) / Address(String) (#212).
  • SECP256K1.PROVIDER — deprecated along with the removal of global BC provider registration (#222).

Dependency Updates

  • Runtime dependencies upgraded for known CVEs, with the graph trimmed: io.netty:netty-all is replaced by io.netty:netty-buffer (no longer transitive) and com.fasterxml.jackson.core:jackson-core is excluded — declare them yourself if you relied on them via Trident (#214).
    • Bump io.grpc:grpc-netty-shaded / io.grpc:grpc-netty / io.grpc:grpc-okhttp / io.grpc:grpc-protobuf / io.grpc:grpc-stub from 1.75.0 to 1.81.0
    • Bump io.netty:netty-buffer from 4.1.125.Final to 4.1.135.Final
    • Bump org.bouncycastle:bcprov-jdk18on from 1.78.1 to 1.84
    • Bump io.vertx:vertx-core from 4.5.21 to 4.5.27
  • io.grpc:protoc-gen-grpc-java is resolved per platform: 1.81.0 on macOS and on Linux/aarch64, 1.60.0 on Linux/x86_64 and Windows for CentOS 7 compatibility (#220).