https://github.com/actuallyachraf/zkstarks
A :pencil: literate and test-driven :bug: implementation of ZK-STARKs
https://github.com/actuallyachraf/zkstarks
starks zk-starks zkp zkstarks
Last synced: 3 months ago
JSON representation
A :pencil: literate and test-driven :bug: implementation of ZK-STARKs
- Host: GitHub
- URL: https://github.com/actuallyachraf/zkstarks
- Owner: actuallyachraf
- Created: 2020-01-21T11:36:19.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-04-18T14:55:18.000Z (about 6 years ago)
- Last Synced: 2025-12-17T11:26:31.755Z (6 months ago)
- Topics: starks, zk-starks, zkp, zkstarks
- Language: Go
- Homepage:
- Size: 252 KB
- Stars: 42
- Watchers: 2
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# zkstarks
This is a test-driven implementation of zkSTARKs based on the recent tutorials
by [StarkWare](https://github.com/starkware-industries/stark101).
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](EXAMPLE.md).
The package implements both the primitives necessary for proof generation
and we use tests to generates a full uncompressed proof of the following statement :
```sh
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
```sh
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](https://github.com/golang/go/issues/37644)
## 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
- [Arithmetization I](https://medium.com/starkware/arithmetization-i-15c046390862)
- [Arithmetization II](https://medium.com/starkware/arithmetization-ii-403c3b3f4355)
- [Scalable Transparent and Post-Quantum Proofs](https://eprint.iacr.org/2018/046)