🦔

NFTに対する技術的な誤解

2022/02/17に公開1

はじめに

「メタバース上の土地は買うべきか」から始まり、NFTの価値は信仰によるものであるとの一連の流れを読み大変感銘を受けた。
kumagiさんのNFTの価値は信仰によるものであるとの指摘も、sasakiさんの自分の興味からNFTを買った話も、どちらも私個人としては理解できる話であった。

一連の議論のリンクは貼っておくので、詳しく知りたい方は見てほしい。

NFTとメタバースについて思うこと
空想のNFTと現実のNFT
Re: 空想のNFTと現実のNFT
Re: Re: 空想のNFTと現実のNFT
Re: Re: Re: 空想のNFTと現実のNFT

さて、これらの議論に対するtwitterをはじめとするSNSのコメントを見ると、技術的に誤った情報の配布や誤解を生みかねない表現を使ってNFTの価値について語っている人が想像以上に多く感じた。
ブロックチェーンやNFTは新しい技術分野であるため、おそらく本人は偽情報を普及させている自覚はなく、自分が感じているNFTの素晴らしさについて語っているのかもしれない。なぜなら、それらの情報は全て誤っているわけではなく、断片的にはあっているが部分部分で歪んでいたりするため、伝言ゲームの過程で元の趣旨からずれてしまったのだと思われる。
このままでは悪貨は良貨を駆逐する事態になりかねないと思い、本書でNFTとは何か、何ができて、何ができないのか、目指している世界観は何なのかについて記していきたいと思う。

この記事では、NFTに価値があるか、値段がどうなのかについて一切議論するつもりはない。あくまで技術的にどうなのかの観点に絞って解説していく。

Q&A形式でまとめるので、気になる部分だけチェックしてほしい。

筆者について

筆者は長年ブロックチェーンのエンジニアとして活動している。ピザがビットコインで買われたころに自宅でマイニングをしていたこともあるし、CryptoKittiesの頃からNFTも持っている。
エンジニアとして技術的に面白いというモチベーションで活動しているため、暗号資産の売買はしないし、NFTアートやGameFiのNFTに価値があるのかについての議論は興味がない。CryptoPunksは興味がないので買わないが、CryptoZombiesとMyCryptoHerosはプレイしている。

前提として

NFTに限らずブロックチェーン技術はユースケースによっても得意不得意が変わってくるものである。
前提においた事柄について当てはまる事象が他のユースケースでは当てはまらないことはよくある。
NFTについて議論するにあたっては、前提となるユースケースとその目的を明確にすることが大事であることを念頭に置いてほしい。
先のブログのように「メタバースの土地とNFT」をテーマにしているのに、「アートやゲームのユースケースではこうだ!!」と主張しても意味がないのである。

本題

あるデータの希少性をNFTで保証することはできるのか

NFTというのは、あるスマートコントラクトの中で一つだけ存在するトークン(識別子)である。
ここでのユースケースとしては、あるデータをデジタルな画像と仮定する。

希少性

その前に、希少性について定義しよう。
wikipediaにはこのように定義されている

希少性(きしょうせい、英: Scarcity)は、欲望される量に比べて利用可能な量が少ない状態をいう。
https://ja.wikipedia.org/wiki/希少性

冒頭で紹介したブログでも語られていた「α版ブラックロータス」を希少性の代表例としよう。
世界に存在する個数は限られており、MtGをプレイするユーザーにとっては需要がある。しかし需要より存在する量が少ない状態であるため、希少性の条件は満たしている。

さて、NFTではα版ブラックロータスの希少性を忠実に再現することができるのだろうか。

オンチェーンに記録する場合

ブロックチェーンに記録できる容量は極端に小さいた。バイナリ形式で小さな画像を埋め込むことはできるが、高画質な画像データは向いていない。
仮に画像圧縮の技術が高度にするみ、低容量でも「α版ブラックロータス」の画像をブロックチェーンに記録できたと仮定しよう。

仮定によりめでたくNFTにすることができたが、本当に希少性の条件を満たしているのだろうか。

答えは否である。

NFTに記録したのは、とあるブロックチェーンネットワークの、とあるスマートコントラクトに記録したに過ぎない。
スマートコントラクトの中ではユニークであることは証明できるが、他のスマートコントラクトにも「α版ブラックロータス」のデータが含まれていないことは証明ができない。

当然ながら異なるブロックチェーンネットワークに「αブラックロータス」が含まれないことを証明するのは技術的に不可能である。

ただし、制約をつければ可能となる。
「α版ブラックロータス」のデータは、「ブロックチェーンネットワークAのスマートコントラクト0xaaaaaaaにだけ存在する」と発行元が宣言すれば良い。そうすれば他に存在するものは偽物と見做すことができる。
あくまで偽物と「みなす」だけであり、同一の画像データはブロックチェーン上に存在するため、何を本物とするかは受けて側の信仰心次第である。

オフチェーンに記録する場合

オフチェーンに記録する場合はどうだろうか。
オフチェーンとは、IPFSのような分散型ストレージや、どこかの企業のファイルサーバと仮定する。
どちらにせよ、デジタルデータであるためコピーは容易であることは間違いない。

NFTで保証することができるのは、「このトークンが示すデータはのハッシュ値はxxxxxxである」「このトークンが示すデータは指定したURLの先にある」のどちらかである(両方の条件を満たすNFTを実装しても良い)。

ハッシュ値の場合はどこにデータが存在するかは考慮しないため、インターネットの画像検索にヒットして誰でも見れる状態であっても、当該画像はトークンの所有者から見たらどこに保存されていても同じハッシュ値を持つデータであれば本物であるとみなせるだろう。

URLのパターンはゲームでよく使われる。レベルアップしたらキャラクターの画像が豪華になるといえば想像がつくだろうか。URLが指し示す先のデータがなんであれ、トークンが指し示す先は常に本物とみなせるだろう。

しかしどちらのケースでも、コピーが地球上に山ほど存在する可能性は忘れてはいけない。

こちらのケースでもオンチェーンの場合と同様の理由で、他のブロックチェーンネットワークや、他のスマートコントラクトにデータが保存されていないことは証明できていない。

どうしたら希少性を持たせられるのか

NFTがあれば○○ができるなどの方法で需要を発生させ、需要に対して発行数を制限することで希少性を持たせることができる。
例えばゲーム用途であれば、画像データのコピーが可能であってもトークンを持っていなければゲーム内で使用できない。ゲームで使用したい需要と供給量が少ないことの両方を満たせれば、希少性の条件は満たすだろう。
ライブチケットのNFTも会場でしか使用できないと制約をつけることで希少性を演出できるだろう。ライブ会場の収容可能人数は有限だ。
アート用途であれば....申し訳ない、知識が足りずいいアイディアが浮かばない。誰かいいやり方があれば教えてほしい。

ただ、よく考えてほしい。希少性だけが目的であれば、発行枚数を公開することを前提とした従来通りのDBでも良くないだろうか...?
例えば、株式も発行枚数が定義されており、誰が何枚持っているかは株主名簿で確認できる。
MMORPGでもソシャゲのガチャもアイテムの出現率を公表することで希少性を演出できているだろう。
ライブのチケットも人気の公演は需要と供給の差による希少性によってプレミアが付くこともあるだろう。
どれもブロックチェーンは使われていないのである。

希少性だけが目的であれば、Why NFTである...

まとめ

NFTは地球上で唯一であることは保証できない。
保証できるのは、あるブロックチェーンネットワークの中にある、あるスマートコントラクトの中だけでユニークであることだけ。

NFTは非中央集権なのだろうか

非中央集権とは...?

そもそも非中央集権とはなんだろうか。

非中央集権
Decentralized
意思決定を下す主体が存在せず、集合知や多数決で意思が決定されるモデルのこと。

https://bitbank.cc/glossary/decentralized

ブロックチェーンに書き込んだデータは変更できないのは共通認識だと思うが、スマートコントラクトも一度デプロイしたら変更できないと思っていないだろうか。バグがあったら直せないと思っていないだろうか。

スマートコントラクトにバグが発生した際に修正ができるように、アップデート用の裏口を用意するのはブロックチェーン界隈では当たり前の実装になってきている。

このアップグレード作業を行うのはスマートコントラクトの開発者である。
開発者の意思によってプログラムロジックの変更が可能であることを非中央集権と呼ぶことはできないだろう。

とは言ったものの、最近では分散組織(DAO)では、このプログラムの修正も投票によって行うことが増えてきている。
いわゆるガバナンストークンという分野である。意思決定のフェーズを不特定多数に委ねることによって集合知や多数決で意思決定がされることになると、非中央集権と呼んでもいいかもしれない。

しかし、これで完璧に非中央集権であると自信を持って言えるだろうか。
仮に開発者が90%の投票権を持っていたらどうだろうか。51%ではどうだろう。 30%ではどうだろう。
それでも非中央集権と言えるだろうか。
ここから先は哲学的な世界になるため筆者では知識不足であるため、問題提起だけして終わらせようと思う。

別の観点からも見てみよう。
NFTを発行できるのは誰なのだろうか。たいていの場合はそのデータを持つ誰かである。
その誰かの意思決定によって発行量がコントロールされているため、中央集権による運営と考えて良いだろう。
「α版ブラックロータス」を多数決によって増刷が決定できれば、非中央集権と言っても良いかもしれない。(希少性は減るだろうが..)

まとめ

ブロックチェーンのインフラ部分は非中央集権だが、その上で動くスマートコントラクトは中央集権である。
ほとんどのNFTに関しては、DAOのようなガバナンストークンを用いた非中央集権的な運用はされていないのが現状である。

NFTのデータは永続的に保存されるのか

オンチェーンの場合は、保存したブロックチェーンネットワークが維持され続ける限り保存され続けると思って間違いない。
しかし、オフチェーンの場合は、トークンは存在してもトークンが指し示す先のデータは消失することは十分にありえる。

その理由を具体的に解説しよう。

IPFSに保存する場合

IPFSが永続的に保存できない理由はこちらで詳しく解説されているので見てほしい。
https://spotlight.soy/detail?article_id=eixemg1jt

要約すると、IPFSはキャッシュのようなものなので、みんなが頻繁にアクセスするデータであればキャッシュは残り続ける。しかし、アクセスが一定期間なくなると、IPFSのネットワークからデータが消失してしまう。

タダで永続的に保存するなんて都合の良いサービスは存在しないのである。

対処方法として、IPFSから該当のデータが消失した場合、同じハッシュ値を持つデータを再度アップロードすれば復活する。

同じ筆者が具体的な対処方法を記載していますので、こちらも参照してみてください。
https://spotlight.soy/detail?article_id=100gslmyy

再度アップロードすれば復活することから、IPFSが現状好まれているのは技術的な観点から見ても納得がいく。

クラウドストレージに保存する場合

NFT的にはデータの保存場所のURLが記録されており、必要であれば変更されていないことを証明するためのコンテンツのハッシュ値が記録されていれば、保存先はどこでも良い。
OneDriveやGoodleDriveのようなクラウドストレージでも問題ないでしょう。

注意しなければならないのは、あくまでNFTを持っているに過ぎないため、データが保存されているクラウドストレージの権限は持っていないのである。

つまり、クラウドストレージの持ち主が「データ容量がいっぱいだから使ってないファイル消しちゃえ」みたいなことをすると、データにアクセスはできなくなる。仮にデータのDLを事前にしておき、クラウドストレージのデータが消失したとしても、手元にデータが残っているから問題なしとはできない。

なぜなら、NFTが指し示す先は手元のファイルではなく、クラウドストレージのURLを指し示し続けているだろう。

オンプレミスのストレージに保存する場合

NFT発行元企業のストレージに保存されている場合も十分にあり得るだろう。
当然のことながら、その企業がストレージを未来永劫残し続けてくれるとは限らない。
場合によってはIT機器の老朽化で解体することもあれば、事業撤退によって廃棄されることもあるだろう。
バックアップを手元に残すことは大事であることはNFTであろうと、従来のデジタルコンテンツの販売マーケットであっても一緒である。

まとめ

オンチェーンであれば、ブロックチェーンネットワークが存在し続ける限りデータは残り続ける。

オフチェーンの場合は、NFTはトークンそのものの永続性は保証するが、トークンが指し示す先のデータの永続性は保証していない。バックアップは必ず取りましょう。

本物を重視するNFT界隈にとって、バックアップデータは本物なのか、偽物なのか興味深いところではあるが、哲学的な議論になりそうなのでここでは触れないでおくこととする。

相互運用性

NFTであれば他のゲームやメタバースで相互乗り入れができるようになるという主張に対しては、一部は正しくて、一部は正しくないと感じている。

kumagiさんのブログで主張されているように、乗り入れられる側に受け入れてくれるよう実装してもらう必要があるのは正しいと思うし、ゲームバランスが崩壊するからやりたくないという意見も理解できる。
自社のゲーム同士の連携であれば、自社内でインターフェースを決めて実装するのが一番低コストだろうとも当然思う。そのインターフェースが独自実装なのか、NFTの規格を使うのかは正直ユーザーからしたらわからない部分であるため好きにすると良い。

ちなみにブロックチェーンに何かが置いてあっても第三者がそれをもってして所有と認めてくれるかは完全に相手次第で、サービス終了後でもアイテムやキャラクターを別のゲームに乗り入れ可能というのは完全に自分勝手な妄想であり自分がゲーム製作者なら無制限にゲームバランスや世界観を壊しかねない他所のゲームの要素の乗り入れは認めない。自社ゲーム間での乗り入れならブロックチェーンではなく自社のデータベースでやったら良いのだし、そういうゲーム会社を非難するなら単に同じ宗教(ブロックチェーン)を信仰してくれない相手に宗教戦争を仕掛けているに過ぎずどこにも正義はない。

しかし、ゲームバランスを損なわない程度の連携であればどうだろうか。例えば、ゲーム内の自室のデコレーションやアバターの装飾程度であればどうだろうか。

ゲームやメタバースの自室に他ゲームで取得したトロフィーを飾っても良いし、壁に好きなアーティストの絵を貼ってオリジナリティ溢れる部屋を作っても良いだろう。
その際に発生するコストは、「NFTのインターフェースで取得可能であること」「拡張子はxxxと.jpexに限る」と制約をつけた上で、既存の部屋のカスタマイズの機能と連携する機構だけである。
ゼロから他社とインターフェースと規格のすり合わせに何ヶ月も調整するよりも圧倒的に楽である。

ここで伝えたいことは、「ブロックチェーンのインフラで実装していれば多少の手間をかければできる」ことと、「各社で規格のすり合わせに何ヶ月もかければ技術的に可能」ではとても大きな壁があるということだ。

(jpeg画像のURLを読み込めるように実装する方が楽なのでは...?とツッコんではいけない...)

まとめ

相互連携は受け入れる側が、受け入れるための実装をする必要がある。
実装をするための共通インターフェースをNFTとするのか、業界で調整して決めるのかは各サービス開発者がそれぞれで決めれば良い。

「ブロックチェーンのインフラで実装していれば多少の手間をかければできる」ことと、「各社で規格のすり合わせに何ヶ月もかければ技術的に可能」ではとても大きな壁があることは認識してほしい。

NFTは複製できないのだろうか

どこまでの範囲をNFTとみなすかによるだろう。

NFTが指し示すオフチェーンのデータであれば複製は容易だ。例えばCryptoPunksの画像データは誰でも閲覧可能な状態になっており、右クリックする程度の労力で手元のPCに複製ができるだろう。

複製できないのは、トークン(識別子)そのものだけである、つまり、あるスマートコントラクト上で定義されたTokenを同一スマートコントラクト上にコピーすることはできないだけである。

ちなみに同一の参照先を示す別のトークン(識別子)を作ることはできる。
同一のスマートコントラクトに存在するTokenAとTokenBが同一の画像を参照する形は問題なく実装できる。

たいていの場合はNFTをmintする権限はNFTの作者のみに限定されているため、我々がCryptoPunksのスマートコントラクトのトークンをコピーして増やせるわけではないが、このようなNFTを数量がN個に限定されているとみなすか、シリアル番号付きコピーが複数あるとみなすか、ただのコピーだとみなすかは、各自の認識によるだろう。

さいごに

巷に蔓延っている怪しい言説があれば教えてほしい。このブログに解説を追記していこうと思う。

Discussion

TFTF

有益な情報をありがとうございます。純粋に質問(よく知らないので)なのですが、スマートコントラクトのバックドアーとはプロキシーのことでしょうか?
https://blog.openzeppelin.com/proxy-patterns/
NFTなどもプロキシーパターンでmintされているということでしょうか?
重ねて純粋に質問です。