Что, если каждый правильный ответ в викторине приносил бы тебе крипту?

Я решил проверить эту идею - и собрал Solana Quiz, децентрализованное приложение, где пользователи проходят ежедневные квизы с вопросами от OpenAI и получают Solana-токены за правильные ответы.

Да, это реально работает. И да - токен мы тоже создаём сами 😎


🚀 Идея


Я давно хотел объединить AI, Rust и блокчейн в одном проекте, где каждая часть реально работает, а не просто «для галочки».

Результат:

  • OpenAI каждый день создаёт новые вопросы,

  • Node.js проверяет ответы и управляет логикой,

  • Rust начисляет токены через Solana,

  • Kafka связывает все сервисы в единую событийную систему.

Получился умный, честный и прозрачный квиз, где награды приходят не на email, а на твой кошелёк Phantom.


💡 Как это работает


1️⃣ Авторизация через Solana-кошелёк

Пользователь подключает Phantom Wallet, подписывает сообщение - Node.js проверяет подпись и этим удостоверяет владение адресом. (На данный момент поддерживается только Phantom - добавление других кошельков в коде предусмотрено.)

Никаких паролей, токенов, логинов - чистая блокчейн-аутентификация.

Главная страница (после авторизации)
Главная страница (после авторизации)

2️⃣ Вопросы - от OpenAI

Каждое утро Node.js делает запрос к OpenAI API (используется модель gpt-4.1-nano) и получает новую подборку вопросов.

OPEN_AI_API_KEY=your_openai_api_key_here
OPEN_AI_MODEL=gpt-4.1-nano
OPEN_AI_LANGUAGE=English

💡 Для этого тебе нужен аккаунт OpenAI и рабочий API-ключ.
Без него вопросов просто не будет - квиз останется немым 🤖

OpenAI отвечает за креатив: вопросы всегда немного разные - от истории блокчейна до логических задач.


3️⃣ Проверка и награждение

После того как ты сдаёшь квиз, Node.js считает результат и публикует событие в Kafka:

{
  "user_id": 1,
  "user_wallet": "8WwP...xyz",
  "quiz_id": "20251013",
  "earned_tokens": 10
}

Rust-сервис, слушая эту тему, подключается к Solana RPC и… 💸
переводит токены на твой кошелёк.

Кошелек с заработанными токенами
Кошелек с заработанными токенами

🏗 Архитектура

Сервис

Технологии

Назначение

Frontend

Next.js, React, TailwindCSS

Интерфейс и интеграция кошелька

Backend

Node.js, Express, Prisma, KafkaJS, OpenAI API

Логика квиза, генерация вопросов, API

Rust Worker

Rust, Solana SDK, rdkafka

Минтинг и переводы токенов

Database

PostgreSQL

Хранение данных пользователей и результатов

Infra

Docker Compose

Оркестрация всех сервисов

🪙 Создание собственного токена

Вот тут начинается самое интересное - мы создаём свой собственный SPL-токен в сети Solana.

Это не просто демо-коин - он лежит в основе всей экономики квиза и позволяет делать систему наград прозрачной и децентрализованной.

⚠️ Но сначала - обязательно подготовь .env

Перед запуском Rust-команд нужно убедиться, что в .env всё настроено:

SOLANA_NETWORK=devnet
SOLANA_RPC_ENDPOINT=https://api.devnet.solana.com
SOLANA_AUTHORITY_KEYPAIR_PATH=./secret/authority.json
SOLANA_MINT_KEYPAIR_PATH=./secret/mint.json
SOLANA_TOKEN_NAME="Solana Quiz Token"
SOLANA_TOKEN_SYMBOL="SQT"
SOLANA_TOKEN_METADATA_URI="https://raw.githubusercontent.com/di-zed/internal-storage/refs/heads/main/solana-quiz-token/metadata.json"

Без этих параметров токен просто не создастся.
А без токена - какой же это Solana Quiz? 😉

⚡ Важно: имя токена, символ, описание и метаданные можно изменить на свой лад - это твой токен, твоя вселенная.


🚀 Дальше по шагам:

# Входим в контейнер Rust
docker-compose exec rust /bin/bash

# Компилируем бинарь
cargo build --release

# Запрашиваем SOL для аккаунта-авторитета
./target/release/solana request-airdrop --sol-amount 5

# Создаём новый токен
./target/release/solana create-mint

# Создаём токен-аккаунт для хранения
./target/release/solana create-token-account

# Минтим 1,000,000 токенов
./target/release/solana mint-tokens --amount 1000000

Эти токены - “банк наград”.
Когда кто-то правильно отвечает на вопросы, Rust распределяет токены именно отсюда.

Чтобы всё красиво отображалось в кошельке и Solana Explorer, создаём метаданные: пример metadata.json


🧠 Почему Rust

Rust идеально подходит для работы с Solana SDK - безопасно, асинхронно и без сюрпризов с памятью.
Даже если раньше ты его боялся, после этого проекта он станет твоим крипто-другом 🦀


💎 Где это можно использовать

  • 🎓 EdTech: токенизируй обучение - правильные ответы = реальные награды.

  • 🏢 Корпоративные квизы: мотивация сотрудников через токены.

  • 🌐 Криптосообщества: ежедневные активности и награды в сети Solana.

  • 💰 Лояльность и геймификация: on-chain поощрения за участие и активность.


🧭 Roadmap

  • 🏆 NFT rewards - выдача NFT за серии правильных ответов

  • 🔗 Solana Program - хранение истории квизов и автоматическая раздача NFT

  • 🚀 Миграция на mainnet-beta

В будущем Solana-программа будет хранить историю квизов прямо в блокчейне и автоматически выдавать NFT тем, кто держит “стрик” правильных ответов - например, 7 дней подряд.

NFT можно будет создать вручную через Metaplex - своя коллекция, свои дизайны, свои награды 🎨


🧩 Немного о технической стороне

В этой статье я специально не расписывал установку и команды по шагам - чтобы не превращать её в технический роман на 30 экранов. 😄

Если хочется не просто почитать, а запустить проект, создать свой токен, подключить OpenAI и увидеть, как Solana действительно шлёт токены за правильные ответы - всё это подробно разобрано в README на GitHub.

Там есть пошаговые инструкции, примеры .env, команды для Docker, Rust и Node.js - одним словом, полный арсенал для тех, кто хочет копнуть глубже.

🧱 Итог

Solana Quiz - это не демо и не эксперимент.
Это живое приложение, где AI, Rust и блокчейн работают вместе.

  • OpenAI генерирует контент

  • Node.js управляет логикой

  • Kafka связывает всё в единое целое

  • Rust обрабатывает реальные транзакции

Результат - честная система вознаграждений, где знания приносят крипту, а не только “очки”.


⚙️ Проект полностью запускается через Docker - достаточно клонировать репозиторий и следовать README на GitHub.Всё описано пошагово, включая генерацию ключей, настройку Solana и OpenAI.


📦 GitHub: github.com/di-zed/solana-quiz
📜 Лицензия: MIT
✍️ Автор: @di-zed