NFTはどうやって作られるのか?

 NFT発行(mint)の流れを整理してみる

おつかれさまです。
前回の記事では、NFTを支える技術を「構成」という視点で整理しました。

  • ブロックチェーン
  • スマートコントラクト
  • ウォレット
  • インフラ
  • データ保存

NFTは単一技術ではなく、複数の要素が組み合わさって成り立っています。

ただ、構成が分かってくると、次に気になるのが、
「実際にはどうやってNFTが作られているの?」ではないでしょうか。

今回は、その“動き”の部分を整理してみます。

 

 そもそも「mint(ミント)」とは? 

NFTの世界では、NFTを新しく発行することを「mint(ミント)」と呼びます。

 実際には、 

  • データを準備し
  • スマートコントラクトを実行し
  • ブロックチェーンへ記録する

 という一連の処理を指します。

“mint” は直訳すると「鋳造する」という意味で、コインを作るイメージに近い言葉として使われています。

 

 NFTが作られる流れ 

全体像をかなりシンプルにすると、NFTは次のような流れで作られます。

  1. コンテンツを作る
  2. メタデータを作る
  3. データを保存する
  4. スマートコントラクトを実行する
  5. ブロックチェーンに記録される
  6. ウォレットに紐づく

順番に見ていきます。

 

①  コンテンツを作る 

最初に、NFTとして扱いたいコンテンツを用意します。

例えば、

  • 画像
  • 動画
  • 音楽
  • デジタルアート

などです。

ここで重要なのは、NFTそのものが画像データではないという点です。
NFTは「所有情報」を管理する仕組みであり、画像そのものを持っているわけではありません。 

 

②  メタデータを作る 

次に、NFTの情報をまとめた「メタデータ」を作ります。
一般的には、以下のような情報を JSON形式で作成します。

  • タイトル
  • 説明
  • 画像URL
  • 属性情報
{
 "name": "Future NFT #1",
 "description": "Sample NFT",
 "image": "ipfs://QmXXX...",
 "attributes": [
  {
   "trait_type": "Background",
   "value": "Blue"
  }
 ]
}

OpenSeaなどのマーケットプレイスは、このJSONを読み込んでNFT情報を表示しています。
NFT本体というよりは、「NFTの説明書」のような役割に近いです。

 

③  データを保存する 

作成した画像やメタデータは、どこかに保存する必要があります。
保存先としてよく使われるのは、

  • クラウドストレージ
  • IPFS

などです。

ここでよく誤解されますが、画像データそのものをブロックチェーンに直接保存するケースは多くありません。
理由はシンプルで、コストが高いためです。
そのため実際には、

  • ブロックチェーンには「保存先(URI)」
  • 実データは外部ストレージ

という構成がよく使われます。

 

④  スマートコントラクトを実行する 

ここで登場するのが、前回紹介した「スマートコントラクト」です。
スマートコントラクトは、ブロックチェーン上で動くプログラムです。
NFT発行時には、このプログラムに対して「mint処理」を実行します。

例えば内部では、

  • NFTを発行する
  • tokenIdを採番する
  • 所有者を記録する

といった処理が行われます。

Ethereum系では、Solidityという言語で実装されることが一般的です。

function mint(address to, string memory uri) public {
    uint256 tokenId = nextTokenId++;

    _mint(to, tokenId);

    _setTokenURI(tokenId, uri);
}

 

⑤  ブロックチェーンに記録される 

mint処理が実行されると、その内容がブロックチェーンに記録されます。
記録される情報は主に以下の内容です。

  • 所有者情報
  • tokenId
  • メタデータへの参照先

ここで登場するのが前回紹介したインフラ(RPC)です。
よく利用されるサービスとして Alchemy や Infura があります。
アプリケーションは、これらを経由してブロックチェーンへアクセスしています。

この処理は「トランザクション」と呼ばれます。
また、ブロックチェーンへ書き込む際には「ガス代」と呼ばれる手数料が必要になります。
 通常のWebアプリでは意識しない部分ですが、Web3では重要な概念の一つです。 

 

⑥  ウォレットに紐づく

最後に、発行されたNFTがウォレットと紐づきます。
ウォレットは単なる「保管場所」ではなく、

  • 所有者の証明
  • 操作時の認証

という役割も持っています。
例えばMetaMaskのようなウォレットを使うことで、

  • mint実行
  • NFT確認
  • 売買

などが可能になります。

 ●発行時に裏側で起きていること 

 mint時の内部処理を簡略化すると、以下のイメージです。
 マーケットプレイスは、このイベントなどを監視してNFT情報を取得しています。 

 Wallet署名
  ↓
mint() 呼び出し
  ↓
tokenId発行
  ↓
owner記録
  ↓
tokenURI設定
  ↓
Transferイベント発火 

 

まとめ

NFTは、画像をアップロードするだけで突然生まれるわけではありません。

  • データ保存
  • スマートコントラクト
  • ブロックチェーン記録
  • ウォレット認証

といった複数の処理が連携することで、初めてNFTとして成立します。

前回の記事では「構成」を整理しましたが、今回は「流れ」という視点で見てみました。