遺伝子計算

遺伝子概要

ARCANA, EGG, SHARDはトークン1つ1つが固有の「遺伝子情報」を持つ。遺伝子情報は、SHARD→EGG→ARCANA→SHARDとトークンが変化する過程で、変化しつつ継承される。

プロセス

遺伝子の変化

SHARD → EGG

2種類のSHARDが持つ遺伝子を「合成」したものがEGGの遺伝子となる

EGG → ARCANA

EGGの持つ遺伝子がそのままARCANAの遺伝子として継承される

ARCANA → SHARD

ARCANAが持つ遺伝子がそのままSHARDの遺伝子として継承される


遺伝子情報のデータ構造

遺伝子情報は32次元のベクトルとして表現され、各ベクトルは8bitの値域(-128〜+127)を持つ。 コントラクト上では、256bitの1つのフィールドに保持される。:

  |-------------------------256bit[hex]--------------------------|
0xffeeddccbbaa99887766554433221100ffeeddccbbaa99887766554433221100
  ^^                                                            ^^
  1次元目                                                       32次元目

SHARDからEGG生成する際の遺伝子計算

合成の元となる2種類のSHARD X, Yの遺伝子ベクトルをGX, GYとする。 Xの個数をa, Yの個数をbとする。 新たに生成されるEGGの遺伝子ベクトルをGZとする。

遺伝子ベクトルの各次元をGXn, GYn, GZn (n = 1〜32)とする。

遺伝子は以下の式で計算される。:

GZi = (aGXi + bGYi) / (a+b)
※ a + b は常に100

突然変異について

同じ種類、同じ個数のSHARD同士によるEGG生成でも、必ずしも同じ遺伝子を持つEGGが生成されるとは限らない。 遺伝子計算には、一定の「突然変異」ロジックが存在する。

32個の各次元につき、それぞれ5%ずつの確率で、継承された値とはまったく異なる新しい値に上書きされる。