Akula: the fastest Ethereum node ever built

Akula is a next-generation implementation of Ethereum protocol ("client") written in Rust.

Akula (Акула) is pronounced as ah-koo-lah and stands for shark in Russian.

Key benefits:

Much lower disk footprint: <3TB for Ethereum mainnet archive node

Faster sync speed:

  • An archive full validation node can be bootstrapped in under 3 days.
  • Performance improvements allow to run even on HDD.

Crash resilience:

  • Forceful shutdown or power failure cannot damage Erigon’s database.

Extremely fast and rich historical state API:

  • eth_call and Parity Trace API implemented
  • Out-of-the-box support for Otterscan: very-fast and privacy-friendly local block explorer.

gRPC alternative to web3 JSONRPC API

Here is how fast execution is: look at Mgas/s.

Network & consensus engine support

Akula supports the following networks out of the box:

  • Ethereum ("mainnet")
  • Sepolia
  • Goerli
  • Ropsten
  • Rinkeby

Additionally, users can join any other network, provided their own chain specification file, and if the network uses any of the following consensus engines:

  • Ethash
  • Ethereum beacon chain consensus
  • Clique

Installlation

NOTE: Linux-only

Linux is the only supported platform for running Akula. Do not expect any help for issues on macOS or Windows.

Linux has been a fully working and convenient platform with broad hardware and software support for years. Impression that desktop Linux is for geeks is obsolete now.

It is secure, open source and without corporate or state kill switches - fully aligned with the ethos of crypto and especially important in the wake of new Cold War. For example, weaponization of Microsoft services has directly affected Akula through one of our dependencies which makes supporting their closed platforms unsustainable.

If your entire digital life is controlled by Microsoft or Apple - why turn to Ethereum anyway?

Building the source

Requirements:

  • clang 12+
  • libext2fs-dev / e2fsprogs-devel
  • pkg-config

Install rustup from rustup.rs.

git clone https://github.com/akula-bft/akula

cd akula

cargo build --all --profile=production

You can find built binaries in target/production folder.

Docker

Latest builds are available on Docker Hub.

Running

  • akula is the main binary that runs as full node:
akula --datadir=<path to Akula database directory>
  • akula-rpc is the RPC daemon, which can provide JSONRPC and gRPC endpoints based on Akula's database.

  • akula-sentry is the P2P node.

  • akula-toolbox provides various helper commands to check and manipulate Akula's database. Please consult its help for more info:

akula-toolbox --help

JSONRPC

Akula supports the following standard JSONRPC calls:

eth

  • eth_blockNumber
  • eth_chainId
  • eth_call
  • eth_estimateGas
  • eth_getBalance
  • eth_getBlockByHash
  • eth_getBlockByNumber
  • eth_getBlockTransactionCountByHash
  • eth_getBlockTransactionCountByNumber
  • eth_getCode
  • eth_getStorageAt
  • eth_getTransactionByHash
  • eth_getTransactionByBlockHashAndIndex
  • eth_getTransactionByBlockNumberAndIndex
  • eth_getTransactionCount
  • eth_getTransactionReceipt
  • eth_getUncleByBlockNumberAndIndex
  • eth_getUncleCountByBlockHash
  • eth_getUncleCountByBlockNumber
  • eth_syncing

net

  • net_listening
  • net_peerCount
  • net_version

trace

  • trace_call
  • trace_callMany
  • trace_rawTransaction
  • trace_replayBlockTransactions
  • trace_replayTransaction
  • trace_block
  • trace_filter

erigon

  • erigon_getHeaderByNumber

otterscan

  • ots_getApiLevel
  • ots_getInternalOperations
  • ots_searchTransactionsBefore
  • ots_searchTransactionsAfter
  • ots_getBlockDetails
  • ots_getBlockDetailsByHash
  • ots_getBlockTransactions
  • ots_hasCode
  • ots_getTransactionError
  • ots_getTransactionBySenderAndNonce
  • ots_getContractCreator

Please consult Ethereum Foundation docs for detailed description of each RPC call.

gRPC

In addition to standard JSONRPC APIs, Akula supports additional APIs resembling JSONRPC, but over gRPC protocol, served by default at port 7545.

Getting support

Please join our Telegram chat to meet the developers and ask for support.

Helping out

Work on Akula is made possible by:

Gnosis Stateful Works 1inch Foundation

If you'd like to sponsor, check out our Gitcoin grant page.

Alternatively, you can donate to the following addresses:

  • ETH: 0x048a9ea34FcE0B2828a2703e486648c21ACCCC1A
  • XMR: 89AY6EC9jcadKCkncN6MC51S9C7LxhnKFQHu5GxFx3J3deGWW3PRPbMViRZVMxb9pEHAPVkanW6B4Qjz7Mb6kfPALuFgQiN