NRIネットコム Blog

NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

NFT取引の仕組みを技術的に理解する

本記事は NRIネットコム Advent Calendar 2022 9日目の記事です。
🎁 8日目 ▶▶本記事 ▶▶ 10日目 🎄

はじめに

昨今、デジタル資産の非代替性及びその所有権を保証するために、NFTと呼ばれるトークンが活用されています。NFTを利用した様々なサービスがローンチされていますが、いざその仕組みついて技術的な理解を深めようといろいろ調べてみても、なかなか体系的な理解が得られませんでした。調べ方もあると思いますが、やはりブロックチェーン関連技術は技術的な側面より資産的な側面がフィーチャーされやすく、そもそも技術的に中身を解説した情報が見つかりにくいというのも関係していると思います。

そこでこの記事では、NFTマーケットプレイスを例にNFT取引の技術的な構成について基本を整理してみました。実際にはここで説明すること以外にも、セキュリティなど様々な観点で設計が必要な点はありますが、NFT取引を実現する基本的な構成は理解できる内容になっているかと思います。

NFTとは

NFT取引の中身を見ていく前に、まずNFTとはどういうものか抑えておきます。NFTとはNon-Fungible Tokenの略で、日本語では非代替性トークンと呼ばれています。非代替性とは、全く同じものが存在せず替えが効かないということであり、別のコインや資産などで代替できない性質を表します。

このNFTを特定のデジタル資産に紐づけることで、そのデジタル資産自体にNFTが持つ非代替性を付与することができます。また、この仕組みをブロックチェーンで実現することで、ブロックチェーンが持つ情報の透明性や改ざん耐性といった性質を継承することができます。

NFTについては以下の記事でも解説されているので、詳しく知りたい方は見てみてください。 tech.nri-net.com

NFT取引の全体像

NFT取引の概念図を表すと下図のようになります。ブロックチェーンにはEthereumを採用した例です。デジタル資産を生み出したユーザ(Owner)とそれを売買するユーザが2人いて、売買するためのマーケットプレイスとそのServer/DBがあり、デジタル資産の所有権の管理にEthereumブロックチェーンを使った構成となります。

NFT取引の技術的構成

それでは、上図をトピックごとに切り出して順番に見ていこうと思います。

アカウント発行

まずはマーケットプレイス上でのアカウント発行について考えていきます。

基本的には一般的なアプリケーションと同様ですが、アカウント情報にEOA Addressを紐づけておくことが特徴的です。EOAとは簡単に言うとEthereum上のユーザアカウントを指しており、EOA AddressとはEthereum上のアカウント情報への識別子を指しています。つまり、マーケットプレイス上のアカウントIDとEthereum上のアカウントIDを紐づけて発行・保管しておくということになります。

デジタル資産の登録

次に、マーケットプレイスにアップロードしたデジタル資産に、どのように所有権が付与されるのか考えていきます。

マーケットプレイスにアップロードされたデジタル資産はオリジナルとしてサーバーに保存し、そのメタ情報をEthereumネットワーク上に構成されるIPFS(P2Pの分散型ファイルシステム)上に作成します。メタ情報には、デジタル資産のIDやタイトル、説明、保管先URLなどをJSON形式で記録しておきます。特徴的なのは、デジタル資産のオリジナルデータ自体はEthereumとは異なるサーバー上に保存しておき、Ethereumで一度のトランザクションで書き込めるデータ容量とそれに比例して発生するトランザクション手数料の問題を回避しているところです。ちなみに、オリジナルデータ自体をブロックチェーンに書き込む設計も存在し、「フルオンチェーンNFT」と呼ばれます。

そして、Ethereum上にNFTを発行することで、デジタル資産の所有者をブロックチェーン上に書き込みます。NFTの中身をそれ自体のID、デジタル資産のメタデータへの参照、所有者のEOA AddressOwner Address)とすることで、メタデータから参照できるデジタル資産の所有者はOwner Addressであると表現しています。このOwner Addressは前述した通りマーケットプレイス上のアカウントIDと紐づいているので、最終的な所有権を持っているアカウントを特定することができます。

また、NFTの操作はスマートコントラクトと呼ばれるEthereum上で動作するプログラムを通して行います。NFTの操作を実現するスマートコントラクトにはERC-721という標準規格が存在しており、基本的にはこれに準拠するようにプログラムを実装します。例えば、この標準規格ではownerOf() - 指定したNFTのOwner Addressを取得するであったり、transferFrom() - 指定したNFTの所有権を移動するといったインタフェースが定義されています。balanceOf() - 指定したOwner Addressが所有するNFTの数を取得するtokenOfOwnerByIndex() - 指定したOwner Addressが所有するN番目のNFTを取得するを組み合わせれば、あるアカウントが所有するすべてのNFTの情報を取得するという操作もできそうですね。

eips.ethereum.org

デジタル資産の売買

最後に、デジタル資産の所有権の移動について考えていきます。

行っていることは非常にシンプルで、マーケットプレイス上でデジタル資産の売買が成立したら、NFT上に記録されているOwner Addressを購入者のEOA Addressにスマートコントラクトを通して書き換えるだけです。

おわり

今回はNFTマーケットプレイスを例にNFT取引の技術的な構成について整理してみました。割りとシンプルな仕組みで実現されていることが確認できたのではないかなと思います。

また、NFTはメタバースと関連して取り上げられることも多い言葉ですよね。メタバースとはコンピュータネットワーク上の仮想空間のことで、現実とは異なるもう一つの世界を構築しています。現実でモノを作ればそれは必然的に唯一無二なものになりますが、仮想空間でモノを作ってもそれが唯一無二であるとは保証されません。そこで、NFTというデジタル資産に非代替性を付与することができる技術を利用し、現実と同じようにモノを作ればそれはその仮想空間において唯一のものであることが保証できるようになるんですね。NFTとその土台にあるブロックチェーン技術がメタバースを支える重要な要素技術の一つであることが理解できました。

執筆者岩崎 聖夜

モバイルアプリ開発者です。AWSでデータ分析基盤を作ったりもしています。