NFTの技術的な実体を完全に理解する【ハンズオン付き】

NFT(Non Fungible Token: 非代替性トークン)の技術的な仕組みをご存知でしょうか?
この記事では、NFTの技術的仕組みに焦点をあてて解説していきます。

さらに、実際にNFTマーケットプレイスであるOpenSeaのNFTを使い、ハンズオンで技術を深く理解できるように意識しました。

全て無料で公開していますが、「スキ(いいね)」や拡散していただけると今後のモチベーションになります!

是非よろしくお願いします🙇‍♂️🙇‍♂️🙇‍♂️

想定読者


以下のような人を対象読者に想定しています。

NFTの概念は理解しているけど、どうやってNFTアートの所有を担保しているのか気になる人
NFTの技術的リスクを知りたい人

なるべく技術に詳しくない人でも分かるように、平易な言葉を使うように気をつけています。
お役に立てば嬉しいです。

NFTを規格する ERC721


ERCとは、Ethereum Request Commentsの略で、Ethereumブロックチェーンに適用されている規格のことで、こちらにて誰でも閲覧可能な状態で公開されています。

NFTは、ERCの一部であるERC721で規格されています。

これによると、NFTは全てブロックチェーン上で動くプログラミングである、「スマートコントラクト」によって管理・運用されています。

ちなみに、同じくERCの一つである、ERC20ではFT(Fungible Token: 代替性トークン)が規格されています。
ERC20は、USDTのような、いわゆる仮想通貨としてのトークンの規格が記載されています。

規格上のNFTとそれを所有することの意味


ERC721によると、NFTとは

  • スマートコントラクト内で創出されるユニークな Token ID そのものである

  • Token ID のオーナーがNFTの持ち主を意味する

ことになっています。

ブロックチェーン上に配置されたプログラムである、スマートコントラクトは、コントラクトアドレスというアドレスを持っています。
このアドレスは全てのスマートコントラクトでユニークになっています。

つまり、上記のことを加味すると、

「NFTとは、スマートコントラクトアドレスと Token ID のユニークなペアそのものである」

と言えそうです。

また、スマートコントラクト内では、Token IDとオーナーを示すオーナーウォレットアドレスの紐付けも管理されています。

よって、

「NFTを所有するとは、自身のウォレットアドレスをToken IDと紐づけることである」

となります。

Mintの意味


NFTに関する情報に触れると、「Mint(ミント)」という言葉を聞くことがあると思います。

調べると、MintとはNFTを新規発行すること、と分かると思います。

ですが、これまでの話を紐づけるともっと本質的には、

Mintとは、スマートコントラクト内で新しいToken IDを発行すること

というのが技術的な本質であると言えます。

意外と無機質なものですね…。

Token ID自体はただの数字


これまでに何度も出てきたToken IDの実体はなんでしょうか?

Token IDの実体はただの整数値です。1とか2とか3とか…。

つまり、一般的なイメージとしてあるNFTアートなどの画像データは全く紐づいていません。

ERC721では、Token IDにメタデータを付与することも規格しています。

メタデータにはいくつかの種類があるのですが、その中でも Token URI が画像や動画の紐付けに役立っています

Token URIが画像などの情報への鍵


Token IDに紐づくToken URIとは、詳細なメタデータを表すJSONデータが格納されたアドレスのようなものです。

具体的には、

https://example.com/metadata.json

のようなURLが代表的な Token URI の一つです。

ここまでの話をイラストにまとめると以下の通り。

Token ID/Token URI/Metadataの関係イメージ


OpenSeaでToken URIの中身を見てみよう


具体的にNFTアートの例を見てみましょう!

有名なNFTアートのマーケットプレイスである、OpenSeaで適当なNFTアートを選んでみました。

今回はこちらのNFTを題材に使います。

適当に選んだOpenSeaのNFTアート

少し下にスクロールすると、「Detail」という欄があるので確認します。

Detailの中身

コントラクトアドレスやToken IDが書いてありますね。

Token URIは、Token IDに紐づいているので、Token IDをコピーしておきます。

次に、「Contract Address」のリンクをクリックします。
すると、Etherscanというサイトが開きます。

Etherscan画面

上の画像の、赤丸をつけたところをクリックすると、今回のNFTを管理しているスマートコントラクトの中身を見ることができます。


Read Contract

次に、上画像のように「Read Contract」をクリックします。

すると、スマートコントラクトに対してリクエストを送って必要なデータを読み取ることができる画面に遷移します。

少し下の方にスクロールすると、

tokenURIの呼び出し結果

上図のように「tokenURI」という欄があり、Token IDを入力することができるので、先ほどコピーしておいた Token IDを入れて「Query」をクリックすれば、Token URIをゲットできます。

今回のケースでは、

https://api.artblocks.io/token/12000036

が、Token URIだったようですね。

実際にこのURLをクリックすると、JSONフォーマットのデータが見れると思います。
これがToken IDに紐づいたメタデータです!

メタデータJSONの中身を見てみる


先ほどのToken URIから取得したメタデータJSONの中から抜粋したものが以下の通りです。

{
	"tokenID": "12000036",
	"name": "Unigrids #36 ",
	"artist": "Zeblocks",
	"description": "Unigrids are collectible digital art pieces 100% stored on the Ethereum blockchain. Each Unigrid consists of 421 individual Pure Javascript generated SVG grids, ensuring each Unigrid is entirely unique. Not only are Unigrids visually unique, but they also hide an ingenious animation and a generated beat to enhance your experience. Unigrids are an experiential piece of art, with a static image for printing, an animation, and companion beat - all generated and stored on the blockchain. You truly need to play around with Unigrids to understand the essence of them. Be sure to hold onto your favorite piece as we will be adding interactive easter eggs for art owners, giveaways, and other engagement with the community.",
	"image": "https://media.artblocks.io/12000036.png",
}

メタデータという通り、NFTの名前や作成者名、Descriptionといった情報が書き込まれています。

これらの情報は、OpenSeaのNFTアートのページに表示される情報に使われてたりします。

中でも重要なのが、「image」という情報。

ここには画像が格納されたアドレスがあり、

https://media.artblocks.io/12000036.png

という、PNG画像ファイルのアドレスが書いてあります。

こちらにアクセスすると、先ほどOpenSeaで見たNFTアートの画像がブラウザに表示されるのが分かると思います。

改ざん可能なNFT


ここまでの話を全てまとめたものがこちら。

NFTの全体像

特に強調したい点は、

  • NFTはToken IDとオーナーウォレットアドレスを紐づける規格である

  • JSONメタデータとNFTアート画像は、ブロックチェーン上に必ずしも置く必要はない

特に後者が重要です。

先ほどの例では、JSONメタデータの置き場所であるToken URIは、httpsで始まるアドレスで、ブロックチェーンではなく普通の従来型のサーバーでした。
さらに、JSONに書いてある「image」情報も同様にhttpsで始まる非ブロックチェーンのサーバーでした。

よって、これらのJSON情報や画像ファイルは後から改ざんすることが可能です。

改ざん不可能というイメージがつきやすいNFTアートですが、実際にはこのようにイメージと異なるケースがあるので注意が必要です。

なぜそうなるかというと、ERC721で規格しているNFTとは、あくまで、

「スマートコントラクト上でのToken IDとオーナーの紐付け」を改ざん不可能にするだけであり、そこに紐づくメタデータなどには言及していません。

ここが勘違いを生みやすいポイントだと思います。

改ざん不可能なオンチェーンNFT


一方、JSONメタデータや画像ファイルもブロックチェーン上で保存しているNFTをオンチェーンNFTと言います。

オンチェーンNFTでは、JSONメタデータも画像ファイルもブロックチェーンで保存しているため、改ざん不可能なNFTとなり、一度購入すれば誰も後から画像ファイルを差し替えたりすることができなくなります。

オンチェーンNFTの方が良いこと尽くめな気もしますが、デメリットとして、ブロックチェーン上に巨大なファイルは置けないので、用途が限られるといった点があります。

そのため、実際はIPFSといった分散型ファイルストレージと組み合わせたりして改ざん不可能性を作り出したりしていますが、その辺はまた別途希望があれば記事にしようと思います。

終わりに


以上、NFTがある種のバズワードになり、聞いたことがない人は少ないと思います。

一方で、イメージが先行して技術的にどういった意味を持ち、NFTアートを買うことが技術的に何を意味しているのかを把握している人は少ないと感じたので今回記事にしてみました。

少しでもお役に立てれば嬉しいです!

「スキ(いいね)」や拡散していただけると今後のモチベーションにもなるので是非よろしくお願いします。

この記事が気に入ったらサポートをしてみませんか?