Foundation. Work is mainly done within the following GitHub organization:
Our central repository is the ethereumjs-vm monorepo hosting a full featured TypeScript Ethereum VM implementation as well as related packages like:
- Structural blockchain component representations like e.g. the block or tx packages
- The common package providing central access to chain and hardfork settings
- An Ethash implementation
Other noteworthy libraries out of the monorepo scope are e.g. an implementation of the Merkle Patricia Tree, the RLP serialization library or a widely used Util library providing utility functions for things like hashing, signatures as well as helpers for address and account management.
Have a look at the organizational GitHub overview page linked above to get an impression what is currently being worked on as well as the libraries available.
Team and Contact¶
EthereumJS is a strongly community-driven project and the active team is
regarded as the sum of people actively contributing to the
For technical questions and getting in touch you can use our
Organizational questions are centered and discussed on the
Ongoing Work Tasks¶
The following is an overview on ongoing work tasks to get an idea on the current focus of work. This is also serving internal accounting purposes.
This list is focussing on reoccuring work tasks, for an overview on dedicated new projects have a look at the Roadmap section.
W1 - Virtual Machine Development¶
One strong emphasis of
EthereumJS work is on maintaining and further developing
Main tasks around this are:
- Updating the VM on new hardforks
- Targeting compliance with the latest consensus test suite releases
- Implementing feature requests from the community (Truffle, Remix, others), e.g. to provide better debugging functionalities
- Ongoing refactoring work to open up new use cases
W2 - Library Modernization¶
EthereumJS libraries provide robust and solid implementations surving the
dedicated purposes. Along there is an ongoing effort to integrate new
practices to provide the community with secure and easy-to-develop upon libraries
Some things done lately in this regard:
ES6classes for structuring library components
Promisebased interfaces (in contrast to
- TypeScript transition of all major libraries
- Updating on security improving language features (block-scoped variables,…)
- Improving on code readability (destructuring of objects,…)
W3 - Bug Fixes and Maintenance¶
EthereumJS libraries are widely used in production - often in security-sensitive
contexts - and there is an ongoing effort to keep libraries up-to-date and secure.
Main tasks around this:
- Fix bugs reported by the community in a timely fashion
- Keep library dependencies up-to-date
- Adopt libraries to various user work environments and build pipelines (browser, React,…)
- Be responsive to feature requests from the community
W4 - Testing and CI¶
To provide a high level of reliable we target a high test coverage on all of our libraries and writing new tests and integrate these in the everyday work process (CI) is an ongoing effort.
- Improve test coverage for library APIs
- Add and maintain integration tests (with a focus on browser testing)
- Integrate test runs / coverage reports into CI process
- Benchmark libraries, performance improvements for both library execution and tests
W5 - Community Work¶
There is a high level of engagement from the community with the different
EthereumJS libraries and there are countless examples for both evolutionary
updates as well as high-quality and broadly scoped feature contributions from
We are determined to put substantial ressources here to further support exchange with and engagement from the community.
Related tasks are:
- Help onboard new contributors, give introductory guidance
- Review of Pull Requests
- Accompany community development work
- Management and structuring of issues and PRs
- Responsiveness on communication channels
W6 - Accessibility¶
Very much related to the community efforts (W5) is the goal of making libraries generally as easily approachable as possible and so to lower the barrier to engage and minimize the need to to do one-to-one explanations on how things work.
- Provide up-to-date and consistent
- Instructions on environment setup and installation, developer docs
- Easy to recreate and up-to-date examples in
- Common standards and standard documentation (these docs :-)) whenever possible
- Easy to understand, modular and documented source code