Home Edition #2
Moderator: Eran Tromer
Presenters: Howard Wu & Collin Chin
Authors:
To be presented on 2021-04-19.
Resources:
Note taker: Daira Hopwood
Motivation:
Decentralised applications have scalability issues due to everyone reexecuting all transactions.
Time-sharing resources across all parties.
Limited execution environments are being used to improve throughput.
History of all state-transitions must be executed by all parties causes privacy issues.
Lack of privacy also enables front-running attacks against consensus.
ZKPs enable prover to prove known state-execution was performed correctly without publicly disclosing contents.
Challenges:
DApps have weak guarantees of correctness and safety.
Require specialised expertise to represent executions.
Solution:
Leo is formally verified programming language for zero-knowledge applications. It is composable, decidable and universal.
Leo has 3 primary stages. Code -> Parser -> AST -> Conversion -> …
Focus on Type Inference.
Type inference: automatically detects types of an expression in a formal language.
Formal definition of Leo language, aimed at producing a verifying compiler that proves semantic equivalence between input and output programs
Using ACL2 to verify each stage, using a formal model of the phase. There might be nondeterminism in the specification of the phase.
Compose the stage proofs to obtain an end-to-end proof.
Adding more optimization phases. Proofs are composable for modularity of the compiler.
Leo is implemented in Rust, 65000+ LoC, 12 contributors
Formally verified in ACL2, open-sourcing this soon.
70+ page language specification.
Also built tooling and frameworks, including Leo Playground. Will be released tomorrow.
Aleo Studio - IDE for writing zk applications.
Aleo package manager, with collaborative features.
https://leo-lang.org
https://paper.leo-lang.org
https://github.com/AleoHQ/leo
Does it support nondeterminism?
Is the scope of Leo just specifying a circuit? Does it include precomputation?
Own implementation of proof system and curves?
Supporting zkInterface?
Eran: proposed extensions to zkInterface coming from SIEVE programme.
Francois Garillot: rationale for Hindley-Milner, relation to e.g. Noir?
Francois: Why standardize specific language? What is required of the IR to enable more general standard that would enable formal verification?
Francois: need to abstract in order to standardize. Otherwise we are standardizing precisely Leo.
Eran: drill more into what zkInterface should provide to support what Leo needs.
Daira: comparison with CirC? (https://eprint.iacr.org/2020/1586)
Kev: relation to ACIR (unlimited fan-in gates and black-box functions)
Kev: rationale for Hindley-Milner?
Alessandro: Verifying Leo programs against higher-level specifications is indeed of interest. But no work on that yet — focusing on the compilation process.
Stephane Graham-Langrand on Terminology: In the formal methods community, the name “Leo” is already taken as the name of a well-established Theorem Prover. Is the name set in stone? :-) It’s going to be confusing while interacting with the FM community…
Eran: standardizing language aspects (syntax and semantics that are quite opinionated) would be an uphill battle.
Telegram group for discussion: invite link here
Formal specification doc: link here
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing