OpenProof
  • OpenProof: Open Source Infrastructure for Next-Generation Trusted Computing
  • About Us
  • Product
    • ZKPU: The NVMe-Powered ZK Hardware Solution to Blockchain’s Trilemma
  • Demo
    • NVMe-MSM
Powered by GitBook
On this page
  • Setup
  • FPGA Live Demo
  • NVMe-MSM Driver Explain
  • Benchmark
  1. Demo

NVMe-MSM

You Provide the Linux, We Deliver the MSM Result.

PreviousZKPU: The NVMe-Powered ZK Hardware Solution to Blockchain’s Trilemma

Last updated 3 months ago

NVMe-MSM is a demonstration of our cutting-edge modular design for Zero-Knowledge Proof hardware, combining high-performance MSM (Multi-Scalar Multiplication) acceleration with seamless NVMe protocol support. This demo is implemented on a VCU118 FPGA, showcasing our custom MSM hardware design integrated with an NVMe endpoint.

To complete the system, we provide a host-side Python-based driver that utilizes Linux’s open-source command-line tools to enable efficient communication between the host and the FPGA. This demo showcases our capability to not only accelerate MSM computations but also harness NVMe for seamless data transfer, ensuring compatibility with modern infrastructure and practical applications. NVMe-MSM stands as a tangible proof of concept for our vision of scalable, efficient, and accessible ZK hardware solutions.

Setup

FPGA: XIlinx vcu118

CPU: RISC-V

System: Chipyard based

Clock: 100Mhz

FPGA Live Demo

In this demo, the MSM-NVMe system works as follow:

  • Host write scalars and BLS-12377 points over to our SoC.

  • The SoC performs the MSM computation and sends a completion signal back to the host.

  • The host triggers a read operation to retrieve the results.

NVMe-MSM Driver Explain

Benchmark

The host sends an command to initiate the MSM operation.

This video highlights the simplicity of our driver, which leverages Python’s subprocess module to call commands. By using Linux’s native NVMe support, our approach ensures seamless interaction with the SoC, demonstrating how straightforward it is to integrate with modern systems.

We achieve MSM completion in 1.396 when amount of points N=220N=2^{20}N=220 seconds at a clock frequency of 100 MHz. When the clock frequency is increased to 250 MHz, the expected execution time is approximately 0.546 seconds, which is comparable to Jump’s CycloneMSM result of 0.559 seconds.

NVMe Async Event
nvme-cli
nvme-cli
Benchmark