The EthereumJS community builds Javascript tools implementing core Ethereum technologies, protocols and APIs for helping developers to interact with the Ethereum network and build their own applications.

Projects

VIRTUAL MACHINE

Implementation of the Ethereum virtual machine supporting the latest fork rules.

684   
ethereumjs-vm
The Ethereum VM implemented in JavaScript

MERKLE TREE / RLP

Implementation of the core Ethereum data structure.

260   
merkle-patricia-tree
This is an implementation of the modified merkle patricia tree as specified in the Ethereum's yellow paper.
91   
rlp
Recursive Length Prefix Encoding in JavaScript

DAPP DEVELOPMENT

Libraries and tools to support Dapp development.

100   
ethrpc
Maximal RPC wrapper
485   
ethereumjs-util
A collection of utility functions for Ethereum
14   
ethereumjs-units
Ethereum unit conversion.
224   
ethereumjs-abi
Decoder and encoder for the Ethereum ABI
683   
ethereumjs-tx
Project is in active development and has been moved to the EthereumJS VM monorepo.

KEY MANAGEMENT

Tools for Ethereum key management and wallet interaction.

609   
ethereumjs-wallet
Utilities for handling Ethereum keys
487   
keythereum
Create, import and export Ethereum keys
11   
ethereumjs-icap
Utilities for handling ICAP (Ethereum in IBAN) encoding
54   
helpeth
Help (with) Ethereum. Purists' commandline tool for key and transaction management.

BLOCKCHAIN

Implementations of the main building blocks of the Ethereum blockchain.

167   
ethereumjs-client
[IN DEVELOPMENT] EthereumJS client implementation
121   
ethereumjs-blockchain
Project is in active development and has been moved to the EthereumJS VM monorepo.
41   
ethereumjs-block
Project is in active development and has been moved to the EthereumJS VM monorepo.
45   
ethereumjs-account
Project is in active development and has been moved to the EthereumJS VM monorepo.
60   
ethereumjs-blockstream
Reliable stream of Ethereum blocks

UTILITIES / BINDINGS

Utilities libraries and bindings to third-party libraries.

43   
geth.js
Start and stop geth from Node.js
52   
ethashjs
An ethash implementation in pure Javascript
7   
node-ethash
Node bindings for the C++ Ethash implementation.
11   
rustbn.js
Rust to Javascript/Webassembly compilation of ethereum-bn128.rs.

NETWORK

Implementation of the Ethereum network communication layer.

109   
ethereumjs-devp2p
A JavaScript implementation of ÐΞVp2p

Use Cases

Creating an Online Wallet?

Check out keythereum or ethereumjs-wallet (with HD wallet support) for managing keys and ethereumjs-tx for creating transactions with them. ethereumjs-icap might also come handy for dealing with the ICAP (Ethereum in IBAN) format.

Creating a Dapp?

You will need to interface with the Ethereum network. web3.js and ethers.js both provide a complete Javascript API to interact with the RPC interface. If looking for a more lightweight option, ethereumjs-abi or ethjs-abi can handle the ABI encoding.

Build for the Web?

Most of the EthereumJS libraries can be transpiled with babel to be used in web context. We provide browser-builds for some EthereumJS libraries, be warned though that these might often be slightly out of date.

Projects not Tracked Here

There are various high-quality Ethereum infrastructure Javascript projects outside the EthereumJS scope. Some worth mentioning:

Contributing and Contact

Contributing to each of the projects is preferably done via pull requests. To start you can watch out for “help wanted” issues on the organization GitHub page or have a look for suitable issues on the various repos.

You can reach out to us on Gitter or #ethereumjs on freenode.

Courtesy of Font Awesome for the icons used.