🦁 The Leo Programming Language. A Programming Language for Formally Verified, Zero-Knowledge Applications
Go to file
2020-08-17 17:21:27 -07:00
.cargo Remove revision peg for snarkOS dependency, change Leo to groth16, update to proper calling convention for snarks 2020-07-30 19:09:27 -07:00
.github Fix windows 2020-08-15 01:44:56 -07:00
.resources Add markdown changes 2020-06-20 08:42:33 +00:00
.travis Adds SSH key for snarkOS 2020-06-07 22:55:49 -07:00
ast merge master 2020-08-17 01:12:16 -07:00
compiler merge master 2020-08-17 01:12:16 -07:00
examples ignore examples outputs directories 2020-08-03 12:57:49 -07:00
gadgets Add and fix tests for all signed integer types 2020-08-14 16:10:48 -07:00
input impl new group notation for inputs ast + typed 2020-08-15 16:45:43 -07:00
leo write test output to filename specified by context 2020-08-15 23:25:34 -07:00
linter Add linter stub 2020-08-02 18:06:21 -07:00
package impl test context with test inputs 2020-08-15 22:09:22 -07:00
state pull master 2020-08-15 02:28:34 -07:00
typed merge master 2020-08-17 01:12:16 -07:00
.codecov.yml Adds configuration files for tooling 2020-06-07 22:53:45 -07:00
.gitignore allow outputs directory in leo package 2020-08-03 12:59:49 -07:00
.rustfmt.toml Adds configuration files for tooling 2020-06-07 22:53:45 -07:00
.rusty-hook.toml Adds configuration files for tooling 2020-06-07 22:53:45 -07:00
.travis.yml Update travis.yml 2020-06-08 00:21:15 -07:00
Cargo.lock merge master 2020-08-17 01:12:16 -07:00
Cargo.toml pull master 2020-08-15 02:28:34 -07:00
FAQs.md Update and rename FAQ.md to FAQs.md 2020-08-15 03:01:30 -07:00
README.md add toc, build, quick start 2020-08-17 17:21:27 -07:00

The Leo Programming Language

CI codecov

Leo is a functional, statically-typed programming language built for writing private applications.

Table of Contents

1. Overview

Welcome to the Leo programming language.

Leo exists to provide a simple high-level language that compiles to a rank one constraint system (R1CS) circuit. With Leo, you can write circuits to support zero-knowledge tokens, private stable coins, and decentralized marketplaces.

The syntax of Leo is influenced by JavaScript, Python, Scala, and Rust with a strong emphasis on readability and ease-of-use.

2. Build Guide

2.1 Install Rust

We recommend installing Rust using rustup. You can install rustup as follows:

  • macOS or Linux:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    
  • Windows (64-bit):

    Download the Windows 64-bit executable and follow the on-screen instructions.

  • Windows (32-bit):

    Download the Windows 32-bit executable and follow the on-screen instructions.

2.2a Build from Crates.io

We recommend installing Leo this way. In your terminal, run:

cargo install leo

Now to use Leo, in your terminal, run:

leo

2.2b Build from Source Code

Alternatively, you can install snarkOS by building from the source code as follows:

# Download the source code
git clone https://github.com/AleoHQ/leo
cd leo

# Build in release mode
$ cargo build --release

This will generate an executable under the ./target/release directory. To run snarkOS, run the following command:

./target/release/leo

3. Quick Start

Use the Leo CLI to create a new project

leo new hello_world
cd hello_world

This creates a directory with the following structure:

hello_world/
├── Leo.toml # Your program manifest
├── inputs/ 
│ └── hello_world.in # Your program inputs
└── src/    
  └── main.leo # Your program file

Let's run the project.

3.1 Zero Knowledge in one line

leo run

This command will compile the program, generate keys for a trusted setup, fetch inputs, generate a proof and verify it.

Congratulations! You've just run your first Leo program.

4. Flying Tour

WIP

5. License

License: GPL v3