Pride Squiggle で画像をオンチェーンでダイナミックに生成するために使ったテクニック

Pride Squiggle でイーサリアムのオンチェーン上にダイナミックな画像を生成するために使ったテクニックに関して、解説します。
(ダイナミックな画像とは、NFT生成時にいくつかの画像を用意して、単純にその画像を表示するのではなく、プログラムのアルゴリズムによって規則に基づいて生成されたそれぞれの画像のことです)

現在、NFTコレクションは、プログラムを使って、それぞれのNFTにユニークな画像を生成する、ジェネラティブという手法で作られています。しかし、大半のものはオフチェーンで生成し、生成した画像はイーサリウムのブロックチェーンの外に置かれています。

そうする理由は、まだブロックチェーン上に画像を置くには、画像を置くストレージとしては費用が高すぎる(ガス代が高い=お金がかかる)ためです。しかし、それでは「フルオンチェーンのNFT」とは言えず、本当の意味での decentralized とは言えないのです。

そこで作られたのが、Nounsでも採用されている、SVGを使ってSolidityでドット絵を描くという手法です。これであれば、フルオンチェーンでNFTを実装出来ますが、データ削減のためや、実装の制約のために四角のドットを組み合わせるドット絵を使っているので、表現の自由度は限られています。NFTの多くが初期のファミコンのようなドット絵になっているのは、この為です。

そこで、私が試したのは、SolidityのプログラムでSVGの機能を使ってドットではない表現、直線や複雑な曲線を使ったダイナミックなアートを生成する、という手法です。ドット絵の制約もなくなるし、曲線も使えるので、自由度が圧倒的に高くなります。

プログラムでアートを作ることを「ジェネラティブ・アート」と呼び、GPUの世界ではさまざまな素晴らしい作品が作られていますが、NFTで用いられるSolidityを使った分野ではまだまだ開拓されておらず、ブルー・オーシャンです。

私はしばらく、この領域で遊ぶことに決め、その第一弾がPride Squiggleです。ソースコードは、オープンにしてあるので、ぜひともご覧ください。


関連ページ