This commit is contained in:
waalge 2023-08-22 08:02:08 +00:00
parent dece937665
commit 05969ce7cc
2 changed files with 11 additions and 8 deletions

View File

@ -20,7 +20,8 @@ This post is borne out of a best effort of how far "zk on Cardano" can be pushed
## What is zk? ## What is zk?
There is no shortage of explanations describing what zk is There is no shortage of explanations describing what zk is
( _eg_ [by Vitalik](https://vitalik.ca/general/2021/01/26/snarks.html) or [a full mooc](https://zk-learning.org/) ). ( _eg_ [by Vitalik](https://vitalik.ca/general/2021/01/26/snarks.html){target="_blank"} or
[a full mooc](https://zk-learning.org/){target="_blank"} ).
There is also a reasonable breath to the field of zk that includes things like distributed compute. There is also a reasonable breath to the field of zk that includes things like distributed compute.
Zk involves some really neat maths that lets you do some seemingly magical feats Zk involves some really neat maths that lets you do some seemingly magical feats
and pairs well with blockchain in extending what is functionally possible. and pairs well with blockchain in extending what is functionally possible.
@ -28,7 +29,7 @@ Let's stick to a simple and prototypical example.
Suppose Alice and Bob are playing battleships. Suppose Alice and Bob are playing battleships.
The game begins with Alice and Bob placing their ships within their own coordinate grid. The game begins with Alice and Bob placing their ships within their own coordinate grid.
They then take in turns picking coordinates to "strike". They then take turns picking coordinates to "strike".
If they hit nothing then their turn ends, but if they hit a ship then they strike again. If they hit nothing then their turn ends, but if they hit a ship then they strike again.
The winner is the first to strike all coordinates containing their opponent's ships. The winner is the first to strike all coordinates containing their opponent's ships.
@ -61,10 +62,12 @@ In applications this is important because Bob might not be able to lie anymore b
## Sudoku snark ## Sudoku snark
Sudoku snark was the entrant to Emurgo's hackathon. Sudoku snark was the entrant to Emurgo's hackathon.
The summary-pitch-story deck is [here](https://pub.kompact.io/sudoku-snark). The summary-pitch-story deck is [here](https://pub.kompact.io/sudoku-snark){target="_blank"}.
Links to the associated repos: [plutus-zk](https://github.com/waalge/plutus-zk) and [sudoku-snark](https://github.com/waalge/sudoku-snark). Links to the associated repos: [plutus-zk](https://github.com/waalge/plutus-zk){target="_blank"}
and [sudoku-snark](https://github.com/waalge/sudoku-snark){target="_blank"}.
Just after the hackathon got underway there was a [large PR merged](https://github.com/input-output-hk/plutus/pull/5231) Just after the hackathon got underway there was a
[large PR merged](https://github.com/input-output-hk/plutus/pull/5231){target="_blank"}
into the main branch of plutus. into the main branch of plutus.
It's a mammoth culmination of many many months of work. It's a mammoth culmination of many many months of work.
In it were some fundamental primitives needed for running zk algorithms. In it were some fundamental primitives needed for running zk algorithms.
@ -81,7 +84,7 @@ this third part is where things got stuck.
We did get as far as running a cluster of nodes in the Conway era with the latest version of plutus We did get as far as running a cluster of nodes in the Conway era with the latest version of plutus
but unrelated changes seemed to thwart any chance of building transactions here. but unrelated changes seemed to thwart any chance of building transactions here.
A quick shout-out to the [modulo-p.io](https://modulo-p.io/) team. A quick shout-out to the [modulo-p.io](https://modulo-p.io/){target="_blank"} team.
They had a different approach and managed to implement a zk algorithm with the existing plutus primitives. They had a different approach and managed to implement a zk algorithm with the existing plutus primitives.
This spared the need to play the foolhardy dependency bumping game with the Cardano node. This spared the need to play the foolhardy dependency bumping game with the Cardano node.
However, because zk is so arithmetically intense, However, because zk is so arithmetically intense,
@ -93,7 +96,7 @@ The validator in Sudoku snark uses [groth16](https://eprint.iacr.org/2016/260.pd
In part because this was already mostly available from the plutus repo itself. In part because this was already mostly available from the plutus repo itself.
It is also the most obvious candidate to begin with. It is also the most obvious candidate to begin with.
It's relatively mature, relatively simple, can be implemented from the new primitives, It's relatively mature, relatively simple, can be implemented from the new primitives,
and, importantly in Cardano land, has small proof size. and importantly in Cardano land has small proof size.
(As far as I know, the smallest of comparable algorithms.) (As far as I know, the smallest of comparable algorithms.)
The program to generate the setup and proofs uses the Arkworks framework. The program to generate the setup and proofs uses the Arkworks framework.

View File

@ -6,6 +6,6 @@
Questions? We'll be happy to help answer any of your questions. Send us an email and we'll get back to you shortly. Questions? We'll be happy to help answer any of your questions. Send us an email and we'll get back to you shortly.
</div> </div>
<div> <div>
Reach us on : <a href="mailto:hello@kompact.io">hello@kompact.io</a> Reach us on : <a href="mailto:kompactio@proton.me">kompactio@proton.me</a>
</div> </div>
</section> </section>