Учимся готовить Криптокотиков. Часть 4. Генетический код кота.

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

 

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

 

Структура записи котика выглядит так:

 

struct Kitty {

uint256 genes;

uint64 birthtime;

uint64 cooldownEndBlock;

uint32 matronID;

uint32 sireID;

uint32 siringWithID;

uint16 cooldownIndex;

uint16 generation;

}

где

  • genes – 256-битное число, которое описывает гены котика. Этот параметр отвечает за его внешний вид и от него зависит код потомка.
  • birthTime – дата рождения 
  • cooldownEndBlock – минимальное время или блок в котором можно будет снова размножаться
  • matronId, sireID – #номер мамы и папы
  • siringWithId – если котик беременный, то устанавливается ID папы, в другое время ноль
  • cooldownIndex – текущий показатель времени восстановления
  • generationпоколение котика

То есть, когда котик рождается, то ему присваиваются все эти параметры.

 

Важно отметить, что описание и гемы(jewels) котика формируются на веб-сервере CryptoKitties, также как и картинка, которая является интерпретацией генетического кода.

 

В рамках блокчейна, код genes – всего лишь 256-битное целое число. Но хранится в нём 240 бит, потом идут нули.

Выглядит это так:

в бинарном виде –

0000000000000000011000110001100010110010100100001010010100011010010001101001010010101000011010100010100111000000110000010001110000110000011100100101011101100010000101010100010000011000110001000011000100011100011001010110001010011110101001100011000111101111

в шестнадцатиричном виде –

00006318b290a51a4694a86a29c0c11c30725762154418c4311c65629ea631ef

 

  • Каждые 5 бит – это ген.
  • Каждые 20бит – это блок из 4х генов.
  • Каждый блок – это отдельная трейт-группа
  • Всего в генетическом коде 12 блоков.

Благодаря нашей табличке можно понять у какого гена какое кодовое значение. Если переводить в INT-систему, то генетический код котика будет выглядеть как-то так:

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

 

В таблице трейтов некоторые гены отмечены звёздочкой *. Это означает, что данный ген может присутствовать только в скрытой позиции у Gen0 котов. Распространение катрибутов на 04.04.18. вы можете посмотреть в этой статье.

 

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

 

Также в игре есть исчезнувшие катрибуты, которые больше не повятся у новых Gen0 котов, а могут быть получены только в результате бридинга, в табличке они отмечены зачёркнутым курсивом.

 

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

 

Первый вариант (update устарел) – гуглдок от Джоди, создательницы сайта cryptokitties411.com Там вбиваете ID кота и Вам отображаются все его гены.

 

Второй вариант – KittyDex, где можно посмотреть код котика в бинарном виде, хексе и KAI-системе (недостаток KAI я опишу в отдельной статье, пользуйтесь INT-более удобным инструментом наименования гена). Чтобы увидеть нужного котика, вставьте его ID в url сайта. При наведении на ген, подсвечивается его шанс передачи потомку и средняя цена продаж.

 

Третий вариант (выбор редакции) – генридер от KittyCalc. Он более наглядный, картинкой отображается форма или цвет, за который отвечает первичный ген, диаграммой сзади – шанс передачи потомку, звёздочками – “вес” гена или сила присутствия в трейтгруппе при передаче потомку.

 

Четвёртый вариант – это наш генридер. На данный момент мы работаем над улучшением его интерфейса. ибо раньше использовали только для себя. Мы добавим котогенератор и полный профиль с INT, CODE, HEX значениями и подсветкой возможных катрибутов у потомства. Сейчас катрибуты рассортированы по группам и указан процент передачи генов потомку.

 

Также подписывайтесь на наш твиттер (@kotobaza_co) и телеграм канал (t.me/kotobazaco) чтобы быстрее узнавать о новых новостях из мира КриптоКотиков.