NFTの仕組み
目次
- はじめに
- コントラクト
(1) コントラクトとは
(2) コントラクトの挙動 - メタデータ
(1) メタデータとは何か
(2) メタデータの保存方法 - さいごに
1.はじめに
2021年秋以降、アート、メタバース、会員権など数多くの場面でNFT規格でトークンを発行する機会が増えてきた。NFTは対改ざん性に優れた保有証明技術の提供を通し、デジタルアートの様な物理的に目の前には存在しないコンテンツのユニークな保有者であることを証明できる。個々のデータに対する不可逆な保有権証明の実用例はNFT以前に遍く周知されておらず、そのためNFTは投機軸以外でも大いに議論の余地がある。しかし、NFT化されたデータの保存に関わる解説を行う日本語の文献は少なく、肝心のデータ保存の仕組みは遍く理解されているとは言えない。例えば、NFTは全ての情報をブロックチェーン上に記録していると思われがちだ。だが実際は、多くの場合で画像データはブロックチェーン上には記録されず、資産を制御するためのプログラム(コントラクト)がブロックチェーン上に保存されている。本レポートでは、まずNFTの仕組みの根幹を成すコントラクトについて概説し、その後それぞれのデータがどの様に保存されるのかを記述していく。
2. コントラクト
2.(1) コントラクトとは
まずブロックチェーンにおけるコントラクトは”自動的に資産を制御するプログラム”のことである。1990年代の暗号学者Nick Szaboは以下のように定義している。
"当事者が他の約束事を実行する手順まで含んだ、デジタル形式で規定された一連の約束事"[1]
そのコントラクトの仕組みを活用したのがNFTで、NFTは中央管理者を置かない自律分散的な仕組みで運営されており、全ての状態変化をコントラクトによって自動的に制御している。コントラクトは中央に管理組織を伴わずに全自動で複数者間の資産移動を完了させるため、スマート(賢い)・コントラクトと呼称されることも多い。例えば、以下の動作は全てスマート・コントラクトによって自動的に実行される。
- 発行上限設定:NFTの最大発行枚数を制限。上限に達した場合、自動で新規発行を停止する。
- NFTの販売:NFTの販売金額が振り込まれたら、購入者のWalletに自動でNFTを送付する。
- NFTの転送:転送したいNFTを保有しているウォレット上で、資産移動に関わるコントラクトを承認することで、転送先のウォレットに自分が保有するNFTを転送できる。
- NFT販売金額/NFT購入ウォレットの指定:NFTの販売金額を定めたり、NFTを購入できるウォレットを指定(ホワイトリストセール)したりできる。
- 2次流通市場への出品:販売対象のNFTに対する、2次流通市場のコントラクトのアクセス権を承認することで、NFTを2次流通市場に販売することができる。
- メタデータの格納先指定:後述のメタデータの格納先もコントラクトで指定する。
なお、コントラクトによって実行されたプログラムは原則として不可逆なプログラムであるため、誤送信等には気を付ける必要がある。
2.(2) コントラクトの挙動
次にNFTの販売プロセスを通じてコントラクトの挙動を確認する。
① コントラクトをブロックチェーン上に載せる
NFTのプログラムはERC(イーサリアムコメント要求)という規格で標準化されている。エンジニアはERCをベースとして、総発行量や販売価格などの具体的な条件や、二次流通を自動化させる関数や、ホワイトリストセール等の独自プログラムを追記することもできる。NFTは根幹を成すプログラムを一から構築せず、追加機能も先行する様々な関数群の中から取捨選択をして採用するため、開発工数が小さくなりやすい。こうして発行されたコードは、作成者(主にプロジェクトリーダー)のウォレットを通じ、ブロックチェーン上に刻まれる。ブロックチェーン上にコードを提出することをデプロイと言う。
② NFTを販売する
NFTの販売フローもコントラクトを通し自動化される。まず、コントラクトにNFTの販売価額を指定しておく。販売に際し、コントラクトは購入者のウォレットから送られてくる暗号資産の額を確認する。この時に事前にプログラムされた額と同額が届いていれば、その暗号資産を受け取り、その返り値としてNFTを送付する。こうしてNFTの販売と送付が完了する。そして予め定めた発行枚数に到達した場合、それ以降に送られてくる購入希望の情報に対してはエラーを返し、暗号資産を徴収しない。
③ NFTの販売後
作成者は任意のタイミングで売り上げをデプロイしたウォレットに出金することができる。NFTの売り上げは暗号資産の形でコントラクトに蓄積している。この暗号資産はデプロイを実行した作成者から提出される出金関数を通し、コントラクトからウォレットに移動される。作成者はこの関数を任意のタイミングで実行できる。また、NFTを購入したユーザも今度は2次流通プラットフォーム上にNFTを出品して取引差額で収益を期待できる。この時に出品されるNFTコントラクトが売り上げの一部を作成者に還元するプログラムを組んでいた場合、2次流通が発生する度に収益の一部が製作者に自動送付される。この還元率は2.5~7.5%のレンジであることが多い。この仕組みをロイヤリティという。なお、ロイヤリティとなる暗号資産の送受信の仕組みは以下のようになる。
- 2次流通プラットフォームのコントラクトがNFTの約定を入力値として認識する
- その入力を元に約定金額のX%を作り手に還元する計算を実行する。
1.はNFTの購入に使う暗号資産がインプットとなり、情報のやり取りは購入者と2次流通市場のコントラクト間で実行される。その後、2.で受け取った暗号資産を出品者の取り分とX%の作成者ロイヤリティ、そのほか各2次流通市場が定める手数料に分解し、コントラクトを通し自動的に関係者へ必要な額が送付される。この様にNFTの取引はコントラクトのおかげで、デプロイから2次流通の全ての工程が自動化されており、ここにNFT/ブロックチェーンの革新性がある。
特定のイーサリアム改善提案(EIP)に付されるラベルのこと。EIPとは、Ethereumの新しい機能やプロセスに関する提案を規定する標準規格である。 EIP には技術仕様の変更案が含まれており、Ethereum開発者コミュニティ内での議論を経て公開されることで信頼できる開発ソースの役割を持つ。NFT関連のEIPでは、唯一無二なトークンを発行するEIPにERC-721、NFTにレンタル機能を追加するEIPにはERC-4907というラベルが付されている。
3. メタデータ
一般的なNFTでは、画像や映像などのデータはメタデータと呼ばれる形で管理されている。この章ではメタデータとは何かをまず解説し、その後メタデータの保存方法を紹介する。
3.(1) メタデータとは何か
まずメタデータとはブロックチェーン上に保存されないデータのことである。メタデータの一例は、画像ファイル、NFTの説明書、NFTの属性値(properties)がある。メタデータはコントラクトと表裏一体の概念である。実際に各人が所有する画像や音声などのメタデータは、コントラクトに紐づけられて資産移動が管理される。コントラクトとメタデータの関係を整理すると以下の表になる。
ブロックチェーンにメタデータが保存されない理由は、ブロックチェーンは必ずしも大きな容量を伴うデータの保存に最適な技術ではないからである。ブロックチェーンはコントラクトを通じた自動化による情報の信憑性に対して大きな価値を持つ技術であり、データ自体を保存するにはガス代の観点から効率が悪い。UI上は各プロジェクトによってメタデータの情報が最適に呼び出されて画面上に表示され、コントラクト情報として表示されているデータの移動が明示されている。例えば、下図のNFTは「コントラクト情報」の箇所に7か月前にMint(発行)されて以降新規の記録が無いため、購入者が一度も2時流通市場にNFTを出品せず、保有され続けていることが分かる。
要すれば、NFTの構成要素のうちコントラクトではNFTデータの販売から所有及び2次流通を自動化するプログラムを保存しており、メタデータでは画像や映像等のデータを分散的に管理している。
3.(2) メタデータの保存方法
メタデータは分散型サーバというストレージに保存されるのが一般的である。分散型サーバとは、中央に一つのサーバを立てそこにデータを入れる(図3左)のではなく、ネットワークの参加者に少しづつデータを分散させて内容物を保存する考え方(図3右)である。ブロックチェーン上にメタデータを保存せずとも、分散的な技術を活用する保存媒体を利用することで容量の大きいデータの理想的な保存を実現している。
一般的にメタデータの保存場所として好まれる分散型サーバを2つ紹介する。
3.(2).① IPFS
IPFSはProtocol Labs社によって開発された「コンテンツ志向」のストレージサービスである。IPFSでは、各データに識別IDをつけ、そのIDがOpenseaなどのNFTプラットフォームによって参照される。また、各データはハッシュ関数によって暗号化され、その暗号はデータに変更がある都度に自動更新される。つまり、データを更新するとデータの暗号値も自動的に置き換わり、対改ざん性に非常に強い効果をもたらすのである。悪意のあるユーザがメタデータ自体を改変しても、その記録は確実に残るからである。他方、Google driveのような普段私たちが目にするストレージは、フォルダの中のデータを書き換えてもフォルダ自体のURLに変更は生じない。
3.(2).② Arweave
Arweaveはデータを永久に保存できるようにするためのストレージツールである。保存した情報を、ノードやマイナーと呼ばれるコンピュータのネットワークに分散管理することで機能する。IPFSはボランティア精神で運営される(ノードの容量を提供しデータの分散管理に貢献することに対するインセンティブ設計が存在しない)のに対し、Arweaveではデータ容量の提供者にARトークンという暗号資産が還元される。そのため、半永久的な報酬メカニズムが実装されているArweaveの方が、数百年単位で見た時の耐久性は高くなる。
3.(2).③ メタデータの保存場所の確認方法
メタデータの保存されている場所をコントラクトに記述することで、メタデータとコントラクトの結びつきを不可逆なものにしている。この考え方はブロックチェーンに載っている情報はそのコントラクト作成者のウォレットからでないと変更ができない仕組みを応用したものである。コントラクトのデプロイ前に分散型サーバにメタデータを保存しておき、そのメタデータの位置情報をコンタクトに記載することでブロックチェーン上に刻まれていないデータの対改ざん性も高めることができる。その上で、各人はコントラクトで指定された場所を見て、NFTのメタデータの保管場所を確認したり、メタデータに直接アクセスしたりできる。メタデータはOpenseaからコントラクトを取得し、ブロックチェーンエクスプローラであるetherscan上で「Contracts」→「Read Contract」→「baseTokenURI」の順番に画面を遷移して確認できる。
4. おわりに
本レポートではNFTの仕組みについて、コントラクトとメタデータに切り分けて概説を行った。NFTはデータ保存からスマート・コントラクトに渡る全てをブロックチェーン上に記載しているわけではないが、分散性と親和性の強い技術と適宜組み合わせることで全体的な堅牢性を実現している。この堅牢性に加えて、スマート・コントラクトでNFTの移動を透明性を維持したまま自動化できることがNFTを通して実現する革新的なソリューションの根幹にあると言えよう。
参考文献
[1]:Szabo Nick. “Smart Contracts”. 1994. https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html (accessed 2023-07-09).