LogoLogo
  • INTRODUCTION
  • LEARN
    • Espresso in the Modular Stack
    • The Espresso Network
      • System Overview
      • Properties of HotShot
        • EspressoDA
          • How It Works
      • Interfaces
        • Espresso ↔ Rollup
        • Espresso ↔ L1
        • Rollup ↔ L1
      • Internal Functionality
        • Espresso Node
        • Light Client Contract
        • Fee Token Contract
        • Stake Table
          • How the Stake Table Contract Works
        • Smart Contract Upgradeability
    • Rollup Stacks
      • Integrating a ZK Rollup
        • ZK Rollup Architecture
        • Using Espresso
        • Summary of Changes
      • Integrating an Optimistic Rollup
        • Optimistic Rollup Architecture
        • Using Espresso
        • Summary of Changes
  • Guides
    • Using the Espresso Network
      • Integrating Arbitrum Orbit Chain
        • Quickstart with Arbitrum Nitro Rollups
        • Reading Confirmations from the Espresso Network
        • Arbitrum Nitro Integration Overview
          • Using TEE with Nitro
          • Arbitrum Nitro Trust & Liveness Dependencies
        • Migrating Arbitrum Orbit Chains to Espresso
          • Arbitrum Testnet
            • Nitro Testnet
            • Local Deployment (`docker compose`)
      • Using the Espresso Network as a Cartesi application
    • Running an Espresso Node
    • Running a Builder
    • Bridging with the Espresso Network
  • API Reference
    • Espresso API
      • Status API
      • Catchup API
      • Availability API
      • Node API
      • State API
      • Events API
      • Submit API
      • Earlier Versions
        • v0
          • Status API
          • Catchup API
          • Availability API
          • Node API
          • State API
          • Events API
          • Submit API
    • Builder API
  • Releases
    • Mainnet 1
      • Running a Mainnet 1 Node
      • Contracts
      • Rollup Migration Guide
    • Mainnet 0
      • Running a Mainnet 0 Node
      • Contracts
    • Testnets
      • Decaf Testnet Release
        • Running a Node
        • Contracts
      • Cappuccino Testnet Release
        • Running a Node
        • Deploying a Rollup on Cappuccino
        • Benchmarks
      • Gibraltar Testnet Release
        • Interacting with Gibraltar
        • Arbitrum Nitro integration
        • Deploying a Rollup on Gibraltar
      • Cortado Testnet Release
        • Interacting with Cortado
        • OP Stack Integration
          • Optimism Leader Election RFP
      • Doppio Testnet Release
        • Interacting with Doppio
        • Polygon zkEVM Stack Integration
        • Minimal Rollup Example
        • Benchmarks
      • Americano Testnet Release
  • Appendix
    • Interacting with L1
      • Trustless Sync
      • Fork Recovery
      • Bridging
    • Glossary of Key Terms
Powered by GitBook
On this page
  • Restaking
  • Consensus Sync
  1. LEARN
  2. The Espresso Network
  3. Internal Functionality
  4. Stake Table

How the Stake Table Contract Works

PreviousStake TableNextSmart Contract Upgradeability

Last updated 1 year ago

The HotShot contract, which verifies and stores Espresso state updates, also stores the entirety of the latest HotShot stake table. By taking this to be not just a mirror of the stake table but the canonical version of it, we gain a number of advantages, including the potential for the L1 itself to make changes to the stake table, a requirement for implementing .

Restaking

Restaking is a , since it allows Espresso to share a security budget with Ethereum and aids in incentive alignment between the Ethereum operator set and rollups integrated with Espresso. But to enable restaking using a system like , the restaking contracts must be able to change the state of the Espresso stake table, such that new entries can be added when new L1 validators opt into restaking for Espresso.

By treating the stake table stored on the L1 as the canonical stake table, we allow L1 smart contracts to do exactly this, merely by writing to another contract on the same L1. Espresso nodes will then read the updated stake table back from the L1 at the start of the next and begin using the stake table with the restaker's entry for validating future consensus decisions.

This does require every HotShot consensus participant to run an L1 light client in order to make trustless reads from the HotShot smart contract. However, Ethereum's proof-of-stake consensus enables very efficient, lightweight, trustless clients, and this Ethereum client can be bundled directly into the HotShot client executable for a seamless user experience.

Consensus Sync

In order to verify consensus decisions, a HotShot client must know the stake table that was used to authenticate each decision, so that it can accurately account for the number of votes endorsing each decision. This means that, naively, if a new HotShot client or consensus participant wanted to sync with the current state of consensus, it would have to replay from genesis at least every block which updated the stake table. By storing verified snapshots of the stake table on a trusted L1, new HotShot nodes can instead read the latest snapshot from the L1 and start replaying blocks from there, trusting the L1 validator set to have already verified each block which led up to the snapshot. This is very similar to how rollups can enable fast, trustless sync for their clients by leveraging L1 state updates.

critical part of the Espresso roadmap
Eigenlayer
restaking