Akula, stands for shark in Russian, is the fastest Ethereum implementation ever built which is written in the programming language Rust. Rust is an elegant, fast and safe programming language which was designed for concurrency and memory management.
In this post we are going to talk about
Akula Ethereum Client
Akula is the next generation Ethereum client and is based on the Erigon architecture. It was started approximately a year ago.
A PoW client is an implementation of Ethereum protocol that verifies all transactions in the blocks and keeps the network secure and accurate.
It has been created at the time when it became clear that previous Rust implementation such as Open Ethereum, originally create by Parity Technologies, was too costly to maintain. However, there is still significant interest in such Rust implementation. There were some some efforts before Akula, but they fizzled out. With Erigon architecture and internal structure Akula had a good starting blueprint of how a new implementation can be built. As Akula being a fresh and not yet complete implementation, there can be less technical debt. At the moment Akula is used by enthusiasts who are looking forward to its completion and want to keep up with the progress.
Erigon, previously Turbo‐Geth, is a fork of Go Ethereum (Geth) whose main goal is to improve the speed, provide more modularity, more optimization and disk space efficiency. Erigon is a completely re-architected implementation of Ethereum. It can perform a full archive node sync using less than 2TB of disk space, in under 3 days.
The Go-Ethereum's database is growing approximately 10 Gigabytes per day. Erigon's database footprint is slightly higher than 1 Terabyte. It can sync an entire Archive node in less than a week, compared to Go’s 6 Terabytes. However, it is not the ultimate official client. Akula beats already fast Erigon by 1.5–2 times on execution performance.
Different form some of the Ethereum implementations, Akula is licensed under GNU General Public License v3.
In Erigon, modules/ components are the parts that can be taken out into a separate executable, and then operated in its own process. Given here is how Erigon splits into components/modules:
Here all the components are represented as rectangles. All the rectangular components are seperable, i.e, they can be run as seperate processes.
The components which have overlapping rectangles, can run more than one process at the same time.
To share the downloaded and seeder files with the Erigon computers, the downloader/seeder comonents need to be run on the same computer even if they are seperated.
To know more about Erigon's architecture, have a follow up here.
Here are some of the benefits of using the Erigon architecture and its node operators:
- Lower disk space
- <2TB for Ethereum mainnet archive node, <600GB for pruned node.
- Faster sync speed
- An archive full validation node can be bootstrapped in under 3 days.
- Performance improvements allow Erigon to run even on HDD (Hard Disk Drive).
- Crash resilience
- Forceful shutdown or power failure cannot damage Erigon’s database.
As Akula is based of the Erigon architecture, all these properties are also shown in the Akula client.
EVM stands for Ethereum Virtual Machine and is a decentralized computer engine that handles millions of executable projects.
Here are the components of EVM:
Akula has its own EVM version known as evmodin written in Rust and is used for the sole purpose of having the entire client written in Rust.
Evmodin is an EVM interpreter with gas metering, support of resumability and must be coupled with a host. Akula has its own version of host for execution. Akula + evmodin pairing is said to be the reference execution implementation which passes all the ethereum consensus tests.
Akula can be run today, as companion node connected to Erigon’s database, as both give a preview of what’s to come and additional verification of Erigon’s execution.
To know more about Akula or would like to help for testing and developemnt, join the Erigon discord server's #akula channel. This can be done by sending your name, occupation and reason to join the server at firstname.lastname@example.org. You will get a reply with a Discord link.
Disclaimer: The information contained on this web page is for education purposes only. Readers are suggested to conduct their own research, review, analyze and verify the content before relying on them.
To publish press releases, project updates and guest posts with us, please email at email@example.com.
Subscribe to EtherWorld YouTube channel for ELI5 content.
Support us at Gitcoin
You've something to share with the blockchain community, join us on Discord!