Разработка блокчейн игры на Ride

Я хотел бы задать разработчикам из Tradisys несколько вопросов по поводу бекенда для блокчейн игр написанных на смартконтракте Waves.

  1. Каким образом можно зашифровать строку gameID на стороне сервера, на Node.js чтобы потому её можно было расшифровать через rsaVerify на языке Ride? Я пробывал около 10 разных библиотек в том числе “crypto-js” и так не смог добиться правильного шифрования и получить base64 строку как в примере из статьи.

  2. Каким образом эффективнее всего мониторить новые транзакции в сети блокчейна помимо метода GET /transactions/address/{address}/limit/{limit} и если использовать такой метод, какую стоит делать периодичность и будет ли это стабильно работать? Есть ли возможность как-то подписаться на события о новых транзакциях или что-то в этом роде? А также правильно ли я понимаю что вы мониторите через API именно транзакции адреса SERVER, а не самого dapp со скриптом?

  3. Почему-то при попытки написать на Ride:

let SERVER = @extrUser(addressFromString) и прочие вариации этого метода, получаю просто ошибки компилятора. Почему такое может происходить если эту строчку я взял из скрипта игры Dice и как это можно исправить.

  1. Каким образом клиент получает результат игры? Его присылает сервер? По какой схеме это происходит?

  2. Очень ли нужен мощный сервер чтобы обрабатывать всё это, и потянет ли такую нагрузку скажем Ubuntu-32gb-2gb-1core, или мне есть смысл взять сервер помощнее или бекенд и сервер играют небольшую роль и всё таки нагрузка ложиться на смартконтракт и блокчейн?

1 Симпатия

Привет! Ответы подготовим в самое ближайшее время по всем вопросам, для тех, кто не в курсе, про рандом рассказано тут:

Добрый день,

Касательно ваших вопросов:

  1. К сожалению тут не можем вам помочь, так как используем бекенд на java. Cоветуем вам обратиться и задать этот вопрос на stackoverflow, там есть поддержка от waves. Кстати и другим командам будет полезно знать.
  2. Мониторинг через GET /transactions/address/{address}/limit/{limit} действительно показывает свою надежность и его можно использовать для такого рода задач. Единственное, надо учесть считывание транзакций на глубину хотя бы 2х блоков. Касаемо периодичности, тут нужно экспериментальным способом подбирать исходя из нужд вашего приложения и требований к скорости. Насколько нам известно, в данный момент нет возможности подписаться на события о новых транзакциях, так как нету поддержки веб-сокетов. Мы мониторим адрес со скриптом, так как через него проходят все игры, что довольно логично.
  3. Тут все просто, вы же открыли скомпилированный скрипт в браузере, учитывайте это. К примеру let SERVER = addressFromStringValue(“3PMT9wun7BB7JABSuhTJpFgJoegRfYw2e6d”) в скомпилированном виде будет отображаться как let SERVER = @extrUser(addressFromString)(“3PMT9wun7BB7JABSuhTJpFgJoegRfYw2e6d”). Тут вам рекомендуем обратиться к документации Ride, там подробно описаны все функции.
  4. Клиент получает результат игры сканируя стейт контракта по ключу конкретной игровой сессии. Как только игра была обработана сервером, ключ в стейте обновится и фронтенд это увидит.
  5. С сервером все очень просто на самом деле, все зависит от того как вы напишете свое приложение, поэтому берите простой сервер, запускайте тесты и смотрите на загрузку. Все метрики есть в серверной консоли.
1 Симпатия