ну я посмотрел первую часть видео. у меня была такая же идея, только немного другая. я брал уже каким-то магическим образом с спутанную калоду, каждый человек принимал какую-то колоду, так же на каждую карту придумывал свою пару ключей и сохранял их у себя. все участники рассказывали свои публичные ключи кому-то доверенному, который и должен был заниматься спутыванием карт, он эти ключи складывал, получал какой-то композитный на каждую колоду и, зашифровав всё отдавал полностью шифрованную колоду в игру и дальше не участвовал кроме одной ситуации*. дальше выбиралось направление игры, кто за кем сидит и когда какую карту берёт. теперь наприммер 1 игрок должен получить 6 карт, каждый другой игрок по приватному каналу рассказывал ему свой приватный ключ от этих первых 6 карт и получалось, что он знает какие они у него. второй игрок тоже получал приватные ключи от всех для следующих 6 карт и так далее.
потом во время игры когда игрок клал карту на стол он в публичный канал говорил её номер в колоде. каждый проверял по правилам, могла ли у него оказаться именно эта карта и если это было правдой, то он в публичный канал выкидывал свой приватный ключ для этой карты и все могли увидеть что это за карта.
* собственно как можно заметить вся игра завязана на присутствии всех участников игры в сети. если же какой-то участник улетал из игры, то остальные участники должны были бы обратится к доверенному кому-то. они отдавали ему всю игру, все свои приватные ключи и он, зная все данные, пытался взломать приватные ключи ушедшего участника. но проблема теперь заключалась в том, что эту функцию нужно было как-то подтверждать, а это уже далеко не стейтлесс и всё такое