Skip to content

A prototype implementation of the Zipline block root oracle using Casper finality

License

Notifications You must be signed in to change notification settings

ChainSafe/Zipline-Casper

Repository files navigation

Apache V2 License GitHub Workflow Status Specification

Zipline is a permissionless block header oracle from Gasper chains (Ethereum/Gnosis beacon chain) to EVM chains! It uses fault proofs to ensure that any relayed block roots that have not been finalized by the origin chain can be proven fraudulent.

This repo contains a proof-of-concept implementation of the main components that make up the protocol. Primarily the contracts that run on the destination chain and the provable execution that runs in an emulator off-chain (but can be proven on-chain) to verify chain finality.

It also contains a book describing the design of the protocol in detail.

Repo Overview

Component Description Doc
Contracts The Destination chain contracts. These implement the fraud proving game and store the trusted origin chain checkpoints documentation
Demo A demo that can be run locally showing the different components interact to produce the protocol documentation
Finality Client A Rust implementation of a Casper finality client documentation
Preprocessor A typescript CLI and daemon that poll a Gasper chain to produce proofs for a finality client documentation
Hashi Adapter An example of integrating Zipline with the Hashi EVM block oracle aggregator documentation
Zipline State Transition (MIPS) A Rust implementation of the Zipline state transition function that builds to a Cannon compatible MIPS binary. This wraps the finality client in a form that can be run in the emulator and proven on-chain documentation
Emulator A Rust implementation of a MIPS emulator that is compatible with Cannon documentation
Specification An MDBook describing the protocol in detail. Also hosted at https://chainsafe.github.io/Zipline-Casper documentation

Demo

Want to see it run for yourself? The easiest way is to run the demo script. This will create a local testnet destination chain using anvil and simulate two actors interacting with the protocol and show how one can successfully prove fraud in the case a non-finalized origin chain block is submitted.

Prerequisites

This repo uses just for running scripts. You can install it with cargo.

Authors

  • Willem Olding
  • Eric Tu
  • Cayman Nava

⚠️ ❌ ❗️❗️NOT PRODUCTION READY❗️❗️❌ ⚠️

About

A prototype implementation of the Zipline block root oracle using Casper finality

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published