This is an exploration project with a goal to implement a simple STARK verifier in SimplicityHL language.
SimplicityHL is a Rust-like language that compiles to Simplicity assembly. The stack is developed by Blockstream, and it is currently deployed in the Liquid sidechain testnet.
One of the key concepts of Simplicity is Jets:
- The core language is very concise (nine GADT operators)
- You can implement pretty complex programs using just the core, but it would take kilobytes of code and minutes of execution
- However you can replace common sub-programs with "Jets" — formally proven equivalent implementations in C
- This opens a clear path for introducing new exciting features without softforks, with a follow-up optimization route
STARKs are perfect candidate for this approach!
- Clone this repo
- Install
simfony
CLI tool withmake install
- Run tests with
make test
- Go to stark101 folder
- Generate proof with
make proof
- Build STARK verifier program with
make build
- Run the program using the generated witness with
make run
- Go to stwo-verifier folder
- Run tests with
make test
- Generate witness with
make proof-wit
- Build the program using
make build
This is a small CLI tool that helps with the development of SimplicityHL programs.
Install simfony
binary:
cargo install --git https://github.com/keep-starknet-strange/stark-symphony simfony-cli
Build a Simfony program:
simfony build src/simple_fib.simf --witness src/simple_fib.wit --output-path src/simple_fib.bin
Run a Simfony program:
simfony run src/simple_fib.simf --witness src/simple_fib.wit --param src/simple_fib.param