Aleo. Изучаем как работает Auction Workshop via GitPod.
Исходник: https://github.com/AleoHQ/workshop/tree/master/auction
Итак, поехали!
Для удобства работы, будем использовать GitPod (бесплатный облачный сервис), что позволит нам не заморачиваться с серверами, установкой VSC, итд.
Регистрируемся на https://gitpod.io/
Ссылка на репо: https://github.com/AleoHQ/workshop
Привязываем гитхаб, и создаём новый воркспейс.
После загрузки окружения открывается окно веб-терминала
Запускаем установку Leo & Aleo командой в терминале
./install.shЖдём пока всё установится.
Отлично!
Как видим нам доступно несколько pre-build решений
В данном случае, нам интересен auction
Запускаем
cd auction && ./run.shТерминал, в свою очередь, выполнил команду и вывалил нам кучу инфы, давайте разбираться
Запустив скрипт, программа сгенерировала нам 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,
};
}Окно терминала:
Теперь итоговая визуализация выглядит следующим образом
Второй игрок делает ставку в 90 микрокредитов
визуализация итогов двух ставок
Теперь аукционер определяет победителя (.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;
}
}Терминал
визуализация
Финализируем аукцион (.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,
};
}Терминал
И итоговая визуализация.
Как видим, используя доступный инструментарий Алео, мы уже сейчас можем организовывать полностью приватный аукционы.
Алео туземун, сун!









