The Leo Command Line Interface
The Leo CLI is a command line interface tool that comes equipped with the Leo compiler.
Installation
Global Flags
-d
,--debug
- Enables debugging mode-h
,--help
- Prints help information-V
,--version
- Prints version information
List of Commands:
You can print the list of commands by running leo --help
example
- Create a new Leo package from an example program.new
- Create a new Leo package in a new directory.build
- Compile the current package as a program.run
- Run a program with input variables.execute
- Execute a program with input variables.clean
- Clean the output directory.update
- Update to the latest version of Leo.account
- Create a new Aleo account.
leo example
To list all available example programs, run:
leo example
# Output:
Create a new Leo example package in a new directory
Usage: leo example [OPTIONS] <COMMAND>
Commands:
lottery A public lottery program
tictactoe A standard tic-tac-toe game program
token A transparent & shielded custom token program
help Print this message or the help of the given subcommand(s)
Options:
-d Print additional information for debugging
-q Suppress CLI output
--path <PATH> Optional path to Leo program root folder
-h, --help Print help
To create a new Leo package from an example program, run:
leo example {$NAME}
leo new
To create a new package, run:
leo new {$NAME}
Valid package names are snake_case: lowercase letters and numbers separated by underscores. This command will create a new directory with the given package name. The new package will have a directory structure as follows:
package/
├── .env # Your program environment
├── program.json # Your program manifest
├── README.md # Your program description
├── build/
└── src/
└── main.leo # Your program file
leo build
This command is deprecated as of Leo v1.9.0
. It will be removed in a future release.
To compile your program into Aleo Instructions and verify that it builds properly, run:
leo build
This will populate the directory build/
(creating it if it doesn't exist) with an Aleo instructions file .aleo
.
Leo ✅ Compiled 'main.leo' into Aleo instructions
leo run
Use this command to run your program before executing it.
To run a Leo transition function with inputs from the command line.
{$INPUTS}
should be a list of inputs to the program separated by spaces.
leo run {$TRANSITION} {$INPUTS}
This command does not synthesize the program circuit or generate proving and verifying keys.
Leo ✅ Compiled 'main.leo' into Aleo instructions
⛓ Constraints
• 'hello.aleo/main' - 33 constraints (called 1 time)
➡️ Output
• 3u32
Leo ✅ Finished 'hello.aleo/main' (in "/hello/build")
leo execute
Use this command to execute your program and generate a transaction object.
To execute a Leo transition function with inputs from the command line.
{$INPUTS}
should be a list of inputs to the program separated by spaces.
leo execute {$TRANSITION} {$INPUTS}
This command synthesizes the program circuit and generates proving and verifying keys.
Leo ✅ Compiled 'main.leo' into Aleo instructions
⛓ Constraints
• 'hello.aleo/main' - 33 constraints (called 1 time)
➡️ Output
• 3u32
{"type":"execute","id":"at1 ... (transaction object truncated for brevity)
Leo ✅ Executed 'hello.aleo/main' (in "/hello/build")
leo add
Use this command to add a dependency to your program. This is a precursor to being able to import a program inside the leo source code file.
To add an already deployed program as a project dependency.
{$PROGRAM}
should be the name of the program to add as a dependency.
leo add {$PROGRAM} // {$NETWORK} defaults to `testnet`.
leo add -n {$NETWORK} {$PROGRAM} // To pull from a custom network.
To add a local Leo program as a project dependency.
{$PATH}
should be the relative path to the dependency project directory.
leo add -l {$PATH} {$PROGRAM}
leo deploy
Use this command to deploy a program to the Aleo network. This requires having a funded account.
To deploy the project in the current working directory.
leo deploy // Defaults to using key information in `.env`, and deploys to `testnet3` via endoint `http://api.explorer.provable.com/v1`.
leo deploy --endpoint "{$ENDPOINT}" --private-key "{$PRIVATE_KEY}" // To deploy using custom private key, to a custom endpoint (e.g. local devnet `http://0.0.0.0:3030`).
leo clean
To clean the build directory, run:
leo clean
Leo cleaned the build directory (in "/build/")
leo update
To download and install the latest Leo version run:
leo update
Checking target-arch... x86_64-apple-darwin
Checking current version... v1.8.3
Checking latest released version... v1.8.3
Updating Leo is on the latest version 1.9.0
leo account
To create a new Aleo account, run:
leo account new
# Output:
Private Key APrivateKey1zkp...
View Key AViewKey1...
Address aleo1...
To import an existing Aleo account, run:
leo account import {$PRIVATE_KEY}
To create a new account and save it to your .env file, run:
leo account new --write
To list all options
leo account --help
# Output:
Create a new Aleo account
Usage: leo account [OPTIONS] <COMMAND>
Commands:
new Generates a new Aleo account
import Derive an Aleo account from a private key
help Print this message or the help of the given subcommand(s)
Options:
-d Print additional information for debugging
-q Suppress CLI output
--path <PATH> Optional path to Leo program root folder
-h, --help Print help