Introducing Raiko, Taiko’s multi-prover

Attention Taikonauts, we’ve got some exciting news to share! We’re excited to announce the launch of Raiko, Taiko’s multi-prover.

Raiko is our new Taiko and Ethereum block prover. It is an integrated environment that builds, runs and benchmarks zkVM targets. Raiko currently supports Sp1, Risc0 and SGX, with ongoing efforts to integrate Jolt and Powdr, as well as Amazon Nitro.

Our approach to multi-proofs

Taiko has been at the forefront of decentralizing proof supply chains. In our view, multi-proofs in ZK translate to multi-clients compiled with multi-SNARKS, which will lay a foundation for SNARKed client diversity in the future Ethereum L1. There are two primary reasons we’ve focused on multi-proofs:

  1. The multi-proofs approach can hedge the risk of bugs and vulnerabilities in client implementation and proving systems. Then, in case of a bug, even if one proof is broken, others will unlikely allow the exact same vulnerability to be exploited.

  2. The Ethereum endgame assumes ZK-proving L1 blocks.

Check out this article written by Taiko engineer Cecilia to learn more.

Today, we put this roadmap into practice by releasing the most flexible, ZK/TEE-friendly architecture that abstracts out the common workflows of block proving:

  • ZK/TEE guest program compilation

  • Block input formation & execution

  • Benchmark & monitoring

Let’s dive deeper!

Enhancing ZK Toolchains

ZK Toolchains & Cross-Platform Targets

ZK toolchains are evolving quickly but remain complicated to manage. To integrate most ZK platforms, in addition to TEE, we are engineering cross-platform targets with mind-boggling dependencies.

We reformed the building pipeline of RiscZero and Succinct to accommodate most Riscv32 targets in any emerging zkVMs. Check out our Raiko-generalized build pipeline for zkVM guests here.

Custom Test Framework

We also implemented a custom test framework that injects #[test] function to the program entrypoint, allowing users to compile test, lib, and bin executables mirroring $cargo test or $cargo build --<lib>/<bin> [<NAME>].

Dynamic Hooks in REVM

Precompile patches in ZkVMs for circuit optimization are now replaced by dynamic hooks in REVM, eliminating the dependency hazard in REVM forks!

These isolated hook functions also make unit tests & benchmarks easier when combined with our build pipeline.

Leveraging SGX for enhanced security & fast finality

SGX: A Reliable Guardian

Although controversial, SGX is a reliable guardian for fast finality, especially in based rollups. The difficulties in SGX setup involve supporting different CPUs from cloud providers, optimizing gas cost in verification, and remote attestation.

We use Gramine OS to wrap the guest in a trusted enclave, then provide easy-to-use Docker and Kubernetes config for anyone with an SGX-enabled CPU.

You can try out SGX direct mode even with a regular laptop by:

TARGET=sgx MOCK=1 make install && make build && make run

Set on-chain remote attestation following these steps: SGX Direct Mode Setup

Enhancing zkVMs and TEEs with Standardized Inputs

Standardizing Prover's Input

To process a block, we built a host tailored for the proof use case, and we standardized prover's input for all ZkVM/TEE guests. This means:

  1. The host gathers the minimum info you need for state transition;

  2. Generates state proofs (account & storage) that validate such input.

Accomplished with a custom ProviderDB that batch retrieves these inputs from a full node RPC, on the other hand, providing endpoints for user's ProofRequest.

You can try it out by running:

./script/proof_block.sh [network] [proof_type] [block_no]

After starting the host monitor it on our Grafana dashboard.

Future plans

In a nutshell, we aim to build the most user-friendly, integrated facility for EVM-compatible block proving. This is a layer between full nodes & ZK/TEE that requires huge engineering efforts to keep things compatible.

Our future plans include:

  • Integrating more Riscv32 zkVMs (with our build pipeline)

  • Extending the pipeline for Wasm zkVMs

  • Adding direct data retrieval from Reth to skip RPC overhead

  • Adding modularized architecture to integrate other EVM L2 block proofs

Get ready for real-time proving enabled single slot finality!

Join us 💗

Explore open positions on our job board.

Follow us 🥁

Get the latest from Taiko:

Contribute 🤓

Contribute to Taiko on GitHub and earn a GitPOAP! You will also be featured as a contributor on our README. Get started with the contributing manual.

Subscribe to Taiko Labs
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.