diff --git a/.gitignore b/.gitignore index 666de10..de48bff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ +.DS_Store _site .sass-cache .jekyll-metadata +.bundle +vendor Gemfile.lock diff --git a/Gemfile b/Gemfile index 91ceacd..ab74e9d 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,3 @@ source 'https://rubygems.org' -gem 'github-pages', group: :jekyll_plugins \ No newline at end of file +gem 'github-pages', group: :jekyll_plugins +gem "webrick", "~> 1.8" diff --git a/README.md b/README.md index ce71de2..b257227 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ In ``scss/_variables.scss`` update the ``$fa-font-path`` to point to the ``../fo # LOCAL BUILD -To build the site locally you have to have a working [Ruby](https://www.ruby-lang.org) ``2.4.x`` environment (you can use the [RVM](https://rvm.io/) Ruby version manager for this) and ``bundle`` and ``Jekyll`` installed. +To build the site locally you have to have a working [Ruby](https://www.ruby-lang.org) ``3.2 .x`` environment (you can use the [RVM](https://rvm.io/) Ruby version manager for this) and ``bundle`` and ``Jekyll`` installed. Install the ``GitHub pages`` gem from the ``Gemfile`` with: @@ -45,13 +45,13 @@ See also [this article](https://help.github.com/articles/setting-up-your-github- The site can then be build with: ``` -jekyll build +bundle exec jekyll build ``` And being served on http://127.0.0.1:4000 with: ``` -jekyll serve +bundle exec jekyll serve ``` [discord-badge]: https://img.shields.io/static/v1?logo=discord&label=discord&message=Join&color=blue diff --git a/_config.yml b/_config.yml index af9311b..d1f9ce0 100644 --- a/_config.yml +++ b/_config.yml @@ -5,10 +5,6 @@ google_analytics: show_downloads: true theme: jekyll-theme-cayman -gems: - - jekyll-mentions - - jekyll-github-metadata - sass: load_paths: - assets/css # original sass diff --git a/_includes/repository.html b/_includes/repository.html index 4f2f900..23261a6 100644 --- a/_includes/repository.html +++ b/_includes/repository.html @@ -19,8 +19,5 @@ - - - {% endif %} {% endfor %} \ No newline at end of file diff --git a/_includes/repository_small.html b/_includes/repository_small.html new file mode 100644 index 0000000..61165f8 --- /dev/null +++ b/_includes/repository_small.html @@ -0,0 +1,7 @@ +{% for repository in site.github.public_repositories %} +{% if repository.name == include.name %} + + + {{ repository.stargazers_count }} +{% endif %} +{% endfor %} \ No newline at end of file diff --git a/assets/css/style.scss b/assets/css/style.scss index a6aafbf..173317c 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss @@ -17,6 +17,7 @@ h1 { padding: 20px; font-size: 1.2rem; text-align: center; + margin-bottom: 7px; } .repo-group { diff --git a/index.md b/index.md index a2c8417..be254ef 100644 --- a/index.md +++ b/index.md @@ -1,113 +1,255 @@
- 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. + EthereumJS is an implementation of the core Ethereum Execution Layer (EL) Protocol stack in TypeScript.
+
+ https://github.com/ethereumjs/ethereumjs-monorepo +  {% include repository_small.html name="ethereumjs-monorepo" %} +
+

Projects

-

VIRTUAL MACHINE

-

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

- {% include repository.html name="ethereumjs-vm" %} +

VIRTUAL MACHINE (EVM)

+

Implementation of the Ethereum Virtual Machine in TypeScript supporting + all hardforks and allowing for easy integration of the EVM in web applications.

-

MERKLE TREE / RLP

-

Implementation of the core Ethereum data structure.

- {% include repository.html name="merkle-patricia-tree" %} - {% include repository.html name="rlp" %} +
+
+
+ + + +
+ @ethereumjs/vm +
+
+
    +
  • All hardforks until Shanghai
  • +
  • Preliminary Cancun support (incl. EIP-4844)
  • +
  • Basic tracing and debug support
  • +
  • Flexible EIP on/off engine
  • +
  • Modular EVM core
  • +
+
+
-

DAPP DEVELOPMENT

-

Libraries and tools to support Dapp development.

- {% include repository.html name="ethrpc" %} - {% include repository.html name="ethereumjs-util" %} - {% include repository.html name="ethereumjs-units" %} - {% include repository.html name="ethereumjs-abi" %} - {% include repository.html name="ethereumjs-tx" %} +

Execution Layer Client

+

Execution Layer client similar to Go-Ethereum or Nethermind in TypeScript with support for + full sync and most of the JSON RPC endpoints.

-

KEY MANAGEMENT

-

Tools for Ethereum key management and wallet interaction.

- {% include repository.html name="ethereumjs-wallet" %} - {% include repository.html name="keythereum" %} - {% include repository.html name="ethereumjs-icap" %} - {% include repository.html name="helpeth" %} +
+
+
+ + + +
+ @ethereumjs/client +
+
+
    +
  • Full sync support
  • +
  • Engine API
  • +
  • JSON-RPC via HTTP or Websocket
  • +
  • Syncs small and mid-size test networks
  • +
  • Used for protocol development (EIP-4844)
  • +
+
+
-

BLOCKCHAIN

-

Implementations of the main building blocks of the Ethereum blockchain.

- {% include repository.html name="ethereumjs-client" %} - {% include repository.html name="ethereumjs-blockchain" %} - {% include repository.html name="ethereumjs-block" %} - {% include repository.html name="ethereumjs-account" %} - {% include repository.html name="ethereumjs-blockstream" %} +

Ultralight

+

Portal Network client implementation in TypeScript (in Development).

-

UTILITIES / BINDINGS

-

Utilities libraries and bindings to third-party libraries.

- {% include repository.html name="geth.js" %} - {% include repository.html name="ethashjs" %} - {% include repository.html name="node-ethash" %} - {% include repository.html name="rustbn.js" %} +
+
+
+ + + +
+ Ultralight +
+
+
    +
  • History Network Support
  • +
  • State Network (in development)
  • +
  • Beacon Chain Network (in development)
  • +
+
+
-

NETWORK

-

Implementation of the Ethereum network communication layer.

- {% include repository.html name="ethereumjs-devp2p" %} +

Blockchain

+

Core building blocks for an Ethereum blockchain including a transaction library supporting all existing + transaction types.

-
+
+
+
+
+ + + +
+ @ethereumjs/tx +
+
+ Implementation of the various transaction types. +
+
-

Use Cases

+
+
+
+ + + +
+ @ethereumjs/block +
+
+ Block representations for all hardforks. +
+
-### Creating an Online Wallet? +
+
+
+ + + +
+ @ethereumjs/blockchain +
+
+ Ethereum mainnet-compatible blockchain. +
+
+ +
-Check out [keythereum](https://github.com/ethereumjs/keythereum) or [ethereumjs-wallet](https://github.com/ethereumjs/ethereumjs-wallet) (with HD wallet support) for managing keys and [ethereumjs-tx](https://github.com/ethereumjs/ethereumjs-tx) for creating transactions with them. -[ethereumjs-icap](https://github.com/ethereumjs/ethereumjs-icap) might also come handy for dealing with the ICAP (Ethereum in IBAN) format. +
-### Creating a Dapp? +
+

Protocol

+

Implementations of protocol components and data structures.

+
-You will need to interface with the Ethereum network. [web3.js](https://github.com/ethereum/web3.js) and [ethers.js](https://github.com/ethers-io/ethers.js) both provide a complete Javascript API to interact with the RPC interface. If looking for a more lightweight option, [ethereumjs-abi](https://github.com/ethereumjs/ethereumjs-abi) or [ethjs-abi](https://github.com/ethjs/ethjs-abi) can handle the ABI encoding. +
+
+
+
+ + + +
+ @ethereumjs/trie +
+
+ Implementation of a Merkle Patricia Tree. +
+
-### Build for the Web? +
+
+
+ + + +
+ @ethereumjs/rlp +
+
+ RLP encoding and decoding. +
+
-Most of the EthereumJS libraries can be transpiled with [babel](https://babeljs.io/) to be used in web context. -We provide [browser-builds](https://github.com/ethereumjs/browser-builds) for some EthereumJS libraries, be -warned though that these might often be slightly out of date. +
+
+
+ + + +
+ @ethereumjs/util +
+
+ Utilities for 4844, bytes, signatures, withdrawals, addresses and other. +
+
-# Projects not Tracked Here +
+
+
+ + + +
+ @ethereumjs/wallet +
+
+ Wallet implementation with key management and various import formats. +
+
+
-There are various high-quality Ethereum infrastructure Javascript projects outside the EthereumJS scope. -Some worth mentioning: +
+ + +
+

Network

+

Implementation of the Ethereum network communication layer.

+
+ +
+
+
+
+ + + +
+ @ethereumjs/devp2p +
+
+ Devp2p implementation with support for Discovery (DPT), RLPx transport, ETH protocol, LES and SNAP. +
+
+
+ +
-* [web3.js](https://github.com/ethereum/web3.js): the complete API as seen in the [wiki](https://github.com/ethereum/wiki/wiki/JavaScript-API) -* [ethers.js](https://github.com/ethers-io/ethers.js): the complete API as seen in the [docs](https://docs.ethers.io) -* [eth.js](https://github.com/ethjs): Simple JS modules for the Ethereum ecosystem -# Contributing and Contact +

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](https://github.com/ethereumjs/) or have a look for -suitable issues on the various repos. +The EthereumJS libraries are maintained and developed by the Ethereum Foundation JavaScript Team +together with the wider Ethereum JavaScript developer community.
You can reach out to us on - Gitter or - #ethereumjs on freenode. + Discord, + GitHub or + Twitter.