Ethereum for JavaScript developers
JavaScript is among the most popular languages in the Ethereum ecosystem, with JavaScript and TypeScript implementations of everything from core protocol primitives to a production consensus client.
There are opportunities to write JavaScript (or something close) at all levels of the stack.
Interact with Ethereum
JavaScript API libraries
If you'd like to write JavaScript to query the blockchain, send transactions and more, the most convenient way to do this is using a JavaScript API library. These APIs allow developers to easily interact with the nodes in the Ethereum network.
You can use these libraries to interact with smart contracts on Ethereum so it's possible to build a dapp where you just use JavaScript to interact with pre-existing contracts.
Check out
- Web3.js (opens in a new tab)
- Ethers.js (opens in a new tab) – includes Ethereum wallet implementation and utilities in JavaScript and TypeScript.
- viem (opens in a new tab) – a TypeScript Interface for Ethereum that provides low-level stateless primitives for interacting with Ethereum.
- Drift (opens in a new tab) – a TypeScript meta-library with built-in caching, hooks, and test mocks for effortless Ethereum development across web3 libraries.
Smart contracts
If you're a JavaScript developer and want to write your own smart contract, you may want to get familiar with Solidity (opens in a new tab). This is the most popular smart contract language and it's syntactically similar to JavaScript, which may make it easier to learn.
More on smart contracts.
Understand the protocol
The Ethereum virtual machine
There is a JavaScript implementation of Ethereum's virtual machine. It supports the latest fork rules. Fork rules refer to changes made to the EVM as a result of planned upgrades.
It's split out into various JavaScript packages that you can check out to better understand:
- Accounts
- Blocks
- The blockchain itself
- Transactions
- And more...
This will help you understand things like "what's the data structure of an account?".
If you prefer to read code, this JavaScript could be a great alternative to reading through our docs.
Check out the EVM
@ethereumjs/evm (opens in a new tab)
Nodes and clients
Lodestar (opens in a new tab) is a production-ready consensus client written in TypeScript and maintained by ChainSafe. It includes a beacon node and validator client, and is a good place to see how Ethereum's proof-of-stake consensus works in a language you know.
Check out Lodestar
ChainSafe/lodestar (opens in a new tab)
On the execution side, the EthereumJS client is deprecated and archived, but its source code remains available to explore how an Ethereum client works in JavaScript.
Check out the archived client
@ethereumjs/client (opens in a new tab)
Other projects
There are also plenty of other things going on in the land of Ethereum JavaScript, including:
- libraries of wallet utilities.
- tools to generate, import, and export Ethereum keys.
- an implementation of the
merkle-patricia-tree– a data structure outlined in the Ethereum yellow paper.
Dig into whatever interests you most over at the EthereumJS repo (opens in a new tab)
Further reading
Know of a community resource that helped you? Edit this page and add it!