Посмотреть приложение онлайн: https://quiz.aleo.build/
- как развернуть это приложение на своём домене за несколько минут
- редактируем вопросы в приложении
- деплой разных вариантов программы для минта и хранения ревардов
- подключаем Leo Wallet
- минтим награду используя Leo Wallet
- как развернуть приложение локально
Если у вас уже есть домен - отлично! Если нет, то мы можем воспользоваться бесплатным и крайне удобным сервисом https://vercel.com/
Итак, по порядку:
- регестрируемся на сайте https://vercel.com/
- делаем форк этой страницы https://github.com/liolikus/QuizGame
- подключаем GitHub к нашему аккаунту Vercel https://vercel.com/account/login-connections
- создаём в Vercel новый проект
- выбираем наш форкнутый репозиторий
- пишем название, нажимаем Deploy
- ждём пока Vercel автоматически задеплоит наше приложение
Поздравляю! Каких-то 10-20-30 минут у вас есть готовое для использования приложение!
Если вы хотите изменить вопросы в вашем приложении, то просто переходите сюда не забывая изменить имя пользователя GitHub на своё, где вы можете отредактировать все вопросы, на те, которые вам нужны, например:
{
id: Math.random(),
question: "2u32 + 2u32 =", // Вопрос
correctAnswer: "4u32", // Правильный ответ
wrongAnswers: [
"2u64", // Неправильный ответ
"4u64", // Неправильный ответ
"2u32" // Неправильный ответ
]
},
Если вы хотите изменить вопросы в вашем приложении, то просто переходите сюда не забывая изменить имя пользователя GitHub на своё, где вы можете отредактировать все вопросы, на те, которые вам нужны, например:
{
id: Math.random(),
question: "2u32 + 2u32 =", // Вопрос
correctAnswer: "4u32", // Правильный ответ
wrongAnswers: [
"2u64", // Неправильный ответ
"4u64", // Неправильный ответ
"2u32" // Неправильный ответ
]
},
Для данного приложения задеплоен простой контракт, без возможности передачи награды. Контракт хранит ваш результат (u64) и ваш адрес. Пример такого контракта можно найти тут
Если, помимо адреса и результата, вы хотите сохранять, например, ещё дискорд участника "the_liolik#3786", то для этого вы можете использовать такой контракт
Как деплоить кастомные контракты, а не просто "Hello World" программы можно найти у меня в medium
Полное руководство по подключению Leo Wallet к вашему приложению вы можете изучить тут
Огромное за это спасибо потрясающим ребятам из demox-labs!
Устанавливаем зависимости командой
npm install --save \
@demox-labs/aleo-wallet-adapter-base \
@demox-labs/aleo-wallet-adapter-react \
@demox-labs/aleo-wallet-adapter-reactui \
@demox-labs/aleo-wallet-adapter-leo \
react
Пример реализации для данного приложения находится здесь
Для удобства редактирования WalletMultiButton был создан отдельный компонент и .css файл для удобства редактирования.
Компонент, в свою очередь содержится в App.tsx
<WalletProvider
wallets={wallets}
decryptPermission={DecryptPermission.UponRequest}
autoConnect
>
<WalletModalProvider>
<UniversalProvider>
<Routes>
<Route
path="/topic"
element={<ChooseTopic />}
>
</Route>
<Route
path="/"
element={
<QuizProvider>
<Navbar/>
<QuizCore/>
</QuizProvider>
}
>
</Route>
</Routes>
</UniversalProvider>
</WalletModalProvider>
</WalletProvider>
После подключения Leo Wallet наше приложение способно безопасно и удобно взаимодействовать с блокчейном Aleo. Полный код страницы можно посмотреть тут
Непосредственно вызов функции mint
для программы quiz_token.aleo
выглядит так:
const onClick = async () => {
if (!publicKey) throw new WalletNotConnectedError();
const provingKeyUrl = 'https://provers.s3.us-west-2.amazonaws.com/mint.prover';
const score = quizContext?.state.score
const inputs = [publicKey, `${score}u64`];
const aleoTransaction = Transaction.createTransaction(
publicKey,
WalletAdapterNetwork.Testnet,
'quiz_token.aleo',
'mint',
inputs,
provingKeyUrl
);
Не забываем, что для каждой функции нам необходимо хранить наш ProverKey, в данном случае это https://provers.s3.us-west-2.amazonaws.com/mint.prover соответсвенно, обращаем максимальное внимание на права доступа для этого файла.
git clone https://github.com/liolikus/QuizGame && cd QuizGame
yarn
yarn start