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.

462   
ethereumjs-vm
The Ethereum VM implemented in Javascript

MERKLE TREE / RLP

Implementation of the core Ethereum data structure.

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

DAPP DEVELOPMENT

Libraries and tools to support Dapp development.

91   
ethrpc
Maximal RPC wrapper
326   
ethereumjs-util
A collection of utility functions for Ethereum
9   
ethereumjs-units
Ethereum unit conversion.
173   
ethereumjs-abi
Decoder and encoder for the Ethereum ABI
465   
ethereumjs-tx
A simple module for creating, manipulating and signing ethereum transactions

KEY MANAGEMENT

Tools for Ethereum key management and wallet interaction.

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

BLOCKCHAIN

Implementations of the main building blocks of the Ethereum blockchain.

126   
ethereumjs-client
[IN DEVELOPMENT] EthereumJS client implementation
89   
ethereumjs-blockchain
A module to store and interact with blocks
31   
ethereumjs-block
Encoding, decoding and validation of Ethereum's Block schema
34   
ethereumjs-account
Encoding, decoding and validation of Ethereum's Account schema
35   
ethereumjs-blockstream
Reliable stream of Ethereum blocks

UTILITIES / BINDINGS

Utilities libraries and bindings to third-party libraries.

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

NETWORK

Implementation of the Ethereum network communication layer.

74   
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 provides 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.