Web3j Project Update 2023
One year ago, we were fortunate enough to receive a new grant from the Ethereum Foundation to help us further our work on the Web3j library and related tooling. As with much Open Source software, it can be challenging to maintain which is why such funding is helpful.
In this post, we’ll be sharing everything that’s been happening with Web3j during the past year.
We’ve seen a continuation of a well established trend for Web3j, with increased usages, increased community engagement and further maturing of the library with better support for both new and existing Ethereum features.
Overall Web3j project statistics
As with any Open Source software, it needs active community engagement in order to establish itself as a valued contribution. This can be measured in various ways, but the unique contributor statistic is one we value highly. This is because it requires someone to make an effort by writing code to contribute to the project.
Unique contributors: 186 (up from 163*)
Releases: 105 (up from 96*)
GitHub stars: 4.7k (up from 4.1k*)
Forks: 1.6k (up from 1.4k*)
* when compared to June 2022
Reduction in Web3j issues
Back in August 2022 we had close to 200 open issues, in the past year this has been halved to almost 100 open issues.
The grant funding allowed us to dedicate more of our development time to Web3j. I also think it’s one that is highly valued by the community as it has allowed us to deal with some long standing issues.
Maintained commit frequency and releases
We continue to see a sustained commit frequency of close to 200 commits over the last year, comparable to previous levels of activity.
During the last 12 months, we had 7 releases including 1 major release from v4.9.8 -> v4.10.0. This major release allowed us to address some of the important changes needed to move the project onto a newer Java/JVM and Gradle version, which was important in connection with the Hyperledger Besu project, as both projects rely on each other.
List of noteworthy Web3j features
- Extended RPC support, including eth_getProof, eth_signTypedData, eth_getBlockReceipts and eth_baseFee, in addition to a fix for eth_feeHistory
- Support for withdrawals RPCs as part of EIP-4895
- Core EVM upgrade to support Istanbul, Paris, and Shanghai, and new mainnet opcode PUSH0
Comprehensive support for RPC methods and the latest EVM features is essential for a library like Web3j to ensure feature parity with the protocol.
- Improved support for ERC-712: Typed structured data hashing and signing
- Improved ENS support with better name normalisation
- Added support for EIP-2930: Optional access lists
Neither ERC-712 nor ENS were unsupported in previous versions, but both of them could be better supported in Web3j, something provided by these changes. New to the list of supported EIPs is 2930, which allows Web3j to support transactions which contain an access list, a list of addresses and storage keys that the transaction plans to access.
- Added JWK support for Ethereum addresses
JWK, short for JSON Web Key, defines how cryptographics keys are represented, and in turn used to verify JWTs (JSON Web Tokens). As we see an increased use of Ethereum wallets/keys in combination with authentication flows, this became a feature we needed to add support for.
Finally, we’d like to mention the below items, all of which help either with Web3j performance or functionality, or overall project maintenance and testing.
- Improved topic detection using Bloom filters
- Gradle and Java/JVM version update
- Better dynamic array support
- Improved integration testing
It’s been a year of continuous improvement and developer engagement growth for Web3j, much supported by our in-house development team and the EF grant that allowed us to allocate more of their time.
We see no reduction in the use of Web3j, with all the key indicators, such as contributors, GitHub stars, forks and similar showing growth. This is a trend we’re eager to continue to support and look forward to another year with more of the same.