2019年5月23日木曜日

Crypto Zombies

Etheriumで用いるコントラクト宣言用の言語Solidityを利用してゲームを作るという感じのサイト。ブロックチェインの布教? あまりよくわからないが英文も平易なのでコツコツやってみる。

* LESSON1

https://share.cryptozombies.io/en/lesson/1/share/PARANON?id=Z29vZ2xlLW9hdXRoMnwxMTY2NTQwNDM4OTIyNjUyMjc5MTQ=
  • 基本的にはコントラクトを宣言する言語(Solidity)の仕様についての説明、
  • ファクトリクラスを作るという体。ランダムに入力された文字列
  • EteriumでどことなくECMA2の宣言に似た感じの型がある言語。型の区切りに記号を使わないあたりややすると冗長かも
  • 言語使用にイベントが含まれている
  • view指定子やpure指定子は独特
  • サジェストなどエディタの機能が使えればそう難しくはない感じ
  • 作成したコントラクトを直接JSで呼び出して利用できるというのは面白い
* LESSON2

https://share.cryptozombies.io/en/lesson/2/share/PARANON?id=Z29vZ2xlLW9hdXRoMnwxMTY2NTQwNDM4OTIyNjUyMjc5MTQ=
  • 人間を食べてミューターントを作ろうというノリ
  • mapは宣言がやや特殊。普通にテンプレートスタイルじゃあかんのだうろか
  • Chapter3ではユーザーのオーナーIDを表すmsg.senderというグローバル変数
  • require構文は変わってる。条件を見たさないと関数をストップして中断の動作をするだけの組み込み関数。if(hoge) return/throw;の省略か。 名前も混乱しそうな感じ。ユニットテスト的な思想?
  • 継承は'is'。えー
  • 複数戻り値の仕組み。PHPでリスト返値するのに似てるが型がある。
  • 最初に説明したものを作るという流れではなく、ここでは他のコントラクトの呼び出しや特殊な構文などに視点がおかれている感じ
  • CryptoKittyも初見。ブロックチェーンを利用して一意性を担保というのはなんかそれっぽいですね。けど無限大のバリエーションの中で一意であるってのに価値があるかは、うーんとなっちゃいますね。むしろありふれている
  • 全体の中に、本当の意味での一意というのがあって他はモーフで生成されるというのなら、一意なものと近傍のものには価値ができるかも
ざらっと見直し、ゲームに応用はできそうというのは納得できますね。昔カードゲーム設計したときにカードの一意性をどう担保するかというは考えたもの。(uidにカードの参照ID付与したレコード延々と増やしていくみたいな実装に結局はなる)
ここまではハッシュの話なので、ぶっちゃけブロックチェイン関係なく分散される?ことによる実装的な優位性は分からない。
Etherium少し前までホールドしてたけど売っちゃった。もってても、ゾンビカードは買わないかなあ。