Taiko scales Ethereum in a manner that emulates Ethereum as closely as possible - both technically and non-technically. More specifically, Taiko is an Ethereum-equivalent ZK-Rollup, scaling Ethereum by supporting all EVM opcodes in a layer-2 architecture that is decentralized, permissionless, and secure.
Ethereum represents an enormous leap forward in the mechanisms available for human coordination and personal freedom.
As a global, credibly neutral settlement layer, Ethereum provides strong digital ownership rights, and offers anyone the ability to move value where and when they want. It is the protocol underpinning an internet of value, and not since the internet itself have we witnessed a network where movement is so fluid.
More than movement, creation of value is equally fluid and unbounded. The creative power of developers deploying their smart contracts and applications to an always-on, always-accessible, borderless computer is remarkable.
To achieve the above, Ethereum has had to (rightfully) prioritize certain blockchain attributes over others - namely, decentralization and security over scalability. If a public blockchain is not decentralized and secure, then it is not credibly neutral, and thus not attractive to house highly-valuable, highly-critical functions. However, if a public blockchain is not scalable, then large portions of developers, users, and use cases cannot leverage the network, due to prohibitively high transaction fees and low throughput.
To fully achieve the impact of which it is capable, Ethereum must necessarily support anyone who wants to participate. Ethereum must be scalable to the human population. This is where Ethereum looks towards rollups as the most promising scaling solution, and the most promising type of rollup is an Ethereum-equivalent ZK-Rollup.
Taiko aims to be a fully Ethereum-equivalent ZK-Rollup. We aim to scale Ethereum in a manner that emulates Ethereum itself at a technical level, and a principles level.
ZK-Rollups scale computation by executing, aggregating, and proving transactions off-chain, and relying on Ethereum for data availability and validity proof verification. The biggest drawback of the currently in-production ZK-Rollups are that they cannot support the generalized computation of the EVM exactly, but instead are mostly application-specific. This breaks compatibility with existing Ethereum L1 smart contracts and dapps, and further, makes it difficult to build new ones that offer the same type of composable, expressive experiences.
Ethereum-equivalent ZK-Rollups, sometimes called ZK-EVMs, are the holy grail of layer-2 scaling solutions in that they do not compromise on security or compatibility. In recent parlance, Taiko aims to be a type-1 ZK-EVM, which prioritizes perfect EVM/Ethereum-equivalence over ZK-proof generation speed.
Taiko consists of three main parts: the ZK-EVM circuits (for proof generation), the L2 rollup node (for managing the rollup chain), and the protocol on L1 (for connecting these two parts together for rollup protocol verification).
The ZK-EVM proves the correctness of the EVM computations on the rollup with validity proofs.
Taiko can run Ethereum smart contract code as is, zero changes necessary. Developers can migrate their existing Ethereum smart contracts and full dapps to Taiko trivially, or of course implement their new solidity code on Taiko as their first/only environment. Taiko implements a ZK-EVM that supports every EVM opcode, producing a validity proof of the ZK-EVM circuit. Besides perfect compatibility with Ethereum L1 smart contracts and dapps, this also means that all Ethereum and solidity tooling works seamlessly with Taiko, no need to disrupt developers’ workflow whatsoever.
The result of this is two-fold:
Developer experience is exactly what solidity smart contract developers are already used to - no wasted time, no friction. The momentum behind EVM developers and Ethereum smart contracts are unstoppable, and that momentum need not be diverted or slowed.
Smart contracts (and systems of smart contracts/dapps) that have been running on Ethereum - in many cases for years, with billions of dollars of value therein - are battle-hardened, and could port over to Taiko without introducing risk of compiling them to a different language, or otherwise tweaking the framework. That means porting over the exact dapps, or the smart contract building blocks/patterns of development.
Beyond the benefits of EVM-equivalence, which mostly manifests itself at the application layer, Taiko aims for Ethereum-equivalence, allowing it to make use of existing Ethereum infrastructure, such as execution clients, easily repurposed as Taiko nodes. For instance, the Taiko client is currently based on the battle-hardened Go-Ethereum client. So, not only is the VM perfectly compatible, but the ‘surrounding tissue’ is as well, given Taiko nodes use the same hashing algorithm, signature scheme, and storage data structure as Ethereum. Importantly, Taiko seeks to be Ethereum-equivalent going forward as well; if there are Ethereum protocol updates, Taiko will implement them in our zkEVM to maintain synchronization. Finally, if Taiko creates compelling new directions from our own R&D, we can work to have them implemented on Ethereum, helping the L1.
In terms of compatibility, it is not just developers and infrastructure providers that will have a smooth time on the Taiko rollup, but users as well. On Taiko, the user experience, usage patterns, and products will all be completely familiar to users.
It is worth pausing to reflect on a meta-thought about why the above is so important. As a general purpose L2, Taiko’s goal is to empower builders, who ultimately empower users. We build what we build so others can do what they do.
Taiko will only make a difference in this world if it helps others make a difference in this world. Harnessing the power of Ethereum, the EVM, the well-defined infrastructure and tools, the critical mass of smart contracts and the tacit knowledge of the developers are the primary reasons to be a type-1 ZK-EVM. This excites us.
Taiko nodes get transaction data from Ethereum and execute the transactions on L2, ultimately progressing the state according to the transaction executions. Thus these nodes manage the rollup chain. Currently, the Taiko node is an Ethereum Geth fork.
The Taiko protocol defines and enforces the rollup rules and defines potential participants. The design upholds the core principles of security, decentralization, and permissionlessness.
Smart contracts deployed on Ethereum L1 act as the data availability mechanism and verifier of the ZK-SNARK proofs. A smart contract deployed on Taiko L2 performs certain important protocol functions we explain in our whitepaper.
In terms of network participants, we can observe three roles that fit into the above architecture:
Proposers. Construct rollup blocks from users’ L2 transactions and propose them to L1; any willing participant can perform this block creation function.
Provers. Generate ZK-SNARK proofs asserting the validity of L2 transactions and blocks out of the aforementioned proposed blocks; any willing participant can perform this proving function.
Node runners. Execute transactions from on-chain data to stay in sync with the state of the chain. While both Proposers and Provers need to run nodes to fulfill their respective roles, other actors would also run nodes, such as those offering services like a block explorer, and node infrastructure providers. Any willing participant can run Taiko nodes.
How it works
Blocks in the Taiko L2 blockchain consist of collections of transactions that are executed sequentially. New blocks can be appended to the chain to update its state, which can be calculated by following the protocol rules for the execution of the transactions.
Block submission is split into two parts:
Block proposal: A block is proposed, with the block data published on Ethereum, and the block appended to the proposed blocks list in the TaikoL1 contract. The protocol ensures the block is immutable at this point, meaning the block execution is deterministic, and so anyone can calculate the post-execution chain state. We refer to a block and all enclosed transactions at such point as finalized. A distinguishable feature in a proposed block on L1 is that there may be invalid transactions that will be skipped over by Taiko L2 nodes. This feature allows for fault-tolerance while multiple blocks are proposed simultaneously.
Block verification: Because all proposed blocks are deterministic, blocks can be proven in parallel, since all intermediate states between blocks are known. Once a proof is verified for the block and its correctly-linked parent block is on-chain finalized, we mark the block as on-chain finalized.
A fundamental requirement of the protocol is that all data that is necessary to reconstruct the current state, and thus to create and append new blocks, is publicly available on Ethereum. Further, provers can generate proofs for a block using only public data on Ethereum. It is these facts, relying on Ethereum public data and giving all would-be participants a fair playing field, that makes Taiko’s L2 decentralized.
For in-depth information on the Taiko rollup, please see the whitepaper.
A general truth is that the EVM was not meant to run in a ZK-circuit, and there are plenty of facets of EVM computation and Ethereum data structures and embedded cryptography which are ZK-SNARK-unfriendly and inefficient (slow) to prove. Overcoming these challenges has been the aim of diligent work by many in the field, such as the EF’s PSE. Nonetheless, it remains that generating ZK proofs for EVM computation is slow. This is the main tradeoff opposing compatibility in the different types of ZK-EVMs, with type-1 being slowest with proof generation, but possessing perfect compatibility and future proof-ness. Other types are much faster to generate proofs, but lose differing degrees of EVM/Ethereum-compatibility and future proof-ness.
While upholding the non-negotiables of being decentralized, permissionless, and secure - and the priority of complete EVM-equivalence - it is the explicit goal of the Taiko rollup to mitigate the drawbacks of slow proving time via protocol design. That is, the protocol seeks to reach finality quickly, before the ZKPs have been generated. We will continue to design the protocol with such goals in mind, but will also remain open to VM adjustments/optimizations if slow proving drastically degrades user experience of the chain.
With a brief overview of the technicals complete, let’s move to the human, community aspect of Taiko and Ethereum compatibility. This is extremely important, because after all, blockchains are code-enforced social contracts. It’s ultimately humans and their values-systems that drive the protocols.
Below layer-1 is layer-0, the people. Blockchains are built by people, and what these people care about gets baked into the social contract, and into the code and overarching design. As mentioned, here again we seek to have the strongest Ethereum-compatibility.
We have good reason to stick close to the Ethereum example and specification; it is not solely out of mere love for the protocol and the people. It is because it is the only ecosystem that gives us what we care about, and a shot at changing the world for the better, especially for those who need it most. This sounds lofty, but such are the aims of the Ethereum community, and of Taiko.
Below we share the Taiko Tenets, three core principles that guide us.
Anyone who wants to use, build on, or participate in Taiko can do so. This is the case because the transaction fees are cheap and throughput is high; the developer experience is robust and Ethereum dapp migration is seamless; the network is permissionless and reuses Ethereum infrastructure to the fullest extent. You can’t have freedom without access.
Taiko is censorship-resistant and cannot exclude groups or individuals. The rollup is decentralized - relying on Ethereum for data availability and security; and permissionless - allowing any network participant, user, or builder to opt-in. There are no special roles which can censor users/applications/transactions. We are only interested in building credibly neutral, fair systems.
Taiko is fully open-source and community-centric. We build on the shoulders of giants, and cherish contributing back into Ethereum’s technical progress and community. We value community contributions into the project, harnessing the best minds and ideas that are interested in the space. The type of activity Taiko executes and secures mandates transparency.
Thank you for reading. We have been working on Taiko since Q1 2022, with certain teammates contributing to ZK-EVM R&D since 2021, and many more of us working in the scalability and ZK-Rollup space since 2018. We are extremely excited to continue along our journey, as it is our greatest passion and honor to work towards bringing Ethereum to billions of people, securely.
We’d like to thank many teams and researchers for their phenomenal work on the ZK-EVM and related technologies, including the Ethereum Foundation PSE, Vitalik, Zcash, Aztec, Scroll, and several others.
In further posts we will go deeper into Taiko’s technical architecture, and share a roadmap with timelines. If you’d like to learn more about Taiko’s rollup protocol right now, you can check out our whitepaper.
If you’d like to join us on our journey in any capacity, we’d love to hear from you. You can apply to join our team by emailing firstname.lastname@example.org, look around and contribute to our GitHub, or join the community via Discord, Twitter, or Reddit.