Zulu Network
  • INTRODUCTION
    • Welcome to Zulu Network
    • ZK-Powered Architecture
    • Why is Zulu Needed?
  • Core Concepts
    • DePIN & AI on Bitcoin
    • EVM Layer (L2)
    • DePIN Layer (L3)
    • Zulu DePIN + AI Staking
    • BitVM - Zulu
      • BitVM-ZKP-Verifier
      • Bridging From Bitcoin
        • Peg IN/OUT Process
        • Atomic Swaps
      • Verify on the Bitcoin Network
      • Zulu Trust-Minimized Bridge
    • Open Liquidity Aggregator
  • Tech Approach
    • Layer 2 Solutions
    • Building on Bitcoin
    • ZKEVM: EVM on Bitcoin
    • Data Availability
    • Modularity
  • Zulu EVM Layer
    • Network Info
    • Bridge
    • Deploy Your Dapp
      • Quick Start
      • API Reference
  • Zulu DePIN Layer
    • Getting Started
    • Developing dApps
  • Tools and Resources
    • Important Links
    • $ZULU Utility
    • Roadmap
    • Developer Incentives
  • Support and Community
    • Join the Community
    • FAQs
Powered by GitBook
On this page
  • Importance of Snark Verifier Script
  • Technical Implementation
  1. Core Concepts
  2. BitVM - Zulu

BitVM-ZKP-Verifier

The first ZKP Verify Code Implementation using Bitcoin Script, by Zulu.

PreviousBitVM - ZuluNextBridging From Bitcoin

Last updated 1 year ago

The Zulu Network team has Open-Sourced the first ZKP Verify Code Implementation using Bitcoin Script! It involves mainstream algorithms such as Groth16/FFlonk, and we have submitted the code to the BitVM repository.

Here are the links to our code:

  • fflonk script

    • ​https://github.com/BitVM/BitVM/pull/70​

    ​

  • Groth16's script

    • ​https://github.com/BitVM/BitVM/pull/71​

    • ​https://github.com/zulu-network/bitvm-groth16-verifier​

Importance of Snark Verifier Script

Robin Linus, founder of BitVM, shared that the Snark Verifier script on Bitcoin is very important in BitVM2 (https://bitvm.org/bitvm2).

He has also recently praised the efforts in development by the Zulu Network team: https://x.com/robin_linus/status/1796206213077545079

Technical Implementation

What is the size of the verifier for Groth16/Fflonk?

1. Fflonk Verifier:

Curve: BN254

Public input number: 2

Script size: 7456022084 bytes

Max stack items number: 905

2. Groth16 Verifier:

Curve: BN254

Public input number: 1

Script size: 7034158970 bytes

Max stack items number: 1112 (Can be optimized)

Based on the current script size, we only need to split the entire ZKP script into fewer than 2,000 sub-scripts, which is remarkable. We are deeply grateful to all the contributors to the BitVM repository, including@robin_linus,@weikengchen, and others.

We also extend our thanks to Andrija Novakov from @__geometry__for their latest paper, "On Proving Pairings," https://eprint.iacr.org/2024/640.pdf which significantly reduces the overall script size.

This achievement lays the foundation for constructing a decentralized bridge based on BitVM2. Zulu's next goal is to launch a trust-minimized Bitcoin bridge utilizing cross-chain technology and BitVM2.

The snark verifier in the script on Bitcoin is a huge milestone for future Bitcoin developments, as BitVM creator@robin_linus shared at ZK Proof 6 in Berlin.

Let's move Bitcoin forward!