Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://aszepieniec.github.io/stark-anatomy/
Tutorial for STARKs with supporting code in python
https://aszepieniec.github.io/stark-anatomy/
Last synced: about 1 month ago
JSON representation
Tutorial for STARKs with supporting code in python
- Host: GitHub
- URL: https://aszepieniec.github.io/stark-anatomy/
- Owner: aszepieniec
- License: apache-2.0
- Created: 2021-10-05T14:59:11.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-11-02T19:31:27.000Z (about 1 month ago)
- Last Synced: 2024-11-02T20:22:32.641Z (about 1 month ago)
- Language: Python
- Size: 613 KB
- Stars: 201
- Watchers: 4
- Forks: 54
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-zero-knowledge - Anatomy of a STARK - six-part tutorial about the STARK proof system by Alan Szepieniec. (Index / Tutorials)
- awesomezk - Anatomy of a STARK Series
- awesomezk - Anatomy of a STARK Series
- awesome-blockchain-scalability - Anatomy of a STARK
README
# stark-anatomy
STARK tutorial with supporting code in python
Outline:
- introduction
- overview of STARKs
- basic tools -- algebra and polynomials
- FRI low degree test
- STARK information theoretical protocol
- speeding things up with NTT and preprocessingVisit the Github Pages website here: https://aszepieniec.github.io/stark-anatomy/
## Follow-up
Be sure to check out the [next tutorial](https://github.com/aszepieniec/stark-brainfuck) where we implement a STARK engine for a VM running Brainfuck. And our "real", functional, practical ZK-STARK VM, [Triton VM](https://triton-vm.org/).## Running locally (the website, not the tutorial)
1. Install ruby
2. Install bundler
3. Change directory to `docs/` and install Jekyll: `$> sudo bundle install`
4. Run Jekyll: `$> bundle exec jekyll serve`
5. Surf to [http://127.0.0.1:4000/](http://127.0.0.1:4000/)## LaTeX and Github Pages
Github-Pages uses Kramdown as the markdown processor. Kramdown does not support LaTeX. Instead, there is a javascript header that loads MathJax, parses the page, and replaces LaTeX maths instructions with their proper formulae. Here is how to do it:
1. Open `_includes/head-custom.html` and paste the following code:
```javascriptMathJax.Hub.Config({
TeX: {
equationNumbers: {
autoNumber: "AMS"
}
},
tex2jax: {
inlineMath: [ ['$', '$'], ['\\(', '\\)'] ],
displayMath: [ ['$$', '$$'], ['\\[', '\\]'] ],
processEscapes: true,
}
});
MathJax.Hub.Register.MessageHook("Math Processing Error",function (message) {
alert("Math Processing Error: "+message[1]);
});
MathJax.Hub.Register.MessageHook("TeX Jax - parse error",function (message) {
alert("Math Processing Error: "+message[1]);
});```
Jekyll, the site engine used by Github Pages, will load this header automatically. There is no need to change the `_config.yml` file.
Note that Kramdown interprets every underscore (`_`) that is followed by a non-whitespace character, as starting an emphasised piece of text. This interpretation interfereces with subscript in LaTeX formulae, which also uses underscores. The workaround is to re-write the LaTeX formulas by introducing a space after every underscore. Also, consider replacing:
- `\{` by `\lbrace` and `\}` by `\rbrace`,
- `|` by `\vert`.