Skip to content

Commit 24a384c

Browse files
committed
Update README.md
1 parent 445d986 commit 24a384c

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

README.md

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
11
# ◼️🐓 coq-of-noir
22

3-
Noir is a Domain Specific Language for SNARK proving systems. With `coq-of-noir`, we provide an **affordable way to formally verify smart contracts written in Noir**. We rely on the well-known proof assistant [Coq](https://coq.inria.fr/) for the verification work as well proof techniques developed for [coq-of-rust](https://github.com/formal-land/coq-of-rust) and [coq-of-solidity](https://github.com/formal-land/coq-of-solidity).
3+
With `coq-of-noir`, we provide an **open-source and extensive way to formally verify smart contracts written in  Noir**. Formal verification is about checking for any possible input that your code has no security issues, what is essential for code deployed on the blockchain! 🛡️
44

5-
## Status
5+
To keep things simple, we rely on the well-known proof assistant [Rocq](https://rocq-prover.org/) for all the verification work: if you are already knowledgeable into this system, you can readily use `coq-of-noir` to verify your smart contracts!
66

7-
This is still a work in progress. Contact us at [contact@formal.land](mailto:contact@formal.land) or by direct message on our [X account](https://x.com/FormalLand) if you are interested.
7+
## 🏎️ Getting Started
88

9-
## Goal and Vision
9+
Follow what we do in our CI file [coq.yml](.github/workflows/coq.yml). Sorry for not having the time to provide more explanations!
10+
11+
## ✅ What Works
12+
13+
The following steps work:
14+
15+
- A generated translation of the `base64` library of Noir to Coq in a code that compiles; we should thus support a large part of the Noir language.
16+
- Semantics rules to reason on code like the above together with a proof strategy. This should already cover most of the Noir language.
17+
- A formally verified functional specification of one of the functions with a loop from the `base64` library, exercising mutations and array access. We consider this to be our main test to see that `coq-of-noir` can work on non-trivial examples.
18+
19+
Note that the proof process is still very verbose, and this tool is still a work in progress. Contact us at [contact@formal.land](mailto:contact@formal.land) or by direct message on our [X account](https://x.com/FormalLand) if you are interested.
20+
21+
## 🔭 Goal and Vision
1022

1123
The goal is to enable each team developing critical applications (meaning handling user money) to verify the correctness of their code with the higest degree of certainty thanks to **formal verification**.
1224

@@ -20,13 +32,13 @@ Our initial target is to verify a part of the [base64](https://github.com/noir-l
2032

2133
_If you have a Noir project that you want to formally verify, either start using `coq-of-noir` or contact us!_
2234

23-
## Blog posts
35+
## 📚 Blog posts
2436

2537
Here are some blog posts featuring this tool:
2638

2739
- [◼️ A formal verification tool for Noir – 1](https://formal.land/blog/2024/11/01/tool-for-noir-1)
2840
- [◼️ A formal verification tool for Noir – 2](https://formal.land/blog/2024/11/15/tool-for-noir-2)
2941

30-
## License
42+
## ⚖️ License
3143

32-
`coq-of-noir` is free and open source. It is distributed under a dual license. (MIT/APACHE) The translation phase is based on the code of the Noir compiler to maximize code reuse.
44+
`coq-of-noir` is free and **open source**. It is distributed under a dual license. (MIT/APACHE) The translation phase is based on the code of the Noir compiler to maximize code reuse.

0 commit comments

Comments
 (0)