@joeanno

Как возможно разрешить столь непростую механику транзакции?

Вопрос о механики транзакции: как делается взаимодействие с API платежки?
  • Вопрос задан
  • 311 просмотров
Пригласить эксперта
Ответы на вопрос 3
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
все казино которые работают конвертируют валюту в свою игровую валюту.
Почему бы вам так не сделать?
Плюс еще наваритесь на конверсии при выводе
Ответ написан
@AstraVlad
Финансист, консультант, программист-любитель
Или я туплю или одно из двух...

Как бы я видел этот процесс:
1. Игрок нажимает кнопку "Хочу играть" -- в этот момент с него списывается в пользу казино ставка + комиссия и присваивается статус "Готов к игре".
2. Если от второго игрока деньги не пришли за некоторое разумное время, игра отменяется и заплатившему игроку предлагается найти другого партнёра или вернуть деньги (на выбор).
3. Когда у обоих игроков появился статус "Готов к игре" (деньги уже у казино), происходит собственно игра.
4. Проигравшему выдаётся сообщение о проигрыше, выигравшему -- перечисляется выигрыш за минусом комиссии.

Не могу увидеть в чём тут может быть сложность. Хотя конечно внутренняя валюта лучше. Какие-нибудь "К-баксы" с курсом 10 за 1 доллар. Вывод в крипте по курсу на момент вывода.
Ответ написан
kellas
@kellas
веб-разработчик
Сначала игроки депозитят деньги на контракт, по очереди, каждый закидывает по 21$ как в вашем примере.

Для честного рандома нужно сделать чтобы каждый игрок генерировал случайную строку, и потом эти 2 строки отправлялись бы в хэш функцию(код которой есть у всех сторон) из которой уже выдаются числа, так что каждый участвует в создании рандома.

Транзакцию на получение приза отправляет победитель, так как он в этом заинтересован. Но чтобы забрать приз с контракта - нужно чтобы третья сторона(ваш сервер/казино) дали свой апрув в виде подписи.
Нужно либо на контракте реализовывать логику получения победителя из 2х рандомных строк(что может быть дорого по газу, хотя для кубиков норм) либо вам нужен некий оператор/админ контракта, приватный ключ которого лежит на вашем сервере и его подпись необходима чтобы забрать деньги с контракта.

Сервер получает все те же 2 рандомные строки от игроков, загоняет их в хеш функцию для получения рандома, и отправляет победителю подписанную дату, которую победитель передает в вызове метода контракта.
Контракт проверяет подписи и распределяет деньги игроков.

В общем мало чем отличается от обычного multisig. В Solana попроще с offchain транзакицями и несколькими сигнерами для одной транзы, если не критичен блокчейн binance/ethterum присмотритесь к ней. +маленькие коммисии за отправку транз.

Пример получения любого количества чисел из одной строки на js и solidity - https://replit.com/@AlexStep2/RNG - в принципе можно прям на контракте проверять кто выиграл
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы