blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2022.02.17 技術記事

PLAYBACK9などNFTのコンテンツ保護に期待される分散型ストレージのはなし

by Fumitoshi Ogata

#playback9 #nft #blockchain #ipfs #storage

PLAYBACK9

はじめに

技術開発室の緒方です。DeNAでは2018年から先端技術専門のR&D組織が設置されて以来、ブロックチェーン技術の研究開発を行っています。昨年はブロックチェーン技術を利用したNFTが注目を集めており、DeNAからも、PLAYBACK9というNFTアプリケーションをローンチしました。

PLAYBACK9を通じて、ユーザーは、横浜DeNAベイスターズの試合の切り抜き動画をトレーディングカードとして、自身のWalletの中で管理することや、友達同士でカードを交換することができます。短い動画の切り抜きは、モーメントとも呼ばれますが、このような動画NFTは、カナダのDapper Labs社がNBA選手のプレー中の動画をトレーディングカードにした「NBA Top Shot」をきっかけに、注目を集め、類似の事例が続々と登場しています。

NFTはブロックチェーンの分散化されたデータベースに管理されることで、管理者がいなくても永続的にデータが保管されると期待されているものの実際にはアセットやコンテンツの保管自体はブロックチェーン単体では難しく、特に動画などの大きなサイズのものを扱う場合には、そのストレージの管理については大きな悩みの種となっています。

様々な議論の中で、今現在、PLYABACK9のNFTの発行はLINEBlockchainを利用していますが動画ファイルを含むコンテンツ自体は、自社ストレージの上で管理しており、分散化されているわけではありません。しかしながら、近い将来、P2Pのファイルサーバーに移管することも視野にいれて研究を進めており、今回はNFTのコンテンツをどのように管理すべきかということについて、分散型ファイルシステムのテクノロジーを紹介しながら、その可能性について書いてみたいと思います。

昨年の12月に行われたGDM(Game Developers Meeting)で登壇した際の、“PLAYBACK9とブロックチェーン技術について"の中身と一部重複するところがありますが、ご容赦ください。

ブロックチェーンとファイルサイズの議論

Bitcoinのファイルサイズは日に日に増加しており、最近では、380GBを超えました。Bitcoinのトランザクションの量は非常に速い速度で今もなお成長を続けています。
https://www.blockchain.com/charts/blocks-size

これはBitcoinだけではなく、Ethereumなど他のチェーンでも同様のことが起きています。
https://ycharts.com/indicators/ethereum_chain_full_sync_data_size

NFTを検討しているチームから、ブロックチェーン上に大きなファイルサイズのものを載せるにはどうすればよいか?と問い合わせを受ける機会が非常に多くあります。しかしながら、ブロックチェーンで管理されるコントラクトや、コンテンツのファイルサイズは制限されていて、大きなファイルサイズのものを管理することには向いていません。その理由はブロックチェーンは、分散化というテーマ、コンセプトがあるからです。分散型システムとして、個人がネットワークのフルノードを実行できる限り、ブロックチェーンのネットワークは安全であるという考えが根底にあります。ネットワークが健全であるのか、誰もが検証するための、スペック要件が不合理なものではないことは、分散化システムを考える際に、非常に重要な要素であると考えられます。このようなことは、ブロックチェーンのトリレンマといわれることもありますが、すべてのことをチェーンだけで解決できないため、大きなファイルサイズのものを保管するケースにおいては、IPFSやSwarmと呼ばれる分散型ファイルシステムを併用するケースが一般的です。

IPFSとは

IPFS(InterPlanetary File System)は Protocol Labsにより開発が進められている分散化されたファイルシステムです。HTTPはロケーション指向型プロトコルといわれ、サーバーの管理者に対しては大きな負担が伴います。一方で、IPFSはコンテンツ指向型プロトコルとよばれ、ネットワーク上に分散したストレージにバラバラに保存された"断片"を、特定のハッシュ値を指定することで、つなぎ合わせることで、元のファイルが、復元されるような構造になっています。

簡単にIPFSの仕組みを試す手順を紹介します。IPFSでは同一コンテンツは、同じハッシュのチャンクを持っています。ここではHelloWorldというようなごくありふれた文字列を登録するケースを考えてみます。まずはipfsのdaemonを実行することでコンピューター上にnodeが立ち上がり、複数のネットワークと接続されます。コンテンツをaddコマンドで実行することで、HelloWorldを表現するハッシュが取得されます。$ipfs dht findprovsというコマンドで、取得されたハッシュを検索することで、すでにこのコンテンツを保持しているnodeの一覧を知ることができます。HelloWorldはごくありふれたコンテンツであることから、既に数多くのnodeでコンテンツを引くことができます。

$ ipfs daemon

$ echo "Hello World" > hello.txt
>added QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u hello.txt

$ ipfs dht findprovs QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u
>12D3KooWKrB93pwXDdeyz2WRMwcSBny5ECjA1JasB4GTo4ijUUtf
>12D3KooWBqXURGrk6gtc2Vsdi2DnJDxgpWJopDTCRjV3RADtnfy2

さらに、IPFSのプロトコル自体は、Braveなどのブラウザなどでしか対応していないため、通常のブラウザで引くには、IPFSが立てているGatewayなどで確認することもできます。
https://ipfs.io/ipfs/QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u

どのロケーションから取得しても、同じハッシュをもつコンテンツは同一性を担保するため、ひとつのサーバーに障害がおきても、複数のnodeでコンテンツは維持され続けることがこの事例によって理解できます。 IPFSは様々なNFTマーケットで既にコンテンツの管理のためのテクノロジーとして既に利用されています。例えば、Raribleなどで商品を作成した時のコントラクトをみることで、IPFSが利用されていることを知ることができます。
https://etherscan.io/address/0xd07dc4262bcdbf85190c01c996b4c06a461d2430#readContract

私がRaribleで作成した実験用のID666790のアイテムがありますが、このページのcontract addressから、ReadContractにいき、URIに、IDのナンバーである666790と入力してみると

string : ipfs://ipfs/Qmaet1sAFK2cBQqza7DV2CR6LwwSg1jYBa1yUxmALKWdKk

のようにIPFSのドメインが取得されてくることがわかります。

IPFSとコンテンツのGC

IPFSに保管したコンテンツが全て永続化されるかというと残念ながらそういうわけではありません。その理由はGC(ガーベージコレクション)が存在していて、nodeの中で定期的にリセットされてしまうからです。

$ ipfs repo gc

というコマンドでキャッシュされたコンテンツはGCされてしまいます。GCされずに残すためには、

$ ipfs pin add $HASH_CHUNK

という形でピン留めという作業をする必要があります。ピン留めをすると当然、ストレージを占有してしまうため、一定のコストが必要となります。

それはすべてのnodeにいえることで、コンテンツを維持していくためには、filecoinに代表されるような報酬体系が必要となります。ピン留めのサービスもInfuraや、Pinata、Axelなど数多く存在しています。つまりNFTのコンテンツの永続化には、nodeの維持が必要であり、仮に運用者がサービスを終了した際には、彼らがnodeを維持することは期待できません。参考までに、あるNFTのマーケットでは、IPFSに保管された画像については規約において保証されないとしている例もあります。

(例) >but Rarible Company cannot guarantee continued operation of such IPFS node or the integrity and persistence of data on IPFS.
https://static.rarible.com/terms.pdf

ここまで読むと、S3をはじめとする通常のファイルサーバーと本質的には変わらないのではないかと思われるかもしれませんが、非常に興味深い事例があります。昨年末、HEN( Hic Et Nunc )というマーケットの閉鎖が突然、発表されました。HEN自体はTezosチェーンで作られており、NFT自体は、ブロックチェーン上に存在していますが、そのコンテンツ(アセット)はIPFSを使っていましたがここに置かれているコンテンツは失われてしまうのではないかと思われていました。そのような中、ClubNFTという企業が、HENの保持する50万点以上のHENのNFTのコンテンツのすべてのピン留めを代行することを発表し、大きな注目を集めました。
ClubNFT Agrees to Pay to Pin All NFT Content From Discontinued Hic et Nunc Marketplace — ClubNFT I started ClubNFT to help collectors protect their NFT artwor www.clubnft.com

ピン留め自体は集中管理されるため、運用者がいなくなってしまった場合、今後もコンテンツは危険にさらされることになります。そのため、さらに進んだ議論としては、非中央集権的なIPFSのピン留めをテーマとしているサービスや、Arweaveのように「Pay once, Store forever」という永続化をテーマとしているファイルストレージなどもあり、今後も様々な解決策が考案されていくことが期待されています。
https://medium.com/aleph-im/pioneering-decentralized-ipfs-pinning-services-fe31d9d5817b

ProcessingによるジェネラティブアートNFT

コンテンツの保持、永続化という意味で、まったく別の視点から実現させている事例があります。それは、NFTのジェネラティブアートに代表される事例です。ArtBlocksといわれるジェネラティブアートのプラットフォームなどが有名です。ジェネラティブアートの中では、Processingといわれるプログラミング言語などによって実装されているケースがあります。どういうものか理解しにくい方は、有名なライフゲームなどをイメージするとわかりやすいかもしれません。
https://processing.org/examples/gameoflife.html

このような仕組みが注目された理由の一つとしては、すべてのコンテンツをファイルストレージを使わずに、ブロックチェーン上で管理できることにあります。高解像度のデータを保管するには多大なコストがかかりますが、Processingによるジェネラティブアートでは、アートを描画する関数、方程式を保管するだけでよく、データ量を抑えた上で、様々なビジュアル上の表現をつくることができます。フルオンチェーンという言葉も聞かれるようになりましたが、コンテンツ自体をチェーンに配置することができればチェーン自体が存在する限り、コンテンツを維持することができるというメリットがあります。

アート作品などは特に、重要な文化財レベルのものであれば、長い年月を通じて維持され続ける必要があり、途中で管理者がいなくなることによって、作品自体がなくなってしまうようなことは避けなければなりません。その点、Processingによるジェネラティブアートのように一定のルールによって、オンチェーンでコンテンツを維持させるというアイデアは非常に面白いと思います。一方で、動画のようなファイルサイズの大きいものは、このような手法は難しく、どちらかというと、コンテンツそのものをチェーンに保管するのではなく、コンテンツは個々に保管され、ビデオファイルに埋め込まれたcodecのように、トレーサビリティやフェアトレードの文脈としての応用技術として利用されていくのではないかという見方もあります。

Conclusion

NFTのコンテンツはいまだに中央集権的なストレージに管理されていたり、様々な事情によってコンテンツが失われるケースが多くあります。たとえば、アーティストがNFTに紐づけられた画像を自らカーペットの写真に変更してしまった事例などもありますが、高額なデジタルコンテンツが後に無価値なものになってしまうことは大きな問題です。
https://twitter.com/neitherconfirm/status/1369285946198396928

冒頭で記載した通り、PLAYBACK9はコンテンツ管理のために、分散サーバーの導入には至っていません。この理由の一つは、NFTコンテンツの保護やサービスクローズ時のあり方について、ビジネスやテクノロジー面において、どうすべきか、どうあるべきか、未だ、議論の中にある項目が多くあるからです。突然、盛り上がりをみせたNFTに対して、多くの人がブロックチェーンでつくられたアプリケーションに求める期待値と、テクノロジーが実現できることにはまだ大きな隔たりがあります。さらに我々が主に対象とするユーザーは投資家や技術に詳しい人ばかりというわけではありません。あくまでサービスを主軸として、何が一番重要であるか、日々議論を行って取捨選択をしています。ただ、コンピューターの歴史は数十年の積み重ねがあるのに対して、ブロックチェーン技術は僅かな年数で急速に普及したテクノロジーであることを忘れてはなりません。そのため、今後、我々がPLAYBACK9をはじめ、実サービスでのユースケースを通じて、基盤技術の協力のもとで、それらをより良いものに発展させていく必要があると思っています。新しいデジタルコンテンツを切り開くための足掛かりとして、今後も様々なプロダクトに得られた知見を活かしていきたいと思っています。

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。