Web3j 6 Release: Fusaka and Agentic Ready

Web3j 6 Release: Fusaka and Agentic Ready

A new milestone release of Web3j has just gone out — Web3j 6.0!

This release spans the three core repositories — web3j, web3j-evm and web3j-unit. It provides full support for Fusaka, Ethereum's biggest scaling upgrade since Dencun, closes the lingering Pectra parity gaps, and takes Web3j's first real step into the agentic era. Whether you (or your agents) are building decentralised applications or interacting with Ethereum events, this release brings Web3j up to date with the latest evolution of the protocol.

Why we needed this release

Fusaka is a protocol and node upgrade. Besu, Teku, and the other clients implement it, but that doesn't help a Java developer on its own. A Java application never talks to a client's internals; it talks to Web3j. If Web3j doesn't understand Fusaka, neither does your app.

The part that actually breaks is EIP-7594 (PeerDAS). Fusaka reworked the blob transaction wrapper and replaced the old per-blob KZG proofs with cell proofs. After the fork, a blob transaction built with the old proofs is rejected outright by the node, with the error unexpected eip-4844 sidecar after osaka. So anyone sending blobs from Java needed an update, and that update had to come from Web3j. We did this work with support from an Ethereum Foundation grant.

Blob transactions, the Fusaka way (EIP-7594)

Web3j 6 now builds the network wrapper (tx_payload_body, wrapper_version, blobs, commitments, cell_proofs), signs, encodes, and decodes the new EIP-7594 blob transaction, and it generates the cell proofs for you. Before this, there was no way to produce a valid Fusaka blob transaction from Web3j alone. Now it's one call:

You sign and broadcast it exactly as you always have. Under the hood the cell proofs are computed with the KZG cell-proof routines and laid out in the exact blob-major order the spec requires. If you already have the commitments and proofs from somewhere else, there's a lower-level createTransaction overload that takes them directly.

Closing the Pectra gaps

Two Pectra features had been sitting unfinished in Web3j. Fusaka was a good reason to get them done.

EIP-7702 authorization signing. Web3j could already build and decode SetCode (type 0x04) transactions, but it expected you to hand it authorization tuples that were already signed. That left you writing the MAGIC-byte hashing and secp256k1 recovery by hand. Web3j 6 does it for you:

We checked the output against the reference EIP-7702 test vectors, so the hash, yParity, r, and s match what other clients produce. An authorization signed with Web3j will work anywhere in the ecosystem.

EIP-7691 blob base fee. Web3j was still calculating the blob base fee with the Cancun update fraction (3338477), which returns the wrong number on any chain past Pectra. Web3j 6 uses the Prague value (5007716) by default and keeps the Cancun one available for historical chains. There is also a new eth_blobBaseFee call, so you can let the node compute the fee under whatever fork is active, including Fusaka's EIP-7918, and stop worrying about a hardcoded constant:

The embedded EVM

Fusaka isn't only about blobs. A set of smaller EVM changes shipped too, and they matter when you run contract tests locally. Web3j-evm 6 now runs on Besu 26.2.0, so the embedded EVM and @EVMTest in Web3j-unit pick up the Osaka rules: the CLZ opcode (EIP-7939), the MODEXP repricing and input limits (EIP-7883 and EIP-7823), and the secp256r1 P256VERIFY precompile (EIP-7951) used for passkey and WebAuthn style verification. Your tests now run against the same rules as mainnet.

Built for the agentic era

Web3j 6 adds agent and skills files, along with a context7 manifest, to the repository. These are docs written for AI coding assistants and agents to read directly. More developers are building with an AI assistant in the loop, and this lets those tools understand Web3j without someone pasting documentation into a prompt first. It's a starting point, and we plan to do more here.

You can find all our skill and agentic files here.

Other fixes

A few correctness fixes went in as well: a NullPointerException when deriving child keys from public-only BIP-32 keys, UTF-8 and dynamic-array encoding for non-ASCII strings, the access list now passed through EIP-7702 transactions correctly, and transaction serialization no longer failing when fee fields are null.

Upgrade and build

Web3j 6 is available now for all three repositories. Keep them on the same version.

Gradle -

Maven -

You can find the full changelog and release notes in our Github.

Thanks to everyone in the Web3j community, our mentees and maintainers, and to the Ethereum Foundation for backing this work. Fusaka is here, and Java developers don't have to wait to build on it.

Have a question or want to get involved? Join us on Discord or open an issue on GitHub. Web3j is an LF Decentralized Trust project. 

Back to all blog posts