Техдокументация (Белая книга)

Joy Tokens — объединяя гейминг и блокчейн

Краткое описание

Joy Gaming — это новое решение для малых разработчиков, компаний по разработке программного обеспечения, больших казино и игроков. Эта технология позволяет создать игровую экосистему, которая повышает шансы игроков на выигрыш и помогает разработчикам и казино уменьшить сопутствующие риски.

Отсутствие доверия и прозрачности — это одна из проблем, стоящих перед индустрией азартных онлайн-игр. Игроки, как правило, предпочитают играть на сайтах известных казино, обходя вниманием менее популярные сайты, даже если те предлагают больше «интересных игр». Это абсолютно естественно, ведь игроки отдают предпочтение тем казино, которым доверяют. Joy Gaming представляет собой прозрачную систему на основе технологии блокчейн, которая поможет повысить доверие к игровой индустрии. Joy Gaming даст пользователям возможность играть в прозрачной и управляемой программным кодом среде. В свою очередь, это позволит игрокам и разработчикам быть уверенными в честности игр. Игроки могут больше не волноваться: инновационный генератор случайных чисел (ГСЧ, RNG) следит за тем, чтобы игры были честными и безопасными. Разработчики, казино и бизнес получат выгоду от экосистемы, обеспечивающей совместное использование ликвидности и выплату справедливых компенсаций. Мы стремимся создать оптимальное решение, которое будет выгодно для всех участников Joy Gaming, и для этого мы налаживаем взаимодействие между разработчиками с одной стороны и казино с другой.

Введение

Текущая ситуация на рынке игр

Существующая игровая экосистема в значительной степени зависит от репутационного фактора. Репутация, в свою очередь, строится на основе все более и более агрессивной рекламы. Чтобы привлечь и удержать игроков, казино вынуждены тратить значительные суммы на повышение узнаваемости бренда компании. Таким образом казино стремятся завоевать доверие игроков и заработать себе доброе имя. Кроме того, крупные казино контролируют разработку игр. Игрокам не остается ничего, кроме как довериться этим казино: отсутствие прозрачности не дает игрокам как отслеживать свои ставки в целом, так и, соответственно, оценивать уместность каждой отдельной ставки.

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

Решение Joy Gaming

Решение Joy Gaming основывается на технологии блокчейн. С его помощью разработчики могут создавать игры, которые запускаются на собственном бэкэнде через смарт-контракт, а не непосредственно через блокчейн. Поскольку все результаты вносятся в блокчейн, значительно снижается количество случаев мошенничества. Это позволит игрокам проверить, что разработчики запускают игры точно так, как описано в блокчейне. Кроме того, разработчики игр и компании по разработке программного обеспечения могут подключаться и интегрироваться с поставщиками ликвидности (например, казино) для обеспечения непосредственного доступа к своим играм. И казино, и разработчики получают выгоду в виде дополнительного дохода и возможности создавать и использовать новые игры. Отсутствие соответствующей репутации у какого-либо конкретного сайта может быть компенсировано тем, что правила и базовая инфраструктура игр записываются в блокчейн. Кроме того, чтобы игра попала в сеть Joy Gaming, она должна пройти через специальную процедуру проверки.

Технология

Смарт-контракты

Сеть Joy Gaming основана на децентрализованных смарт-контрактах. Они записывают и обеспечивают исполнение всего, что вписано в блокчейн. С помощью блокчейна мы сможем проверить все, что происходит в Joy Gaming. Пользователи, которые играют в игры, смогут в режиме реального времени просматривать результаты и полученные в сети награды. В отличие от традиционных казино, где депозиты вносятся на счет казино, пользователи всегда будут иметь полный контроль над своими кошельками JoyToken (и вывод денег будет проще и быстрее).

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

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

Стек используемых Joy Gaming технологий

Стек используемых нами технологий состоит в первую очередь из трех основных компонентов: блокчейн-слоя, игровых приложений (серверной и клиентской частей) и генератора случайных чисел (RNG). Клиентская и серверная части игр будут использовать базы данных, однако все части, которые могут привести к какому бы то ни было спору между игроком и платформой, будут децентрализованы и проверены по блокчейну посредством смарт-контрактов.

На рисунке выше показана связь между утвержденными игровыми приложениями и генератором случайных чисел Joy Gaming.

Блокчейн-слой

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

Управление токенами

В традиционных казино клиенты отправляют деньги на счет казино, чтобы играть там в игры. Такой подход развязывает руки мошенникам. Joy Gaming решает эту проблему с помощью технологии блокчейн. Все средства игрока будут храниться в его JoyToken-кошельке. Когда игрок сделает ставку, деньги будут отправлены на смарт-контракт, который децентрализованным образом управляет средствами в зависимости от исхода ставки. Использование блокчейна означает, что казино (иными словами, платформа Joy Gaming) не контролирует средства игрока.

Подведем итог:

Управление результатами игры

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

Например, игрок А делает ставку, играя в рулетку.

  1. Ставка будет автоматически передана под управление контракта рулетки
  2. Случайное число, сгенерированное для соответствующего раунда игры в рулетку, будет скопировано и зарегистрировано посредством смарт-контракта. Примечание: все, что имеет важное значение для игрового процесса (случайные числа, история игры), будет записано в смарт-контракте.
  3. Код игры сгенерирует случайное число и отправит результат в смарт-контракт
  4. Победитель автоматически получит свой выигрыш. Если игрок проиграет, его ставка будет разделена между менеджером платформы и разработчиком. Пропорции, согласно которым ставка проигравшего игрока будет разделена, согласовываются на этапе разработки и применяются автоматически в случае проигрыша игрока.
  5. Наконец, игрок может решить перезапустить процесс и продолжить игру или завершить свою игровую сессию

Демо-версия кода для первоначальной регистрации игры в сети

В приведенном ниже коде показана регистрация игры в сети Joy Gaming. Регистрация целиком и полностью осуществляется через сеть Ethereum. Так все участники смогут легко проверить, что контракт действительно был официально одобрен сетью. В этой демо-версии мы видим, что регистрация может быть вызвана через функцию GameRegistry(), посредством которой игра будет зарегистрирована в сети Joy Gaming. Примечание: сумма, которую нужно зачислить разработчику, также может быть указана через setPlatformShare (uint256 newShare).

    contract GameRegistry is Ownable {
        using SafeMath for uint256;
        address public tokenAddress;
        address[] public gameList;
        uint256 public decimals = 5;
        uint256 public platformShare = 5 * 10**(decimals.sub(2));
        address public controller;
        mapping(address => bool) public gameRegistered;
        event ControllerTransfer(address originalController, address currentController);
        event PlatformShareUpdate(uint256 originalShare, uint256 newShare);
        event GameRegistered(address game);
        event GameDelisted(address game);


        function GameRegistry(address _tokenAddress) {
            owner = msg.sender;
            controller = owner;
            tokenAddress = _tokenAddress;
        }

        function setController(address newController) public onlyOwner {
            require(newController != address(0) && newController != controller);
            ControllerTransfer(controller, newController);
            controller = newController;
        }

        function setPlatformShare(uint256 newShare) public onlyOwner {
            require(newShare < 10**decimals);
            PlatformShareUpdate(platformShare, newShare);
            platformShare = newShare;
        }

        function createGame(string _name, uint256 _payoutRate) public {
            address newGame = new Game(_name, msg.sender, this, tokenAddress, payoutRate);
            require(!gameRegistered[newGame]);
            gameList.push(newGame);
            gameRegistered[newGame] = true;
            GameRegistered(newGame);
        }

        function delistGame(address game) public onlyOwner {
            require(gameRegistered[game]);
            gameRegistered[game] = false;
            GameDelisted(game);
        }

        function registerGame(address game) public onlyOwner {
            Game g = Game(game);
            require(!gameRegistered[game]);
            gameRegistered[game] = true;
            gameList.push(game);
            GameRegistered(game);
        }

        function getGameRegistered(address game) public constant returns (bool registered) {
            return gameRegistered[game];
        }
    }
    

Проверяемость генератора случайных чисел

Ключевой частью игровой индустрии является возможность проверки генератора случайных чисел. Как правило, генераторы случайных чисел управляются компанией, размещающей игры на своих серверах. Но в нашем случае все будет организовано децентрализованным и явно справедливым образом. Дело в том, что каждая игра будет основываться на индивидуальном алгоритме, опирающемся на генератор случайных чисел, связанный со смарт-контрактом сети Ethereum. Более подробное описание приведено в разделе "Фаза сворачивания и процесс выплаты".

Игровое приложение (управление клиентской и серверной частями)

Код игрового приложения будет находиться на наших серверах или размещаться через сеть IPFS/Sia/Storj. Затем результат исхода игры будет передан в смарт-контракт. После этого игровые серверы будут передавать данные о состоянии игры в блокчейн, используя JSON RPC посредством межпроцессного взаимодействия (IPC). Использование/доступность блокчейна не будет оказывать никакого влияния на взаимодействие игрока с игрой, так как все результаты игры будут доступны мгновенно. Это позволит гарантировать, что игровой процесс будет максимально приближен к традиционному для таких игр, а также будет полностью прозрачным и децентрализованным. Код каждой игры будет доступен в блокчейне, там же можно будет самым подробным образом проверить сгенерированное случайное число.

Случайность, основанная на сведениях из блокчейна

Основной задачей является поиск децентрализованного метода генерации случайных чисел на основе технологии блокчейн, который можно будет использовать для наших игр. Текущее решение основывается на использовании данных, относящихся к созданию блока (например, временной отметки, одноразового кода, хэша текущего блока и так далее), для получения случайных чисел. Хотя эти числа генерируются майнерами, весьма маловероятно, что майнер сможет успешно изменить результат игры в публичной сети Ethereum, ведь для этого ему нужно обладать достаточной вычислительной мощностью, чтобы успеть получить блок несколько раз, пока длится цикл создания блока (около 14 секунд), который протекает следующим образом:

  1. Майнер участвует в процессе создания блоков Ethereum
  2. Майнер находит одноразовый код и может теперь получить награду
  3. Майнер проверяет одноразовый код и полученные данные о создании блока на соответствие критериям победы в игре
  4. Если он подходит, майнер заполняет результат
  5. Если нет, то майнер забывает о награде за получение предыдущего блока и начинает процесс заново, чтобы найти другой одноразовый код, который подойдет

Этот метод был бы очень надежным, однако мы все равно отказались от него, потому что искали модель, которая бы в принципе не допускала ни малейшей возможности манипуляции результатом.

Интересным вариантом представляется использование RANDAO (децентрализованной автономной организации, нацеленной на создание полностью децентрализованных случайных чисел), однако на данный момент эта технология еще недостаточно совершенна. Joy Gaming поддерживает разработку технологии генерации полностью децентрализованных случайных чисел. Мы будем следить за RANDAO: когда технология будет полностью отработана, она станет идеальным дополнением для нашего проекта.

Создание децентрализованных случайных чисел — agile-подход

Генератор случайных чисел должен решать следующие задачи:

Предлагаемое решение:

Случайность чисел будет обеспечиваться посредством конгруэнтного алгоритма генерации чисел, создающего псевдослучайную последовательность. Эта последовательность чисел будет далее изменяться с помощью добавления данных, полученных извне (такими данными могут быть действия игрока на платформе, курсы фиатных и криптовалют и так далее). Эти массивы данных выбраны потому, что они характеризуются неожиданным поведением и постоянной доступностью. Это решение соответствует лицензионным требованиям: оно может предоставить все необходимые случайные числа за короткий промежуток времени, не оказывая влияния на взаимодействие пользователя с игрой. Чтобы усовершенствовать нашу модель генерации случайных чисел, мы будем запускать двойную проверку с использованием блокчейн-технологии, получая каждое число через транзакции. Таким образом, Joy Gaming не сможет каким-либо образом манипулировать случайными числами.

Технология Joytoken:

Игровые операции

Преимущества и структура экосистемы

Использование блокчейн-технологии позволит пользователям с легкостью определить, куда перечисляются их деньги и честно ли генерируются результаты. Нашим главным приоритетом является пользовательский опыт, и мы предложим нашим пользователям самые разнообразные игры, а также высокий уровень безопасности и надежности.

Наша экосистема несет выгоду не только для пользователей, но и для разработчиков: они получают доступ к крупному пулу ликвидности, а также определенные репутационные бонусы, связанные с работой в сети Joy Gaming. Разработчики смогут с легкостью «подтвердить» игры, в которые играет пользователь, ведь они прозрачны и вписаны в блокчейн. Разработчик будет подключаться к казино и получать комиссионные из игр, запущенных посетителями казино. При этом разработчик будет знать, что все транзакции внесены в надежный журнал аудита. Разработчики играют ключевую роль в игровой индустрии. Мы в Joy Gaming понимаем их и будем работать над тем, чтобы обеспечить более справедливое распределение вознаграждения, полную поддержку маркетингового процесса и привлечение большего количества игроков.

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

Поддержка для разработчиков предоставляется по следующим вопросам:
Пусть разработчики занимаются разработкой игр! Joytokens возьмет на себя все остальное.

Поиск баланса в блокчейне

Пользовательский опыт имеет решающее значение, когда дело доходит до работы над проектами, связанными с азартными онлайн-играми. Компания Joy Gaming потратила немало усилий, чтобы найти правильный баланс между скоростью игрового опыта и децентрализацией, связанной с использованием технологии блокчейн в индустрии азартных онлайн-игр.

Возможные проблемы, связанные с текущим состоянием сети Ethereum

Блокчейн Ethereum не является наиболее оптимальной системой для быстрой обработки данных, так как доказательство выполнения работы выдается один раз в 14 секунд. Кроме того, Ethereum не создан для хранения больших объемов данных. Здесь необходимо учесть, что копия блокчейна хранится в каждом задействованном узле сети. Соответственно, полностью децентрализованная система в каждой точке, от генератора случайных чисел и до самой игры, станет не лучшим вариантом из-за значительных временных задержек. Игроки же, что абсолютно логично, не хотят ждать по несколько минут, чтобы узнать результаты игры. Кроме того, Смарт-контракты, управляющие большими объемами данных и занимающиеся обработкой нелинейной логики, являются дорогостоящими.

Цена газа (единицы оплаты в сети Ethereum)

Подводя итог:

Платформа Joy Gaming — это реалистичный баланс между скоростью и децентрализацией, позволяющий обеспечить оптимальный пользовательский опыт взаимодействия с игрой. Каждая игра, добавленная на платформу, будет соответствовать следующим требованиям децентрализации:

За каждой игрой будет стоять свой собственный коллектив разработчиков, а потому мы разработали специальную процедуру приема игр (см. Раздел 6.5). Команда Joy Gaming будет следить за соблюдением разработчиками наших требований к скорости и децентрализации. Если игра не будет соответствовать данным требованиям, она не будет добавлена на платформу. Мы можем использовать дополнительный игровой процесс проверки клиента на благонадежность (ЗСК, "знай своего клиента"), в рамках которого играть на платформе Joy Gaming смогут лишь проверенные компанией игроки. Тем самым мы сможем обеспечить более высокий уровень соответствия юридическим требованиям и сделать игры более честными.

Архитектура интеграции блокчейна и сценариев

Как объяснялось ранее, технические характеристики всех игр должны соответствовать двум требованиям: минимизация задержек, вызванных использованием технологии блокчейн, и использование децентрализации, характерной для этой технологии.

Приведенная ниже игровая архитектура отвечает требованиям платформы Joy Gaming в вопросах безопасности, децентрализации и скорости. Можно выделить четыре основных компонента архитектуры:

Данный процесс разделен на несколько фаз:

Фаза загрузки

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

Для этого мы просим пользователей отправлять деньги на соответствующий смарт-контракт, пока идет загрузка и настройка игры.

Этому процессу необходимо 15 секунд для загрузки игры и настройки смарт-контракта, созданного с использованием технологии блокчейн. Этот процесс разрешен только в том случае, если пользователь прошел проверку на благонадежность. Игроки, которые не прошли такую проверку, не смогут отправлять деньги на смарт-контракт. Вместо этого они увидят автоматическое сообщение об ошибке, которое поможет им пройти процесс проверки (см. Раздел 15).

Процесс запуска игры

Сумма в коинах, переведенная на смарт-контракт, будет зачислена на WS (сервер кошелька) в качестве начального значения баланса кошелька клиента. GS (сервер игры) можно рассматривать как систему, аналогичную кэш-памяти: значение переменной, обозначающей сумму на балансе каждой стороны, взаимодействующей с платформой (разработчика, клиента и самой платформы), будет увеличиваться или уменьшаться в зависимости от исхода игры.

Каждая ставка клиента будет передана на GS (сервер игры) для определения результатов.

  1. WS (сервер кошелька) настраивает временные кошельки: баланс кошелька клиента будет равен сумме, переведенной во время фазы загрузки. Смарт-контракт проведет двойную проверку, чтобы подтвердить соответствие баланса временного кошелька клиента сумме, переведенной клиентом во время фазы загрузки.
  2. Пользователь делает ставку (например, 5 токенов JoyToken размещаются на "красное" в игре в рулетку).
  3. Ставка будет передана на сервер игры и обработана с использованием генератора случайных чисел (который проверяется через блокчейн). Баланс кошельков клиента, платформы и разработчика, расположенных на сервере кошельков, будет обновлен в соответствии с исходом игры.
  4. этот процесс будет повторяться до тех пор, пока у пользователя остаются средства и желание играть.

Демо-версия смарт-контракт для запуска игры в сети

    function Game(string _name, address _owner, address _registryAddress, address _ tokenAddress, uint256 _payoutRate) {
            name = _name;
            owner = _owner;
            registryAddress = _registryAddress;
            registry = GameRegistry(registryAddress);
            tokenAddress = _tokenAddress;
            token = ERC20(tokenAddress);
            payoutRate = _payoutRate;
            isActive = true;
            decimals = registry.decimals();
        }
        function activate() public onlyOwner {
            isActive = true;
            GameActivated();
        }

        function deactivate() public onlyOwner {
            isActive = false;
            GameDeactivated();
        }

        function ownerDeposit(uint256 amount) public onlyOwner {
            require(amount > 0);
            require(token.transferFrom(owner, this, amount));
            ownerAvailableDeposit.add(amount);
        }

        function ownerWithdraw(uint256 amount) public onlyOwner {
            require(amount > 0 && amount <= ownerAvailableDeposit);
            ownerAvailableDeposit.sub(amount);
            require(token.transfer(owner, amount));
        }

        function playerJoin(uint256 initialDeposit) public whenActive {
            require(!playerInGame[msg.sender]);
            uint256 potentialPayout = getPayout(initialDeposit);
            require(potentialPayout.sub(initialDeposit) <= ownerAvailableDeposit);
            ownerAvailableDeposit = ownerAvailableDeposit.sub(potentialPayou sub(initialDeposit ));
            playerInGame[msg.sender] = true;

            if (initialDeposit > 0){
                playerCurrentGameDeposits[msg.sender] = initialDeposit;
                require(token.transferFrom(msg.sender, this, initialDeposit));
            }
            PlayerJoined(msg.sender);
        }

        function announceResult(address player, uint result) public onlyController {
            require(playerInGame[player]);
            require(result <= uint(GameResult.draw));
            playerInGame[player] = false;
            GameResult gameResult = GameResult(result);
            if (gameResult == GameResult.win) {
                require(resolvePlayerWin(player));
            } else if (gameResult == GameResult.loss) {
                require(resolvePlayerLoss(player));
            } else {
                require(resolveDraw(player));
            }
            GameResultAnnounced(player, result);
        }

        function resolvePlayerWin(address player) private returns (bool success) {
            uint256 payout = getPayout(playerCurrentGameDeposits[player]);
            playerCurrentGameDeposits[player] = 0;
            if (payout > 0)
                playerDeposits[player] = playerDeposits[player].add(payout);
            return true;
        }

        function resolvePlayerLoss(address player) private returns (bool success) {
            uint256 playerDeposit = playerCurrentGameDeposits[player];
            playerCurrentGameDeposits[player] = 0;
            uint256 payout = getPayout(playerDeposit);
            uint256 platformShare = playerDeposit.mul(registry.platformShare()).div(10**registry.decimals());
            require(platformShare < playerDeposit);
            if (platformShare > 0)
                platformDeposit = platformDeposit.add(platformShare);
            uint256 profit = playerDeposit.sub(platformShare);
            ownerAvailableDeposit = ownerAvailableDeposit.add(payout.sub(playerDeposit)).add(profit);
            return true;
        }

        function resolveDraw(address player) private returns (bool success) {
            uint256 playerDeposit = playerCurrentGameDeposits[player];
            playerCurrentGameDeposits[player] = 0;
            uint256 payout = getPayout(playerDeposit);
            if (playerDeposit > 0)
                playerDeposits[player] = playerDeposits[player].add(playerDeposit);
            ownerAvailableDeposit = ownerAvailableDeposit.add(payout.sub(playerDeposit));
            return true;
        }

        function playerWithdraw(uint256 amount) public {
            require(amount > 0 && amount <= playerDeposits[msg.sender]);
            playerDeposits[msg.sender] = playerDeposits[msg.sender].sub(amount);
            require(token.transfer(msg.sender, amount));
        }

        function platformWithdraw(uint256 amount) public {
            require(msg.sender == registry.owner());
            require(amount > 0 && amount <= platformDeposit);
            platformDeposit = platformDeposit.sub(amount);
            require(token.transfer(msg.sender, amount));
        }

        function getPayout(uint256 deposit) private constant returns (uint256 payout) {
            return deposit.mul(payoutRate).div(10**decimals);
        }
    }
    

Фаза сворачивания и процесс выплаты

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

  1. Запрос пользователя на остановку будет отправлен на серверы игры и кошелька.
  2. Сервер игры создаст файл истории сеанса игры, затем файл будет хеширован.
  3. Последнее обновленное значение баланса кошельков, хранящихся на сервере кошельков, будет вместе с хешем отправлено на смарт-контракт.
  4. Используя полученные сведения, смарт-контракт изменит свое состояние и обработает выплату через блокчейн.

Процесс добавления игры на платформу

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

Чтобы процесс добавления игр был эффективным и отвечающим духу нашей платформы, все новые игры будут изучаться следующим образом:

  1. Проведение аудита кода игры — наши эксперты проверят игру на соответствие нашим требованиям к безопасности, а также юридическим требованиям.
  2. Проверка игры по различным показателям: времени, безопасности, стоимости, блокчейн-интеграции, пользовательскому опыту и так далее. Если проверка кода и тестирования игры успешно завершатся, мы приступим к добавлению игры на платформу.
  3. Разработка смарт-контракта.
  4. Тестирование и проверка безопасности разработанного смарт-контракта.
  5. Запуск игры на платформе.

Разместив игру в сети Joy Gaming, вы сможете интегрировать ее со всеми элементами нашей системы. Если разработчикам потребуется дополнительная ликвидность, они получат доступ к общему пулу ликвидности казино, готовых участвовать в спонсировании игр. Если возникнут другие технические проблемы, наша команда будет помогать разработчикам в попытках найти быстрое решение проблемы.

Пример оплаты смарт-контракта

    uint256 playerDeposit = playerDeposits[player];
        playerDeposits[player] = 0;
        uint256 payout = getPayout(playerDeposit);
        uint256 platformShare = playerDeposit.mul(registry.platformShare()).div(10**registry.decimals());
        require(platformShare < playerDeposit);
        if (platformShare > 0)
            require(token.transfer(registry.owner(), platformShare));
        uint256 profit = playerDeposit.sub(platformShare);
        ownerAvailableDeposit = ownerAvailableDeposit.add(payout.sub(playerDeposit )).add(profit );
        return true;
    

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

Пример процесса блокчейн-интеграции — игра Icy Cash Splash

Пример кода включен в техническую документацию, чтобы продемонстрировать функциональность и реализацию использования Joytoken, однако вы можете получить доступ к нашему официальному github-репозиторию по ссылке ниже: https://github.com/JoyPlatform/joy-contracts. Код будет прокомментирован, чтобы обеспечить полную наглядность и доступность нашего подхода с точки зрения разработки. Если у вас есть какие-либо вопросы, пожалуйста, в любое удобное для вас время свяжитесь с нашей командой.

Использование блокчейн-технологии помимо Ethereum

Экосистема Ethereum не является рынком, подходящим для игровых технологий, ведь различные проблемы со скоростью и масштабируемостью еще только ждут своего решения. В этом разделе мы рассмотрим две дополнительные технологии. Они могут сделать нашу инициативу более весомой и прекрасно интегрируются в наш план развития.

IOTA: децентрализация посредством DAG (направленных ациклических графов)

Технология IOTA воплощает собой новый инновационный децентрализованный подход. Эта экосистема не основывается на технологии блокчейн, в ее основе лежит принцип клубка (tangle). Направленный ациклический граф DAG, получивший название Tangle — это, если говорить буквально, блокчейн без блоков, то есть процесс консенсуса становится неотъемлемой частью системы.


Эта инновация позволяет изменить правила, сложившиеся в индустрии азартных игр:

Отрицательным аспектом для игорного бизнеса будет время проверки транзакций. Тем не менее, время, необходимое для проведения транзакции, непосредственно зависит от количества активных участников (так как вы должны участвовать в двух других проверках для того, чтобы вашу транзакцию проверили). Соответственно, чем больше пользователей, тем меньше нужно времени на проведение транзакции (2-3 минуты на данный момент). Примечательно, что сеть IOTA по-прежнему находится в бета-версии, и бесплатные транзакции наверняка привлекут множество пользователей, благодаря чему вопрос времени проверки транзакции решится сам по себе. Потенциал этой экосистемы не имеет предела, и мы следим за ее развитием и надеемся протестировать ее для интеграции игр уже в ближайшем будущем. [1]

Децентрализация хранения и хостинга

Предоставление услуг децентрализованного хранения данных является открытым рынком, поскольку технология блокчейн не предназначена для хранения данных. Sia [2], IPFS [2], и Storj [3] являются основными игроками на этом рынке. Общая идея заключается в том, чтобы позволить пользователям хранить данные или арендовать доступные хранилища, управляемые в децентрализованной среде.

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

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

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

Joy Gaming изучает возможность использование этого решения для потенциальной интеграции в ходе дальнейшей разработки.

Взаимодействие с компаниями-партнерами

Для множества новых онлайн-казино вопрос ликвидности становится очень острым. Кроме того, крупные аффилированные организации не хотят иметь дело с играми, созданными небольшими стартапами. Это объясняется тем, что такие игры зачастую имеют плохую конверсию и слабые показатели удержания игроков. Соответственно, крупные компании стараются не иметь дел с малыми разработчиками, пока те не обзаведутся определенной коммерческой статистикой. Поскольку работа этих небольших разработчиков оплачивается на периодической основе и не в режиме реального времени, они часто сталкиваются с проблемами, связанными с движением ликвидности. Joy Gaming с легкостью решает эту проблему благодаря нашей модели оплаты-за-игру. Каждый раз, когда клиенты играют в игру, соответствующим сторонам, связанным с игрой, производятся выплаты. Это позволяет создать гибкую экосистему с коротким циклом обратной связи, что еще активнее стимулирует появление новых и инновационных решений от разработчиков.

ICO, управление процедурой проверки клиентов и соответствующие требования

Чтобы полностью соответствовать всем предъявляемым к нам законом требованиям, мы должны связывать каждую инвестицию с соответствующим инвестором. Все участники, сделавшие покупку на сумму от 10 000 долларов США, пройдут базовую процедуру проверки, в рамках которой необходимо предоставить копию удостоверения личности (идентификационная карта государственного образца, паспорт или водительские права). Этот процесс будет проведен компанией JUMIO — известной фирмой, занимающейся вопросами цифровой верификации.

Доступ к игре, управление процедурой проверки клиентов и соответствующие требования

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

Практические кейсы

Компания-разработчик ПО

Avent — это компания-разработчик ПО, которая хочет выйти на рынок азартных онлайн-игр. У Avent есть восхитительная идея, способная изменить индустрию. Тем не менее, казино не хотят нанимать Avent, так как рынок еще не протестирован. Компания Avent могла бы выложить свои игры в сеть самостоятельно, но тут есть множество подводных камней. Во-первых, у Avent нет капитала, достаточного для финансирования высоких ставок. Во-вторых, пользователи будут сомневаться, стоит доверять ли неизвестной компании. Кроме того, пользователей не устраивает необходимость передачи платежных данных третьей стороне, которая получит тем самым доступ ко всем средствам на банковской карте пользователя. Это означает, что компании Avent будет довольно сложно заставить свои инновационные азартные игры приносить доход.

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

Пользователь

Пользователи устали от необходимости постоянного выбора между многочисленными казино и игровыми комнатами, из-за чего им приходится доверять все большему числу третьих сторон. Joy Gaming гарантирует, что все транзакции являются видными, а правила в блокчейне — неизменными. Кроме того, Joy Gaming проверяет своих разработчиков. Соответственно, пользователи могут играть в сети Joy Gaming и точно знать, что все игры прошли полную проверку и абсолютно безопасны. Поскольку средства не покидают кошелек пользователя до начала игры, пользователь уверен, что его деньги находятся в безопасности.

Казино

Казино всегда ищут новые способы привлечения пользователей и улучшения качества своих игр. Кроме того, казино обладают необходимыми для самостоятельного запуска игр опытом, капиталом и ликвидностью. К сожалению, казино не могут просто брать и добавлять случайные игры, потому что игры-новинки зачастую не находят спроса на массовом рынке. Сеть Joy Gaming предлагает решение этой проблемы. Разработчики, которые создают новые, захватывающие и необычные игры, могут заключать контракты напрямую с казино. В этом случае казино становятся поставщиком ликвидности, что отражается в смарт-контракте. Каждый раз, когда пользователь будет играть в игру, казино будет платить комиссию разработчику. Это беспроигрышный вариант.

Продажа токенов

Токен

Токены JoyToken будут доступны для покупки в сети Ethereum как токены стандарта ERC20. Существует текущая проблема с токенами стандарта ERC20: если вы отправляете свой токен в смарт-контракт, вы должны использовать функцию approve + transfer form для совершения перевода. Тем не менее, если вы отправляете ваш токен на внешний адрес, вам придется использовать функцию transfer. К сожалению, если вы ошибетесь при работе с этими функциями, то деньги будут потеряны.


Пример кода для токен-интерфейса стандарта ERC20
Контракт ERC20 выглядит так: ERC20Basic {function allowance(address owner, address spender) public constant returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); }

Мы в курсе этой проблемы и работаем над созданием решения, которое защитит наших клиентов от потери денег. Мы планируем перейти на новый, пока что находящийся в разработке стандарт ERC223 — разумеется, после его полной доработки. У стандарта ERC223 есть новая функция, которая запускается в случае описанного выше сценария, и деньги автоматически отправляются обратно клиенту.

Ценность токенов

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

Все законные стороны получают полную защиту со стороны смарт-контрактов, условия которых нельзя изменить, и токенов, что позволяет свести на нет случаи мошенничества в сети.

В общем, цена токенов будет той, которую пользователи будут готовы заплатить за использование сервисов сети Joy Gaming.

Распределение токенов

Мы принимаем оплату в ETH, BTC, а также банковским переводом

Жесткий предел средств, привлекаемых в ходе распродажи токенов JoyToken, составляет 46 340 000 долларов США.

Мягкий предел средств, привлекаемых в ходе распродажи токенов JoyToken, составляет 1 000 000 долларов США. Если в ходе распродажи не удастся собрать сумму, превышающую мягкий предел, то распродажа токенов будет считаться неудавшейся.

Сроки. Ожидается, что распродажа начнется 20 марта 2018 года и продлится в течение 31 дня или до тех пор, пока все токены не будут проданы.

Превышение установленной суммы распродажи: когда размещение токенов JoyToken соберет более 46 340 000 долларов США, оно будет немедленно закрыто. Превышение установленной суммы распродажи токенов JoyToken вполне вероятно. В этом случае все избыточные средства будут возвращены в течение 15 дней с момента окончания распродажи токенов. Пожалуйста, обратите внимание, что в этом случае выплата процентов не осуществляется.

Неудачное размещение: если объем полученных от продажи токенов JoyToken средств не превысит мягкий предел, то распродажа токенов будет считаться неудавшейся. Распродажа будет прекращена, все полученные денежные средства будут возвращены в течение 15 дней с момента окончания распродажи токенов. Пожалуйста, обратите внимание, что в этом случае выплата процентов не осуществляется.

Прочие риски: продажа токенов сопряжена с прочими рисками, которые подробнее описаны в Меморандуме о частном размещении (PPM), доступном совместно с документами, касающимися распродажи токенов. Эти риски включают в себя, в частности, актуальную позицию комиссии по ценным бумагам и биржам США, согласно которой подобные токены считаются ценными бумагами и требуют регистрации или оформления налогового вычета, возможную потерю токенами стоимости, невозможность перепродажи токены, неспособность развить сеть Joy Gaming и наличие технологических рисков. Читателю настоятельно рекомендуется прочитать Меморандум о частном размещении, чтобы подробнее ознакомиться с возможными рисками, и получить консультацию специалиста перед тем, как приступать к любым инвестициям.

Распределение токенов

Предпродажа 20% 140 000 000
Продано во время ICO* 30% 210 000 000
Пул для майнинга (VIP, и т. д.) 10% 70 000 000
Продано на платформе 23% 161 000 000
Команда основателей (передается на 24 месяца) 12% 84 000 000
Послы бренда и т.д 3% 21 000 000
Баунти-программа ICO 2% 14 000 000
ИТОГО 100% 700 000 000

*Непроданные токены будут заблокированы на один год.

Команда

Генеральный директор

Эндрю Макдональд (Andrew MacDonald)

20 лет опыта индивидуальных и онлайн продаж в сфере онлайн игр в ведущих мировых компаниях. Успешное применение маркетинговых методов сохранения клиентов, с акцентом на индивидуальный подход, а также обеспечение качественных игровых предложений для содействия росту бизнеса. Профессионал высокого класса в области решения проблем, связанных с данными.

Директор по маркетингу

Майк Лейс (Mike Leys)

Более 34 лет опыта работы, включая 30 лет в маркетинговом секторе. Старший менеджер и старший специалист по маркетингу с обширными знаниями и опытом во всех областях оффлайн и онлайн маркетинга и электронной коммерции по всему миру. Имеет опыт работы в таких областях, как онлайн игры, развлечения, мобильные разработки, индивидуальные продажи, финансовые услуги. Работает в секторе онлайн игр с 2005 года. За это время, успешно запустил ряд игровых онлайн-сайтов с фокусом на привлечение качественных игроков.

Технический директор

Стив Джордано Имбролл (Steve Giordano Imbroll)

Более 10 лет опыта в области разработки программного обеспечения, 7 лет в сферах бизнес-аналитики, банковского дела и финансов. Высококлассный специалист-разработчик, сотрудничал с а.о., Sony, Uber и PKR Technologies. Профессионально обрабатывает множественные запросы из разных отделов. Наблюдатель за тонкостями выполнения работы компании. С недавнего времени весьма увлечён сферами онлайн игр и ценных бумаг.

План развития

ИЮНЬ 2018
OP: Получение 500 000 долларов США в качестве стартового финансирования
ОКТЯБРЬ 2017
OP: В состав команды входят советники по вопросам индустрии и блокчейн-технологий
НОЯБРЬ 2017
OP: Создание фонда Joy Gaming
OUT: Выступление на конференции BlockChain Expo
ДЕКАБРЬ 2017
TECH: Демо-версия слот-машины, работающей на основе смарт-контрактов
ОP: Подача заявки на получение лицензии разработчика азартных игр
TECH: Запуск платформы Joy Gaming для разработчиков
TECH: Аудит кода
MARCH 2018
ОP: Проведение распродажи токенов
АПРЕЛЬ 2018
ОP: аудит результатов проведения распродажи токенов
ИЮНЬ 2018
TECH: Игры доступны в онлайн-казино Playcosmo
АВГУСТ 2018
TECH: Распространение на рынок настольных игр с фиксированными ставками
ОP: Интеграция с другими платформами и прямыми операторами

Ссылки

[1] https://iota.org/IOTA_Whitepaper.pdf

[2] https://www.sia.tech/whitepaper.pdf

[3] https://ipfs.io/ipfs/QmR7GSQM93Cx5eAg6a6yRzNde1FQv7uL6X1o4k7zrJa3LX/ipfs.draft3.pdf

[4] https://storj.io/storj.pdf

[5] https://bitcoin.org/bitcoin.pdf

[6] https://github.com/ethereum/wiki/wiki/White-Paper

Содержание