Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
ksantoprotein
5 лет назад

SteemMonsters VS VizMonsters техчасть 3

Итого, что мы имеем по описанию первых двух технических частей?

  1. Возможность бесплатного майнинга картона для игры. Но если ты не хочешь заморачиваться, то покупай у более продвинутых, кто уже смайнил. При этом децентралиация, которой нет у монстров, ибо сгенерировать и продать карты может любой, а не только разработчик, который все регламентирует
  2. Участие в игре платное (как в покере), чтобы отобрать токены у чужого дядьки, надо для начала свои поставить. Сейчас у монстров мультиаккаунтство зашкаливает, ибо игра бесплатна и с большего количества твинков проще заполучить большее количество DEC и новых бесплатных ревардных карт. В нашем случаем твинководство в массовости себя не будет оправдывать. Спарили тебе двух твоих альтов, у одного 50 токенов, у другого 50 токенов. Один победил и забрал 95 токенов (5% забрало приложение), думаю смысл понятен.
  3. Уровень своей карты ты задаешь сам, путем вливания необходимого количества токенов VIZ в инвайт (некий аналог склейки у монстров). Это позволяет тебе самому решать в каком уровне "лиги" ты хочешь играть, другими словами ты можешь играть на 10 токенов за батл, а можешь на 1000.
  4. Из убито-подбитых карты так же высыпаются монетки, которые можно забрать себе в карман. Это вносит разнообразие в экономический подход к игре. Как организатор я могу выставлять поединки к примеру на 100 монет, а более ушлый и продвинутый может собрать колоду на 10 монет и принять вызов, да, скорее всего он проиграет, но пока он проигрывает он выбивает из моих карт 30 монет (чем жирнее карта, тем большее монеток выпадает).

Далее рассмотрим технический момент объявления боев в монстрах и пересечение с токенами DEC.

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

image.png

Это как раз начало так называемого софтсмарта. Далее я начинаю долбать уже сервер стиммонстров своими запросами. Таким образом я отслеживаю статус своей заявки по trx_id (у монстров ваще все на этом завязано).

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

Немного отвлекусь от монстров и расскажу о себе. На визе я уже делал игру Шоттс и там участие в игре определялась так же софтсмартом - трансфером токенов на аккаунт приложения. Но далее спаринг и батл определялся в открытую исходя из сигнатуры подписи блока делегата и юнита. У разработчиков монстров увы, слабое место - это их гсч. Я же наоборот топлю за открытость гсч и результат всегда можно обсчитать любым сторонним сервисом (используя данные блокчейна), а не ждать милости от централизованного сервера по апи.

... статус заявки сменится на 1. И у нас есть 2 минуты чтобы транслировать в блокчейн следующий кастом, а именно набор картона согласно полученным правилам боя.

image.png

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

image.png

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

Далее статус меняется на 2 и появляется служебная информация о том кто победил и что происходило во время баттла. Есть еще и другие статусы, типа отменил или бой не состоялся, но это просто детали. Лично мне не нравится, что приходится долбать их сервер запросами и результат боя невозможно высчитать самостоятельно, ибо гсч при равенстве карт во время баттла так же лежит на их плечах. Вот я бы как разработчик так бы не заморачивался, а сразу бы сделал высчитываемый исход боя.


А теперь смотрим в сторону инвайтов и блокчейна VIZ. И вносим пятое отличие от монстров.
Да, сначала мы транслируем в блокчейн, что хотим играть. Окай, и даже в ответ приложение протранслирует в блокчейн кто с кем по чем. А потом мы просто транслируем кастом в котором перечисляем публичные ключи сгенерированных карт и как только оппонент делает то же самое, мы разряжаем через приватные ключи одноразовые инвайты в приложение. Понятное дело, что зная приватник легко сравнить с публичным и определить нет ли мухлежа со стороны игрока или он все правильно сделал. Далее не нужно усложнять сущности и хешировать колоды, ибо хеширование уже вложено в сам инвайт.

Смотрим преимущества и недостатки.

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

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

5
583.731 GOLOS
На Golos с July 2017
Комментарии (6)
Сортировать по:
Сначала старые