Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

VOID Reference Implementation

A minimal example stack for building verifiable, opinionated, chain‑integrated decentralized apps.

What is VOID?

VOID is a minimal pattern for building Verifiable, Opinionated, chain Integrated Decentralized apps. You write your app logic once as a state machine and run it inside a generic node/server. Your app can then be opinionated about many aspects of how it operates.

  • Utilize either lightweight attestations (TEE/signature) or zero‑knowledge proofs to relay app state to users and/or back on-chain.
  • Interactions with the app can still be conducted on-chain through lightweight contracts, making the app composable with other smart contracts as well as compatible with a user's existing wallet and favorite chain.
  • The app can be written in any language using various tooling as long as its execution can be verified.
  • App transactions can solely be based on transactions made on a representative contract on a single chain, or integrate with an oracle and respond to transactions being made on multiple chains (as if the app lived on multiple chains simultaneously).
  • The app can re-sequence events to fully capture any value leak from priority fees (MEV capture).
  • And much more!

What VOID is not

VOID is Not a general‑purpose rollup or a monolithic chain. VOID is a design pattern that results in powerful decentralized apps that are more opinionated than can be achieved through typical contracts on an existing chain.

How to use the VOID Reference Implementation Repo

Use the VOID Reference Implementation repo to:

  • Start from the example app app-swap/ (a simple AMM with deposits, swaps, LP, and withdrawals).
  • Reuse the shared tooling under void/ to run nodes, expose JSON-RPC, archive state, and (optionally) prove/attest state.
  • Run end-to-end tests and benchmarks locally.

Building your own app:

  • Clone the repo and replace app-swap with your app logic while keeping a similar pattern of state_transition function, storage, events, and queries. Continue through the documentation for more details on App setup, architecture, and running in a Node.