Skip to content

Guest panics when running Ream's Beacon Chain STF – likely due to input size constraints #732

@x-senpai-x

Description

@x-senpai-x

As part of Ream’s (meta issue for zkVM integration), one of the goals is to run the full CL (Consensus Layer) state transition function within a zkVM. For this prototype, I'm using Jolt zkVM as the proving backend.
When attempting to prove minimal state transitions (specifically process_block) using Jolt, the guest panics, likely due to input size limitations. The current implementation attempts to load pre-state transition Beacon chain as input ( SSZ Snappy-decoded), which results in excessive memory use or constraints being hit inside the guest VM.
Here’s a brief outline of what the Ream STF prover does:
Deserialize BeaconState and SignedBeaconBlock using SSZ.
Run process_{functions} from the consensus logic.
Output the updated BeaconState root.
This works outside the zkVM, but fails when embedded inside Jolt as a guest program.
For reproducing the issue follow the steps in the README

I tried changing the input limits inside #[jolt::provable()] myself but even that didn't help

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions