Skip to content

feat: Refactor stateless executor#10629

Draft
rubo wants to merge 112 commits intomasterfrom
feature/stateless-zisk
Draft

feat: Refactor stateless executor#10629
rubo wants to merge 112 commits intomasterfrom
feature/stateless-zisk

Conversation

@rubo
Copy link
Contributor

@rubo rubo commented Feb 24, 2026

Resolves #10633, resolves #10618, resolves #10630

Changes

  • Introduced two projects: the Nethermind.Stateless.ZiskGuest as a guest for Zisk, and the Nethermind.Stateless.Executor with the core execution and serialization logic. The idea is to have a separate guest app for each supported zkVM, containing all the host-specific functionality. The stateless executor itself is a regular library that can be compiled and run on any platform.
  • Added a RISC-V playground (TestProgram.cs) since the Zisk guest is not runnable elsewhere.
  • Implemented input serialization.
  • Added block validation.
  • Refactored and optimized Zisk I/O API.
  • Added Zisk cryptographic API bindings for precompiles, hashing, etc.
    • Precompiles are conditionally compiled and have 3 files all with the same name in different directories. See below.
  • Conditional compilation is implemented based on a file or directory name: std for standard implementations and zkevm for zkEVM implementations. The .std.cs files or .cs files in the std directory are excluded from build when EnableZkEvm = true, while the .zkevm.cs files or .cs files in the zkevm directory are excluded from build when EnableZkEvm != true. This vastly eliminates the need of #if ZK_EVM directives in the codebase.
  • Removed the old StatelessExecution project.

See the README

Types of changes

What types of changes does your code introduce?

  • Bugfix (a non-breaking change that fixes an issue)
  • New feature (a non-breaking change that adds functionality)
  • Breaking change (a change that causes existing functionality not to work as expected)
  • Optimization
  • Refactoring
  • Documentation update
  • Build-related changes
  • Other: Description

Testing

Requires testing

  • Yes
  • No

If yes, did you write tests?

  • Yes
  • No

Notes on testing

Requires manual testing

@rubo rubo force-pushed the feature/stateless-zisk branch from 1759bcc to 1ecab29 Compare February 27, 2026 19:53
@rubo rubo force-pushed the feature/stateless-zisk branch from 6503a2a to 0461c5c Compare March 17, 2026 22:02
@rubo rubo force-pushed the feature/stateless-zisk branch 2 times, most recently from b2a9fd1 to 2629728 Compare March 19, 2026 02:20
@rubo rubo force-pushed the feature/stateless-zisk branch from 2629728 to 0fc1fe3 Compare March 19, 2026 02:22
@NethermindEth NethermindEth deleted a comment from github-actions bot Mar 19, 2026
@rubo rubo force-pushed the feature/stateless-zisk branch from 942077a to a502c86 Compare March 20, 2026 17:59
@NethermindEth NethermindEth deleted a comment from github-actions bot Mar 20, 2026
@NethermindEth NethermindEth deleted a comment from github-actions bot Mar 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement precompiles for Zisk Implement input serialization for Zisk Add BlockValidator to StatelessExecutor

4 participants