DEV Community

EgorMajj
EgorMajj

Posted on

Концепции Aleo | Программы

Программа - это фундаментальная структура данных для представления логики приложения и его состояния.

Aleo представляет новый язык программирования под названием Aleo instructions, который позволяет разработчикам писать конфиденциальные веб-приложения. Aleo instructions - это статически типизированный язык программирования для написания безопасных программ, сохраняющих конфиденциальность, на Aleo. Используя доказательства нулевого разглашения, Aleo instructions обеспечивают вычислительную безопасность для реальных приложений.

Логика программ

Aleo instructions предлагает разработчикам простую в использовании среду для написания программ. Благодаря разработке языка ассемблера с привычным для разработчиков синтаксисом и композитным функциям, Aleo instructions хорошо подходят для интеграции с существующими фреймворками для разработчиков, чтобы повысить уровень конфиденциальности и целостности веб-приложений.

program token.aleo;

record token:
    // The token owner.
    owner as address.private;
    // The Aleo balance (in gates).
    gates as u64.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 0u64 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 0u64 r2 into r4 as token.record;

    // Produces a token record with the change amount for the sender.
    cast r0.owner r0.gates 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;
Enter fullscreen mode Exit fullscreen mode

Данные программы

Идентификатор программы
Каждая программа имеет уникальный идентификатор программы, который хранится в манифесте программы program.json. Этот идентификатор программы используется для указания программы, которая была запущена при потреблении или производстве записей.

Ввод данных программы
Для запуска программы пользовательские вводные данные предоставляются в форме программного ввода. Этот ввод, предоставляемый пользователем, является полностью приватным и не раскрывается в публичной сети, если только пользователь не намерен сделать его публичным.

Состояние программы
Каждая программа выполняется с учетом состояния программы, предоставленного пользователем на Aleo. Для того чтобы произвести действительный переход состояния на Aleo, пользователь выполняет ряд программ, закодированных в записях, которые составляют транзакцию.

Вывод программы
После того, как программа оценена, производится вывод программы, а также доказательство с нулевым разглашением, подтверждающее достоверность вывода.

Top comments (0)