Sitemap

Aleo. Изучаем как работает Auction Workshop via GitPod.

3 min readApr 30, 2024

--

Исходник: https://github.com/AleoHQ/workshop/tree/master/auction

Итак, поехали!
Для удобства работы, будем использовать GitPod (бесплатный облачный сервис), что позволит нам не заморачиваться с серверами, установкой VSC, итд.

Регистрируемся на https://gitpod.io/

Ссылка на репо: https://github.com/AleoHQ/workshop

Привязываем гитхаб, и создаём новый воркспейс.

Press enter or click to view image in full size

После загрузки окружения открывается окно веб-терминала

Press enter or click to view image in full size

Запускаем установку Leo & Aleo командой в терминале

./install.sh
Press enter or click to view image in full size

Ждём пока всё установится.

Отлично!
Как видим нам доступно несколько pre-build решений

В данном случае, нам интересен auction

Запускаем

cd auction && ./run.sh

Терминал, в свою очередь, выполнил команду и вывалил нам кучу инфы, давайте разбираться

Press enter or click to view image in full size

Запустив скрипт, программа сгенерировала нам 3 адреса с ключами: где 2 участника аукциона и аукционер

Предположим, что мы играем за 1го игрока, и делаем ставку

Get Alex_B’s stories in your inbox

Join Medium for free to get updates from this writer.

(.leo код)

    transition place_bid(bidder: address, amount: u64) -> Bid {
// Ensure the caller is the auction bidder.
assert_eq(self.caller, bidder);
// Return a new 'Bid' record for the auction bidder.
return Bid {
owner: aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh,
bidder: bidder,
amount: amount,
is_winner: false,
};
}

Окно терминала:

Press enter or click to view image in full size

Теперь итоговая визуализация выглядит следующим образом

Второй игрок делает ставку в 90 микрокредитов

Press enter or click to view image in full size

визуализация итогов двух ставок

Теперь аукционер определяет победителя (.leo код)

    transition resolve(first: Bid, second: Bid) -> Bid {
// Ensure the caller is the auctioneer.
assert_eq(self.caller, aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh);
// Resolve the winner of the auction.
if (first.amount >= second.amount) {
return first;
} else {
return second;
}
}

Терминал

Press enter or click to view image in full size

визуализация

Финализируем аукцион (.leo код)

    transition finish(bid: Bid) -> Bid {
// Ensure the caller is the auctioneer.
assert_eq(self.caller, aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh);
// Return 'is_winner' as 'true' in the winning 'Bid'.
return Bid {
owner: bid.bidder,
bidder: bid.bidder,
amount: bid.amount,
is_winner: true,
};
}

Терминал

Press enter or click to view image in full size

И итоговая визуализация.

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

Алео туземун, сун!

--

--