Git Product home page Git Product logo

fortuna-contracts's Introduction

Fortuna Lottery

Этот репозиторий содержит исходный код смарт-контрактов лотереи Fortuna, тесты и утилиты к ним (с blueprint) и объяснение основных принципов его работы.

Ползеные ссылки

Как оно работает

Оператор запускает тираж лотереи, где указывает призовые NFT, цену билета, время розыгрыша. Эти данные не могут быть изменены вплоть до момента розыгрыша никем. Покупка билета происходит по обычному переводу на адрес контракта суммы кратной цене билета. Например: цена билета 2 TON; чтобы купить один билет, нужно отправить 2 TON, два - 4 TON, три - 6 TON и так далее. Билет это контракт с интерфейсом (get-методами) NFT. Трансфер билета может осуществлять только контракт лотереи (NFT коллекции). При покупке билета, лотерея или минтит новый NFT-билет, или делает участника владельцем одного из существующих, следующего по счету, билета.

Призовой фонд не хранится в контракте суммой. Вместо этого, он может быть посчитан в любой момент времени из баланса контракта, количества призов и количества купленных в туре билетов. Подробнее.

Когда истекает установленный оператором таймер, при любом вызове (входящей транзакции с op = 0 или без body) контракта будет произведен розыгрыш. Тогда лотерея выбирает случайные числа - индексы выигравших билетов по количеству призов и отправляет на них запросы адресов их владельцев. Вызвавшему контракт адресу возвращаются монеты за вычитом комиссий с комментарием Successfully drawn. Лотерея отправляет 50% призового фонда на 2 сервисных кошелька (один для рассылки дохода холдерам NFT Web3TON, другой - для закупки NFT на следующий розыгрыш) и ждет ответа от контрактов выигрышных билетов.

Если билетов для розыгрыша не хватает, время розыгрыша увеличивается на 2ч и покупка билетов продолжается.

Когда ответ на запрос владельца приходит, лотерея отправляет приз: монеты из призового пула или трансфер призовой NFT к победителю - владельцу выигрышного билета.

После розыгрыша NFT-билеты по get-методу возвращают своим владельцем адрес лотереи. То есть в идеальном мире как NFT они должны были бы исчезнуть из кошельков пользователей в момент розыгрыша, но так как индексация в кошельках происходит постепенно, билеты исчезают не так быстро, как хотелось бы. Сразу пропадают только выигрышные билеты, потому что они обработали транзакцию и информация о них была обновлена провайдерами api.

License

MIT

fortuna-contracts's People

Contributors

1ixi1 avatar

Stargazers

AG avatar 9kopb avatar

Forkers

pr0n1x

fortuna-contracts's Issues

Честность лотереи

Добрый день, хотел уточнить по поводу честности лотереи, на официальном сайте TON есть статья https://docs.ton.org/ko/develop/smart-contracts/guidelines/random-number-generation
В ней говорится о том, что на random недьзя полагаться в смартконтрактах, что валидатор может сгенерировать удобное для себя случайно число.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.