|
1 | 1 |
|
2 | 2 | <div class="intro-text">
|
3 |
| - The <a href="https://github.com/ethereumjs/">EthereumJS</a> community builds Javascript tools implementing core <a href="https://ethereum.org">Ethereum</a> |
4 |
| - technologies, protocols and APIs for helping developers to interact with the Ethereum network and build |
5 |
| - their own applications. |
| 3 | + <a href="https://github.com/ethereumjs/">EthereumJS</a> is an implementation of the core <a href="https://ethereum.org">Ethereum</a> Execution Layer (EL) Protocol stack in TypeScript. |
6 | 4 | </div>
|
7 | 5 |
|
| 6 | +<div class="intro-text"> |
| 7 | + <a href="https://github.com/ethereumjs/ethereumjs-monorepo">https://github.com/ethereumjs/ethereumjs-monorepo</a> |
| 8 | + {% include repository_small.html name="ethereumjs-monorepo" %} |
| 9 | +</div> |
| 10 | + |
8 | 11 | <h1>Projects</h1>
|
9 | 12 |
|
10 | 13 | <div class="repo-group">
|
11 |
| - <h3><i class="fa fa-cogs"></i> VIRTUAL MACHINE</h3> |
12 |
| - <p>Implementation of the Ethereum virtual machine supporting the latest fork rules.</p> |
13 |
| - {% include repository.html name="ethereumjs-vm" %} |
| 14 | + <h3><i class="fa fa-cogs"></i> VIRTUAL MACHINE (EVM)</h3> |
| 15 | + <p>Implementation of the Ethereum Virtual Machine in TypeScript supporting |
| 16 | + all hardforks and allowing for easy integration of the EVM in web applications.</p> |
14 | 17 | </div>
|
15 | 18 |
|
16 | 19 | <div class="repo-group">
|
17 |
| - <h3><i class="fa fa-sitemap"></i> MERKLE TREE / RLP</h3> |
18 |
| - <p>Implementation of the core Ethereum data structure.</p> |
19 |
| - {% include repository.html name="merkle-patricia-tree" %} |
20 |
| - {% include repository.html name="rlp" %} |
| 20 | + <div class="repo-box"> |
| 21 | + <div class="repo-header"> |
| 22 | + <div class="repo-header-right"> |
| 23 | + <a href="https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/vm" alt="GitHub URL"> |
| 24 | + <i class="fa fa-github"></i> |
| 25 | + </a> |
| 26 | + </div> |
| 27 | + @ethereumjs/vm |
| 28 | + </div> |
| 29 | + <div class="repo-description"> |
| 30 | + <ul> |
| 31 | + <li>All hardforks until Shanghai</li> |
| 32 | + <li>Preliminary Cancun support (incl. EIP-4844)</li> |
| 33 | + <li>Basic tracing and debug support</li> |
| 34 | + <li>Flexible EIP on/off engine</li> |
| 35 | + <li>Modular EVM core</li> |
| 36 | + </ul> |
| 37 | + </div> |
| 38 | +</div> |
21 | 39 | </div>
|
22 | 40 |
|
23 | 41 | <div class="separator"></div>
|
24 | 42 |
|
25 | 43 | <div class="repo-group">
|
26 |
| - <h3><i class="fa fa-lightbulb-o"></i> DAPP DEVELOPMENT</h3> |
27 |
| - <p>Libraries and tools to support Dapp development.</p> |
28 |
| - {% include repository.html name="ethrpc" %} |
29 |
| - {% include repository.html name="ethereumjs-util" %} |
30 |
| - {% include repository.html name="ethereumjs-units" %} |
31 |
| - {% include repository.html name="ethereumjs-abi" %} |
32 |
| - {% include repository.html name="ethereumjs-tx" %} |
| 44 | + <h3><i class="fa fa-cogs"></i> Execution Layer Client</h3> |
| 45 | + <p>Execution Layer client similar to Go-Ethereum or Nethermind in TypeScript with support for |
| 46 | + full sync and most of the JSON RPC endpoints.</p> |
33 | 47 | </div>
|
34 | 48 |
|
35 | 49 | <div class="repo-group">
|
36 |
| - <h3><i class="fa fa-key"></i> KEY MANAGEMENT</h3> |
37 |
| - <p>Tools for Ethereum key management and wallet interaction.</p> |
38 |
| - {% include repository.html name="ethereumjs-wallet" %} |
39 |
| - {% include repository.html name="keythereum" %} |
40 |
| - {% include repository.html name="ethereumjs-icap" %} |
41 |
| - {% include repository.html name="helpeth" %} |
| 50 | + <div class="repo-box"> |
| 51 | + <div class="repo-header"> |
| 52 | + <div class="repo-header-right"> |
| 53 | + <a href="https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client" alt="GitHub URL"> |
| 54 | + <i class="fa fa-github"></i> |
| 55 | + </a> |
| 56 | + </div> |
| 57 | + @ethereumjs/client |
| 58 | + </div> |
| 59 | + <div class="repo-description"> |
| 60 | + <ul> |
| 61 | + <li>Full sync support</li> |
| 62 | + <li>Engine API</li> |
| 63 | + <li>JSON-RPC via HTTP or Websocket</li> |
| 64 | + <li>Syncs small and mid-size test networks</li> |
| 65 | + <li>Used for protocol development (EIP-4844)</li> |
| 66 | + </ul> |
| 67 | + </div> |
| 68 | +</div> |
42 | 69 | </div>
|
43 | 70 |
|
44 | 71 | <div class="separator"></div>
|
45 | 72 |
|
46 | 73 | <div class="repo-group">
|
47 |
| - <h3><i class="fa fa-cube"></i> BLOCKCHAIN</h3> |
48 |
| - <p>Implementations of the main building blocks of the Ethereum blockchain.</p> |
49 |
| - {% include repository.html name="ethereumjs-client" %} |
50 |
| - {% include repository.html name="ethereumjs-blockchain" %} |
51 |
| - {% include repository.html name="ethereumjs-block" %} |
52 |
| - {% include repository.html name="ethereumjs-account" %} |
53 |
| - {% include repository.html name="ethereumjs-blockstream" %} |
| 74 | + <h3><i class="fa fa-cogs"></i> Ultralight</h3> |
| 75 | + <p>Portal Network client implementation in TypeScript (in Development).</p> |
54 | 76 | </div>
|
55 | 77 |
|
56 | 78 | <div class="repo-group">
|
57 |
| - <h3><i class="fa fa-wrench"></i> UTILITIES / BINDINGS</h3> |
58 |
| - <p>Utilities libraries and bindings to third-party libraries.</p> |
59 |
| - {% include repository.html name="geth.js" %} |
60 |
| - {% include repository.html name="ethashjs" %} |
61 |
| - {% include repository.html name="node-ethash" %} |
62 |
| - {% include repository.html name="rustbn.js" %} |
| 79 | + <div class="repo-box"> |
| 80 | + <div class="repo-header"> |
| 81 | + <div class="repo-header-right"> |
| 82 | + <a href="https://github.com/ethereumjs/ultralight" alt="GitHub URL"> |
| 83 | + <i class="fa fa-github"></i> |
| 84 | + </a> |
| 85 | + </div> |
| 86 | + Ultralight |
| 87 | + </div> |
| 88 | + <div class="repo-description"> |
| 89 | + <ul> |
| 90 | + <li>History Network Support</li> |
| 91 | + <li>State Network (in development)</li> |
| 92 | + <li>Beacon Chain Network (in development)</li> |
| 93 | + </ul> |
| 94 | + </div> |
| 95 | +</div> |
63 | 96 | </div>
|
64 | 97 |
|
65 | 98 | <div class="separator"></div>
|
66 | 99 |
|
67 | 100 | <div class="repo-group">
|
68 |
| - <h3><i class="fa fa-globe"></i> NETWORK</h3> |
69 |
| - <p>Implementation of the Ethereum network communication layer.</p> |
70 |
| - {% include repository.html name="ethereumjs-devp2p" %} |
| 101 | + <h3><i class="fa fa-cube"></i> Blockchain</h3> |
| 102 | + <p>Core building blocks for an Ethereum blockchain including a transaction library supporting all existing |
| 103 | + transaction types.</p> |
71 | 104 | </div>
|
72 | 105 |
|
73 |
| -<div class="separator" style="height:0px;"></div> |
| 106 | +<div class="repo-group"> |
| 107 | + <div class="repo-box"> |
| 108 | + <div class="repo-header"> |
| 109 | + <div class="repo-header-right"> |
| 110 | + <a href="https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/tx" alt="GitHub URL"> |
| 111 | + <i class="fa fa-github"></i> |
| 112 | + </a> |
| 113 | + </div> |
| 114 | + @ethereumjs/tx |
| 115 | + </div> |
| 116 | + <div class="repo-description"> |
| 117 | + Implementation of the various transaction types. |
| 118 | + </div> |
| 119 | + </div> |
74 | 120 |
|
75 |
| -<h1>Use Cases</h1> |
| 121 | + <div class="repo-box"> |
| 122 | + <div class="repo-header"> |
| 123 | + <div class="repo-header-right"> |
| 124 | + <a href="https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/block" alt="GitHub URL"> |
| 125 | + <i class="fa fa-github"></i> |
| 126 | + </a> |
| 127 | + </div> |
| 128 | + @ethereumjs/block |
| 129 | + </div> |
| 130 | + <div class="repo-description"> |
| 131 | + Block representations for all hardforks. |
| 132 | + </div> |
| 133 | + </div> |
76 | 134 |
|
77 |
| -### Creating an Online Wallet? |
| 135 | + <div class="repo-box"> |
| 136 | + <div class="repo-header"> |
| 137 | + <div class="repo-header-right"> |
| 138 | + <a href="https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/blockchain" alt="GitHub URL"> |
| 139 | + <i class="fa fa-github"></i> |
| 140 | + </a> |
| 141 | + </div> |
| 142 | + @ethereumjs/blockchain |
| 143 | + </div> |
| 144 | + <div class="repo-description"> |
| 145 | + Ethereum mainnet-compatible blockchain. |
| 146 | + </div> |
| 147 | + </div> |
| 148 | + |
| 149 | +</div> |
78 | 150 |
|
79 |
| -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. |
80 |
| -[ethereumjs-icap](https://github.com/ethereumjs/ethereumjs-icap) might also come handy for dealing with the ICAP (Ethereum in IBAN) format. |
| 151 | +<div class="separator"></div> |
81 | 152 |
|
82 |
| -### Creating a Dapp? |
| 153 | +<div class="repo-group"> |
| 154 | + <h3><i class="fa fa-cogs"></i> Protocol</h3> |
| 155 | + <p>Implementations of protocol components and data structures.</p> |
| 156 | +</div> |
83 | 157 |
|
84 |
| -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. |
| 158 | +<div class="repo-group"> |
| 159 | + <div class="repo-box"> |
| 160 | + <div class="repo-header"> |
| 161 | + <div class="repo-header-right"> |
| 162 | + <a href="https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie" alt="GitHub URL"> |
| 163 | + <i class="fa fa-github"></i> |
| 164 | + </a> |
| 165 | + </div> |
| 166 | + @ethereumjs/trie |
| 167 | + </div> |
| 168 | + <div class="repo-description"> |
| 169 | + Implementation of a Merkle Patricia Tree. |
| 170 | + </div> |
| 171 | + </div> |
85 | 172 |
|
86 |
| -### Build for the Web? |
| 173 | + <div class="repo-box"> |
| 174 | + <div class="repo-header"> |
| 175 | + <div class="repo-header-right"> |
| 176 | + <a href="https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/rlp" alt="GitHub URL"> |
| 177 | + <i class="fa fa-github"></i> |
| 178 | + </a> |
| 179 | + </div> |
| 180 | + @ethereumjs/rlp |
| 181 | + </div> |
| 182 | + <div class="repo-description"> |
| 183 | + RLP encoding and decoding. |
| 184 | + </div> |
| 185 | + </div> |
87 | 186 |
|
88 |
| -Most of the EthereumJS libraries can be transpiled with [babel](https://babeljs.io/) to be used in web context. |
89 |
| -We provide [browser-builds](https://github.com/ethereumjs/browser-builds) for some EthereumJS libraries, be |
90 |
| -warned though that these might often be slightly out of date. |
| 187 | + <div class="repo-box"> |
| 188 | + <div class="repo-header"> |
| 189 | + <div class="repo-header-right"> |
| 190 | + <a href="https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/util" alt="GitHub URL"> |
| 191 | + <i class="fa fa-github"></i> |
| 192 | + </a> |
| 193 | + </div> |
| 194 | + @ethereumjs/util |
| 195 | + </div> |
| 196 | + <div class="repo-description"> |
| 197 | + Utilities for 4844, bytes, signatures, withdrawals, addresses and other. |
| 198 | + </div> |
| 199 | + </div> |
91 | 200 |
|
92 |
| -# Projects not Tracked Here |
| 201 | + <div class="repo-box"> |
| 202 | + <div class="repo-header"> |
| 203 | + <div class="repo-header-right"> |
| 204 | + <a href="https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/wallet" alt="GitHub URL"> |
| 205 | + <i class="fa fa-github"></i> |
| 206 | + </a> |
| 207 | + </div> |
| 208 | + @ethereumjs/wallet |
| 209 | + </div> |
| 210 | + <div class="repo-description"> |
| 211 | + Wallet implementation with key management and various import formats. |
| 212 | + </div> |
| 213 | + </div> |
| 214 | +</div> |
93 | 215 |
|
94 |
| -There are various high-quality Ethereum infrastructure Javascript projects outside the EthereumJS scope. |
95 |
| -Some worth mentioning: |
| 216 | +<div class="separator"></div> |
| 217 | + |
| 218 | + |
| 219 | +<div class="repo-group"> |
| 220 | + <h3><i class="fa fa-globe"></i> Network</h3> |
| 221 | + <p>Implementation of the Ethereum network communication layer.</p> |
| 222 | +</div> |
| 223 | + |
| 224 | +<div class="repo-group"> |
| 225 | + <div class="repo-box"> |
| 226 | + <div class="repo-header"> |
| 227 | + <div class="repo-header-right"> |
| 228 | + <a href="https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/devp2p" alt="GitHub URL"> |
| 229 | + <i class="fa fa-github"></i> |
| 230 | + </a> |
| 231 | + </div> |
| 232 | + @ethereumjs/devp2p |
| 233 | + </div> |
| 234 | + <div class="repo-description"> |
| 235 | + Devp2p implementation with support for Discovery (DPT), RLPx transport, ETH protocol, LES and SNAP. |
| 236 | + </div> |
| 237 | +</div> |
| 238 | +</div> |
| 239 | + |
| 240 | +<div class="separator"></div> |
96 | 241 |
|
97 |
| -* [web3.js](https://github.com/ethereum/web3.js): the complete API as seen in the [wiki](https://github.com/ethereum/wiki/wiki/JavaScript-API) |
98 |
| -* [ethers.js](https://github.com/ethers-io/ethers.js): the complete API as seen in the [docs](https://docs.ethers.io) |
99 |
| -* [eth.js](https://github.com/ethjs): Simple JS modules for the Ethereum ecosystem |
100 | 242 |
|
101 |
| -# Contributing and Contact |
| 243 | +<h1>Contact</h1> |
102 | 244 |
|
103 |
| -Contributing to each of the projects is preferably done via pull requests. To start you can watch out for |
104 |
| -"help wanted" issues on the organization [GitHub page](https://github.com/ethereumjs/) or have a look for |
105 |
| -suitable issues on the various repos. |
| 245 | +The EthereumJS libraries are maintained and developed by the Ethereum Foundation JavaScript Team |
| 246 | +together with the wider Ethereum JavaScript developer community. |
106 | 247 |
|
107 | 248 | <div class="intro-text">
|
108 | 249 | You can reach out to us on
|
109 |
| - <a href="https://gitter.im/ethereum/ethereumjs-lib">Gitter</a> or |
110 |
| - <a href="https://webchat.freenode.net/?channels=ethereumjs">#ethereumjs</a> on freenode. |
| 250 | + <a href="https://discord.gg/TNwARpR">Discord</a>, |
| 251 | + <a href="https://github.com/ethereumjs">GitHub</a> or |
| 252 | + <a href="https://twitter.com/EFJavaScript">Twitter</a>. |
111 | 253 | </div>
|
112 | 254 |
|
113 | 255 | <p class="attribution">
|
|
0 commit comments