Programs
A program is a fundamental data structure for representing application logic and application state.
Aleo introduces a new programming language called Aleo instructions that enables developers to write private web applications. Aleo instructions is a statically-typed programming language for writing privacy-preserving, secure programs on Aleo. By leveraging zero-knowledge proofs, Aleo instructions offers computational integrity for real-world applications.
Program Logic​
Aleo instructions offers developers with an easy-to-use environment for writing programs. By designing an assembly language with syntax familiar to developers and composable in features, Aleo instructions is well-suited to integrate with existing developer frameworks to supercharge web apps with privacy and integrity.
program token.aleo;
record token:
// The token owner.
owner as address.private;
// The token balance.
amount as u64.private;
// The `mint` function initializes a new record with the
// specified number of tokens in `r1` for the receiver in `r0`.
function mint:
input r0 as address.private;
input r1 as u64.private;
cast r0 r1 into r2 as token.record;
output r2 as token.record;
// The `transfer` function sends the specified number of tokens
// to the receiver from the provided token record.
function transfer:
// Input the sender's record.
input r0 as token.record;
// Input the token receiver.
input r1 as address.private;
// Input the token amount.
input r2 as u64.private;
// Checks the given token record has sufficient balance.
// This `sub` operation is safe, and the proof will fail
// if an underflow occurs. The output register `r3` holds
// the change amount to be returned to the sender.
sub r0.amount r2 into r3;
// Produces a token record for the specified receiver.
cast r1 r2 into r4 as token.record;
// Produces a token record with the change amount for the sender.
cast r0.owner r3 into r5 as token.record;
// Output the receiver's record.
output r4 as token.record;
// Output the sender's change record.
output r5 as token.record;
Program Data​
Program ID​
Each program has a unique program ID that is stored in the program manifest program.json
. This program ID is used to indicate the program that was run in the
consumption or production of records.
Program Input​
To run a program, user-defined inputs are provided in the form of a program input. This input provided by the user is fully private and not revealed to the public network, unless the user intends for it to be public.
Program State​
Each program is run with respect to user-provided program state on Aleo. In order to produce a valid state transition on Aleo, the user satisfies a series of programs encoded in records, which compose a transaction.
Program Output​
Once a program is evaluated, its program output is produced, along with a zero-knowledge proof attesting to the validity of the output.