Waves corporate blog
Decentralized networks
Cryptography
Cryptocurrencies
Comments 15
+1

Я правильно понимаю, что речь про азартные игры на деньги (gambling)?

0
Только в тех странах, где криптовалюты приравниваются к финансовому инструменту. Россия и большинство других стран на текущий момент к таким не относятся.
+1
Берем одно и то же значение (game id) и применяем к нему метод RSA-подписи. Будем всегда получать один и тот же результат.

У вас какая-то странная RSA-подпись. В нормальной каждый раз должен получаться разный результат для одного и того же подписываемого блока данных.

0

Вы ошибаетесь.


Сама подпись RSA всегда была и остаётся детерминированной, разница только в схеме padding-а, которая может быть рандомизирована или нет.


Если само сообщение содержит рандомизированную часть, то padding может быть без ущерба для схемы детерминирован.

0

Так тут и нет никакой рандомизированной части, как я понимаю. Любой злоумышленник, имеющий доступ к "подписывалке", может заранее узнать подпись, а следовательно и то "случайное" число, которое получится в GenerateRandInt. Если бы в реализации подписи фигурировал случайный паддинг, это было бы невозможно.

0
В нашем случае сервер не может солгать из-за проверки смарт-контрактом. Да, приватный ключ лучше не шарить, но интереса в этом нет, ибо играть против себя тут бессмысленно. Соответственно, сервер может или подписать честно, или не подписать вовсе, но тогда игрок выигрывает по таймауту гарантированно.
0
Любой злоумышленник, имеющий доступ к "подписывалке", может заранее узнать подпись

Гениально.

+3
Мы придумали обходной путь: использовать схему «коммит-раскрытие».
Кто мы? И честно — это вы придумали?
Оказалось, это неудобно, долго и дорого. На тот момент другого безопасного решения не было.
А разве привидённая схема удобней, короче или дешевле? Количество необходимых транзакций так же 2 — по одной от игрока и казино. Стоимость думаю приблизительно одинакова. Удобство — такое же. Сделал ставку, подождал пока она разрешится.

И на счёт RSA. По-моему можно генерировать разные валидные подписи к тем же данным. Что ведёт к тому, что вы можете легко обыгрывать игрока.
0

Да, действительно, многое зависит от предварительного кодирования сообщения (в основном есть ли там фиксированный паддинг или нет), но попросили именно детерминированную схему проверки, поэтому получили на уровне блокчейна набор s"${digestPrefix}withRSA", который гарантирует проверку на EMSA-PKCS1-v1_5.

0

Тоже не понял чем приведенная схема качественно отличается от стандартной commit-reveal, вы должны были уменьшить число транзакций хотя бы, а получили новые проблемы: если ваш привтаник один раз утечет выиграть у вас можно будет в любой момент в будущем. С тем же успехом можно было commits собрать в дерево меркла и reveal делать с меркл-пруфом. В известном всем проекте DICE2WIN помимо commit-reveal еще есть защита от реорга блокчейна.

0

В предложенной схеме я вижу достаточность 2 транзакций на игру (одна от пользователя и одна от условного казино).


Можете рассказать как в 2 транзакции сделать commit-reveal про который вы говорите?

0

До этого:


  1. Commit сервером
  2. Ставка юзером
  3. Раскрытие сервером

У вас:


  1. Ставка юзером
  2. Раскрытие сервером

Так?

0

Не так.


  1. Ставка юзером с комитом.
  2. Раскрытие сервером.
Only those users with full accounts are able to leave comments. , please.