BitVM-ZKP-Verifier

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

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:

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!

Last updated