2020-05-21 21:03:43 +03:00
|
|
|
# The Leo Programming Language
|
2020-06-16 22:55:59 +03:00
|
|
|
|
2020-08-19 11:09:14 +03:00
|
|
|
<p align="center">
|
|
|
|
<a href="https://github.com/AleoHQ/leo/actions"><img src="https://github.com/AleoHQ/leo/workflows/CI/badge.svg"></a>
|
|
|
|
<a href="https://codecov.io/gh/AleoHQ/leo"><img src="https://codecov.io/gh/AleoHQ/leo/branch/master/graph/badge.svg?token=S6MWO60SYL"/></a>
|
|
|
|
<a href="https://discord.gg/TTexWvt"><img src="https://img.shields.io/discord/700454073459015690?logo=discord"/></a>
|
|
|
|
</p>
|
2020-06-23 02:01:54 +03:00
|
|
|
|
2020-08-18 03:21:10 +03:00
|
|
|
Leo is a functional, statically-typed programming language built for writing private applications.
|
2020-06-30 04:37:52 +03:00
|
|
|
|
2020-08-18 03:21:10 +03:00
|
|
|
## <a name='TableofContents'></a>Table of Contents
|
|
|
|
|
|
|
|
* [1. Overview](#1-overview)
|
|
|
|
* [2. Build Guide](#2-build-guide)
|
|
|
|
* [2.1 Install Rust](#21-install-rust)
|
|
|
|
* [2.2a Build from Crates.io](#22a-build-from-cratesio)
|
|
|
|
* [2.2b Build from Source Code](#22b-build-from-source-code)
|
|
|
|
* [3. Quick Start](#3-quick-start)
|
2020-08-18 22:15:14 +03:00
|
|
|
* [4. Documentation](#4-documentation)
|
2020-08-18 06:21:24 +03:00
|
|
|
* [5. Contributing](#5-contributing)
|
|
|
|
* [6. License](#6-license)
|
2020-04-24 03:43:58 +03:00
|
|
|
|
2020-08-18 03:21:10 +03:00
|
|
|
|
|
|
|
## 1. Overview
|
|
|
|
Welcome to the Leo programming language.
|
2020-04-24 03:43:58 +03:00
|
|
|
|
2020-08-18 22:15:14 +03:00
|
|
|
Leo exists to provide a simple high-level language that abstracts low-level cryptographic concepts and makes it easy to
|
|
|
|
integrate private applications into your stack. Leo compiles to R1CS circuits making zero-knowledge proofs practical.
|
|
|
|
With Leo, you can support zero-knowledge tokens, private stable coins, and decentralized marketplaces.
|
2020-04-24 03:43:58 +03:00
|
|
|
|
2020-08-18 03:21:10 +03:00
|
|
|
The syntax of Leo is influenced by JavaScript, Python, Scala, and Rust with a strong emphasis on readability and ease-of-use.
|
2020-08-18 22:15:14 +03:00
|
|
|
Leo provides developers with never before seen tools to sanity check circuits including unit tests, integration tests, and console functions.
|
|
|
|
|
|
|
|
Leo is one part of a greater ecosystem for building private applications on [Aleo](https://aleo.org/). If your goal is to build a user experience
|
|
|
|
on the web that is both truly personal and truly private, then we recommend downloading the [Aleo Studio IDE](https://aleo.studio/)
|
|
|
|
and checking out the [Aleo Package Manager]().
|
2020-04-24 03:43:58 +03:00
|
|
|
|
2020-08-18 06:21:24 +03:00
|
|
|
## 2. Build Guide
|
2020-05-21 21:03:43 +03:00
|
|
|
|
2020-08-18 03:21:10 +03:00
|
|
|
### 2.1 Install Rust
|
|
|
|
|
|
|
|
We recommend installing Rust using [rustup](https://www.rustup.rs/). You can install `rustup` as follows:
|
|
|
|
|
|
|
|
- macOS or Linux:
|
|
|
|
```bash
|
|
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|
|
|
```
|
|
|
|
|
|
|
|
- Windows (64-bit):
|
|
|
|
|
|
|
|
Download the [Windows 64-bit executable](https://win.rustup.rs/x86_64) and follow the on-screen instructions.
|
|
|
|
|
|
|
|
- Windows (32-bit):
|
|
|
|
|
|
|
|
Download the [Windows 32-bit executable](https://win.rustup.rs/i686) and follow the on-screen instructions.
|
|
|
|
|
|
|
|
### 2.2a Build from Crates.io
|
|
|
|
|
|
|
|
We recommend installing Leo this way. In your terminal, run:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
cargo install leo
|
|
|
|
```
|
|
|
|
|
|
|
|
Now to use Leo, in your terminal, run:
|
|
|
|
```bash
|
|
|
|
leo
|
|
|
|
```
|
|
|
|
|
|
|
|
### 2.2b Build from Source Code
|
|
|
|
|
2020-08-18 06:21:24 +03:00
|
|
|
Alternatively, you can install Leo by building from the source code as follows:
|
2020-05-21 21:03:43 +03:00
|
|
|
|
2020-08-18 03:21:10 +03:00
|
|
|
```bash
|
|
|
|
# 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:
|
|
|
|
```bash
|
|
|
|
./target/release/leo
|
|
|
|
```
|
|
|
|
|
2020-08-18 06:21:24 +03:00
|
|
|
## 3. Quick Start
|
2020-08-18 03:21:10 +03:00
|
|
|
|
|
|
|
Use the Leo CLI to create a new project
|
|
|
|
|
|
|
|
```bash
|
2020-08-18 06:21:24 +03:00
|
|
|
# create a new `hello_world` Leo project
|
2020-08-18 03:21:10 +03:00
|
|
|
leo new hello_world
|
|
|
|
cd hello_world
|
2020-08-18 06:21:24 +03:00
|
|
|
|
|
|
|
# build & setup & prove & verify
|
|
|
|
leo run
|
2020-08-18 03:21:10 +03:00
|
|
|
```
|
|
|
|
|
2020-08-18 06:21:24 +03:00
|
|
|
The `leo new` command creates a new Leo project with a given name.
|
|
|
|
|
|
|
|
The `leo run` command will compile the main program, generate keys for a trusted setup, fetch inputs, generate a proof and verify it.
|
|
|
|
|
|
|
|
Congratulations! You've just run your first Leo program.
|
|
|
|
|
2020-08-18 22:15:14 +03:00
|
|
|
## 4. Documentation
|
2020-08-18 06:21:24 +03:00
|
|
|
|
2020-08-18 22:38:16 +03:00
|
|
|
* [Hello World - Next Steps](https://developer.aleo.org/developer/getting_started/hello_world)
|
2020-08-18 22:15:14 +03:00
|
|
|
* [Leo Language Documentation](https://developer.aleo.org/developer/language/layout)
|
|
|
|
* [Leo CLI Documentation](https://developer.aleo.org/developer/cli/new)
|
|
|
|
* [Homepage](https://developer.aleo.org/developer/getting_started/overview)
|
2020-08-18 06:21:24 +03:00
|
|
|
|
|
|
|
## 5. Contributing
|
|
|
|
|
2020-08-18 10:08:08 +03:00
|
|
|
Please see our guidelines in the [developer documentation](https://developer.aleo.org/developer/additional_material/contributing)
|
2020-08-18 03:21:10 +03:00
|
|
|
|
2020-08-18 06:21:24 +03:00
|
|
|
Thank you for helping make Leo better!
|
2020-08-18 03:21:10 +03:00
|
|
|
|
2020-08-18 06:21:24 +03:00
|
|
|
## 6. License
|
2020-08-19 11:09:14 +03:00
|
|
|
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](./LICENSE.md)
|