Разбор примера Aleo: аукцион

Kaylej
2 min readDec 31, 2022

--

В этой статье разберём пример работы аукциона на языке Leo.

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

  • Участники торгов не узнают никакой информации о размерах других предложений.

То есть данный аукцион не предполагает раскрытия информации о сделанных ставках, поэтому все участники ставят “вслепую”. Такое возможно только благодаря технологии Zero Knowledge proofs, однако при желании мы всё таки можем убрать данную возможность, чтобы все участники видели ставки друг друга. Однако в публичных блокчейнах не существовало бы возможности скрыть ставки.

Базовое определение класса Bid, предназначение переменных описано в комментариях к коду.

Теперь опишем функцию “сделать ставку”. Она вносит изменения в record Bid, при этом ставка ещё не является выигрышной:

Далее давайте решать, кто победитель аукциона:

Здесь всё просто, мы выбираем наибольшую ставку и возвращаем выигрышный record Bid.

Далее завершаем аукцион:

Мы меняем значение is_winner, тем самым позже можем найти владельца выигрышной ставки и выдать ему приз.

Не забываем про inputs:

В [finish] мы вводим значение is_winner = false потому, что лишь после исполнения программы оно изменится на true.

--

--