Nethermind.Zkvm.Abstractions 1.0.0-preview.7

This is a prerelease version of Nethermind.Zkvm.Abstractions.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Nethermind.Zkvm.Abstractions --version 1.0.0-preview.7
                    
NuGet\Install-Package Nethermind.Zkvm.Abstractions -Version 1.0.0-preview.7
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Nethermind.Zkvm.Abstractions" Version="1.0.0-preview.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Nethermind.Zkvm.Abstractions" Version="1.0.0-preview.7" />
                    
Directory.Packages.props
<PackageReference Include="Nethermind.Zkvm.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Nethermind.Zkvm.Abstractions --version 1.0.0-preview.7
                    
#r "nuget: Nethermind.Zkvm.Abstractions, 1.0.0-preview.7"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Nethermind.Zkvm.Abstractions@1.0.0-preview.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Nethermind.Zkvm.Abstractions&version=1.0.0-preview.7&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Nethermind.Zkvm.Abstractions&version=1.0.0-preview.7&prerelease
                    
Install as a Cake Tool

Nethermind zkVM abstractions

Build Nethermind.Zkvm.Abstractions

C# bindings for the zkVM Standards for Ethereum.

The library targets guest programs compiled with Native AOT and statically linked against a zkVM that implements the standard C interfaces. All native functions resolve at link time.

API

Span-based methods validate buffer lengths before the native call and throw ArgumentOutOfRangeException on mismatch. Methods that return Accelerators.Status leave failure handling to the caller, since invalid input is an expected outcome for curve operations and signature recovery. The remaining standard accelerators throw CryptographicException on failure.

ZisK

Building with -p:Zisk=true adds APIs not covered by the standards, backed by ZisK-specific functions:

  • Accelerators.KeccakF: Keccak-f[1600] permutation (eth-act/zkvm-standards#23).
  • Accelerators.Sha256F: SHA-256 compression of one block, also through a reusable Sha256FParameters block.
  • Accelerators.Memmove and Memset: direct calls to the memmove and memset precompiles, skipping corelib's wrapper.
  • Accelerators.AddMod256, MulMod256, ReduceMod256 and DivRem256: 256-bit modular arithmetic and division.
  • IO.PrintLine: writes to the standard output (eth-act/zkvm-standards#21). Without ZisK, it throws NotImplementedException.

The pointer- and ref-based methods are unchecked for hot paths; the caller guarantees the buffer sizes, alignment and non-aliasing described in their docs. DivRem256 never returns if the divisor is zero.

SP1

Building with -p:Sp1=true adds unchecked APIs backed by SP1 precompiles:

  • Accelerators.Sha256Extend and Sp1Sha256Compress: SHA-256 message schedule extension and compression of one block.
  • Accelerators.UInt256MulMod: in-place 256-bit modular multiplication.

OpenVM

Building with -p:OpenVM=true adds unchecked APIs backed by OpenVM extensions:

  • Accelerators.UInt256Mul: 256-bit wrapping multiplication on the bigint extension.
  • Accelerators.KeccakXorin: XORs up to one rate of input into a Keccak state.
  • Accelerators.OpenVMSha256Compress: SHA-256 compression of one block.
  • Accelerators.UInt256MulWide, UInt512DivRemHint and UInt512IsDivRem: a 512-bit product, a quotient and remainder hinted by the runner, and the check that pins them. The hint is a phantom instruction that only the bflat-openvm runner registers.

SP1 and OpenVM both export zkvm_sha256_compress, with different arguments: Sp1Sha256Compress and OpenVMSha256Compress each link on both zkVMs but work only on their own.

Packaging

The published package is built with ZisK, SP1 and OpenVM support, so these APIs are visible to every consumer but work only on their zkVM. A guest links only the imports its code reaches, so one that never calls another zkVM's API links fine.

License

This project is licensed under the MIT license.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Nethermind.Zkvm.Abstractions:

Repository Stars
NethermindEth/nethermind
A robust, high-performance execution client for Ethereum node operators.
Version Downloads Last Updated
1.0.0-preview.8 212 10/16/2026
1.0.0-preview.7 1,224 10/15/2026
1.0.0-preview.6 2,243 10/13/2026
1.0.0-preview.5 6,744 10/5/2026
1.0.0-preview.4 1,161 10/5/2026
1.0.0-preview.3 3,859 9/30/2026