Hi-End в смарт-контрактах

image

Команда разработчиков TAIGA.Labs стремительными темпами развивается и ставит перед собой новые задачи повышенной сложности в мире технологий блокчейна TON.

Одной из задач стал расчёт вероятностей событий при подбрасывании монеты. Вроде бы задача элементарная: «орёл» и «решка» с вероятностью выпадения 50%, но ведь существует вероятность падения монеты на ребро, а значит и вероятность событий «орёл» и «решка» должны быть менее 50%.

В реальном мире на бросок монеты влияет множество параметров:

  • размеры монеты;

  • симметричность и однородность монеты, и как следствие расположение центра тяжести;

  • начальная высота подбрасывания;

  • направление и сила броска;

  • скорость вращения и направление вращения;

  • гладкость и упругость поверхности, на которую падает монета.

Первым делом мы уточнили формулировку стоящей перед нами задачи:

Монета, у которой диаметр в X раз больше толщины, подбрасывается вертикально вверх с вращением в одной плоскости (чередование горизонтального положения сторон «орёл»/«решка»), а затем падает на ровную поверхность (без подскоков, скорость падения и скорость вращения обнуляются при касании поверхности, после чего спокойно опускается на одну из двух сторон или на ребро в зависимости от своего положения при касании с поверхностью). Необходимо определить вероятность падения монеты на ребро.

В результате расчётов получили формулу:
P(“ребро”) = 10 * arctan(1/X) / 9

В соответствии с данной формулой у 10-рублевой монеты (диаметр которой больше толщины в 10 раз) в идеальных условиях нашей задачи шанс падения на ребро составит примерно 6,345%.

Также были найдены наиболее удачные соотношения диаметра монетки к её толщине для достижения целевых показателей выигрыша дилера в диапазоне 51% – 60%:

X Шанс ребра, % Шанс орла/решки, % Шанс выигрыша дилера, %
31,8 2 49 51
15,89 4 48 52
10,57 6 47 53
7,91 8 46 54
6,31 10 45 55
5,24 12 44 56
4,47 14 43 57
3,89 16 42 58
3,44 18 41 59
3,08 20 40 60

Наличие теоретических расчётов позволило команде TAIGA.Labs перейти к написанию для казино смарт-контракта азартной игры «Монетка» с коэффициентом X=6.31, но с небольшим изменением относительно теории по просьбе заказчика: в случае падения монетки на ребро ставка возвращается игроку.

В сетях блокчейна за использование их вычислительных ресурсов, которые необходимы для выполнения операции или смарт-контракта, взимается комиссия (gas). Для уменьшения этой комиссии сложную формулу с арктангеном заменили на афинную прямолинейную формулу:
P(“ребро”) = 63 / (100 * X)

Перед передачей заказчику мы протестировали смарт-контракт на 1000000 событий, получив расчётные показатели вероятности победы/поражения игрока в 45% при вероятности ничьей 10%:

В будущее вместе с командой TAIGA.Labs
image

3 Likes