项目作者: ethereumjs

项目描述 :
Monorepo for the Ethereum VM TypeScript Implementation
高级语言: TypeScript
项目地址: git://github.com/ethereumjs/ethereumjs-monorepo.git
创建时间: 2015-07-10T14:54:03Z
项目社区:https://github.com/ethereumjs/ethereumjs-monorepo

开源协议:Mozilla Public License 2.0

下载




EthereumJS Monorepo

Table of Contents

Introduction

Code Coverage
Discord

This repository holds various protocol building blocks of the Ethereum blockchain execution layer. It is managed and maintained by former members of the Ethereum Foundation JavaScript team as well as the broader Ethereum community. There is a TypeScript implementation of the Ethereum Virtual Machine (EVM) ready to be used in Node.js or a browser environment, implementations of core structural blockchain building blocks like an Ethereum Tx, Block or Blockchain as well as an MPT (Merkle Patricia Tree) implementation.

All libraries are bound together by the core Common library keeping track of chain specifics and hardfork changes. They are complemented by helper packages like RLP for data encoding/decoding or Util, providing helper functionalities like (byte) conversion, signatures, types and others.

Also to note: on the Ethereum Consensus side, the ChainSafe Lodestar repository complements this repository with an Ethereum Consensus Client implementation as well as various protocol implementations (like an SSZ library) developed in the context of Ethereum Consensus layer evolution.

Active Packages

Below you can find a list of the active packages included in this repository.

package npm issues tests coverage
@ethereumjs/binarytree NPM Package Binarytree Issues Actions Status Code Coverage
@ethereumjs/block NPM Package Block Issues Actions Status Code Coverage
@ethereumjs/blockchain NPM Package Blockchain Issues Actions Status Code Coverage
@ethereumjs/common NPM Package Common Issues Actions Status Code Coverage
@ethereumjs/evm NPM Package EVM Issues Actions Status Code Coverage
@ethereumjs/genesis NPM Package Genesis Issues Actions Status Code Coverage
@ethereumjs/mpt NPM Package MPT Issues Actions Status Code Coverage
@ethereumjs/rlp NPM Package rlp Issues Actions Status Code Coverage
@ethereumjs/statemanager NPM Package StateManager Issues Actions Status Code Coverage
@ethereumjs/tx NPM Package Tx Issues Actions Status Code Coverage
@ethereumjs/util NPM Package Util Issues Actions Status Code Coverage
@ethereumjs/vm NPM Package VM Issues Actions Status Code Coverage

Deprecated Packages

The following packages are deprecated and will not be updated.

package npm issues tests coverage
@ethereumjs/client NPM Package Client Issues Actions Status Code Coverage
@ethereumjs/devp2p NPM Package Devp2p Issues Actions Status Code Coverage
@ethereumjs/ethash NPM Package Ethash Issues Actions Status Code Coverage
@ethereumjs/wallet NPM Package Wallet Issues Actions Status Code Coverage

Getting Started

If you’re new to the EthereumJS monorepo, this section will help you get up and running quickly.

Prerequisites

  • Node.js (v18 or higher)
  • npm (v8 or higher)
  • Git

Initial Setup

  1. Clone the repository and initialize submodules:
  1. git clone https://github.com/ethereumjs/ethereumjs-monorepo.git
  2. cd ethereumjs-monorepo
  3. git submodule init
  4. git submodule update
  1. Install dependencies:
  1. npm install

Development

See our Development docs for an overview on things like tooling or configuration if you want to contribute to the EthereumJS monorepo. 🙂

Branches

Overview

The following are our currently relevant main branches for active and former release series:

Branch Release Series Status Description
master v10 (new versioning scheme) Active Working branch
maintenance-v8 v7/v8 Maintenance Maintenance for v8 releases (v7 also included)
maintenance-v6 v6 Maintenance Maintenance for v6 releases

Breaking Releases

Breaking releases are mostly done in sync for all libraries (latest exceptions: VM v8, EVM v3). Starting with the spring 2025 release series, we have aligned all package versions to have the same major version number. This makes it easier to clearly identify package versions compatible with each other as well as reason about functionality or bugs for a certain release series.

Old release cycles up to the VM v7/v8 version were named after the @ethereumjs/vm version. In most cases PRs should be opened towards the current working branch. If there is no current working branch, please ask! 🙂

To inspect code related to a specific package version, refer to the tags.

Packages Relationships

  1. graph TD
  2. vm{vm}
  3. client{client}
  4. ethash --> blockchain
  5. ethash --> client
  6. devp2p --> client
  7. block --> client
  8. block --> blockchain
  9. block --> ethash
  10. block --> vm
  11. blockchain --> client
  12. mpt --> client
  13. mpt --> vm
  14. mpt --> blockchain
  15. mpt --> block
  16. mpt --> statemanager
  17. binarytree --> vm
  18. binarytree --> statemanager
  19. util --> common
  20. common --> block
  21. common --> statemanager
  22. common --> tx
  23. common --> blockchain
  24. common --> vm
  25. common --> evm
  26. common --> client
  27. common --> devp2p
  28. common --> genesis
  29. evm --> vm
  30. evm --> client
  31. genesis --> client
  32. genesis --> statemanager
  33. genesis --> mpt
  34. tx --> block
  35. tx --> vm
  36. tx --> client
  37. vm --> client
  38. rlp --> util
  39. statemanager --> evm
  40. statemanager --> vm
  41. statemanager --> client

To update the diagram above edit the README file and open a new PR with the changes.

EthereumJS

The EthereumJS GitHub organization and its repositories are managed by members of the former Ethereum Foundation JavaScript team and the broader Ethereum community. If you want to join for work or carry out improvements on the libraries see the developer docs for an overview of current standards and tools and review our code of conduct.

License

Most packages are MPL-2.0>) licensed, see package folder for the respective license.