/zkstarks

A :pencil: literate and test-driven :bug: implementation of ZK-STARKs

Primary LanguageGo

zkstarks

This is a test-driven implementation of zkSTARKs based on the recent tutorials by StarkWare.

To follow trough the implementations are separated into files and their respective tests reading the files and following the Python example will be more fruitful to your understanding.

You can see an example of the execution log here.

The package implements both the primitives necessary for proof generation and we use tests to generates a full uncompressed proof of the following statement :

I know a field element *X* such that the 1023rd element of the FibonacciSq sequence is 2338775057.

Usage

The program will take some time to run polynomial interpolation and evaluation are the most costly operations

go test -v -gcflags=all=-d=checkptr=0
  • P.S : The checkptr flag crashes due to an unsafe conversion in Go's SHA3 implementation issue

Notes

Due to some intricacies and differences between languages, the hash values are different from this implementation and the starkware one, we also use sha3 (Keccak-FIPS) instead of sha256. The difference in hash values is due to the internal encodings (Values to Bytes) used by Python and Go.

References