Skip to content

Darkildo/random-draw-ton

Repository files navigation

🇷🇺 Кратко Контракт случайных розыгрышей TON на Tolk. Создаёт розыгрыши, принимает ставки, выбирает победителя и выплачивает приз с учётом комиссии (fee).

🇺🇸 Brief TON random draw contract (Tolk). Creates draws, accepts entries, picks a winner, pays prize minus fee.

Текущая логика

  • CreateDraw(drawId, minEntryAmount, entryLimit, value) — создаёт розыгрыш с начальными средствами value, пустой картой участников и participantCounter = 0.
  • LuckRoll(drawId) — фиксирует ставку и увеличивает poolSum. Если value < minEntryAmount, выполняется рефанд (возврат остатка входящего сообщения). При достижении poolSum >= entryLimit все адреса участников собираются в цепочку ячеек и хешируются вместе с random.getSeed() и blockchain.now(); индекс победителя = entropy % participantCounter, адрес берётся из индексированного словаря. Выплата (poolSum * (100 - fee)) / 100 отправляется send mode 0 (комиссии сети удерживаются из самой выплаты, а не из баланса контракта), затем розыгрыш удаляется.
  • TopUpTons или пустое тело — пополняют баланс, на розыгрыши не влияют.
  • get_draw(drawId) — возвращает структуру Draw с participantCounter и картой ставок.

Безопасность/ограничения

  • Комиссии сети при выплате списываются из отправляемой суммы (контракт не доплачивает сверху, send mode 0).
  • Рефанд при недоплате гарантирован (value < minEntryAmount).
  • Источник энтропии: хеш адресов участников + random.getSeed() + текущее время. При необходимости усиливайте его с учётом практических требований.

Тесты

  • Покрыты сценарии: создание/двойное создание, рефанд при недоплате, минимальный вход, суммирование ставок и уникальных участников, одиночный и многопользовательский розыгрыш, payout и удаление draw, пустое тело, неправильный opcode, нагрузки на 10/50/100 участников с логом дельты баланса.
  • Запуск: npm test

Сборка и деплой

  • Сборка контрактов: npx blueprint build
  • Тесты: npx blueprint test
  • Запуск скриптов: npx blueprint run

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors