NFTのトランザクションとガス代の仕組みを整理してみる

はじめに

おつかれさまです。
前回の記事では、NFTウォレットの役割や署名(Signature)の仕組みについて整理しました。

Web3では、ウォレットによる署名を利用することで、本人であることを証明し、トランザクションを送信します。
しかし、署名を承認しただけではNFTは発行されません。

ウォレットは送信するトランザクションを組み立てて、その内容に秘密鍵で署名します。署名済みトランザクションがブロックチェーンへ送信され、ネットワーク全体で検証されたあと、初めてブロックチェーンへ記録されます。 

例えばMetaMaskでは、NFTの発行や送信などを行う際に「Confirm(確認)」ボタンが表示されます。
ユーザーはボタンを押すだけですが、その裏側では複数の処理が実行されています。

今回は、

  • トランザクションとは何か
  • ガス代とは何か
  • ブロックチェーンへどのように記録されるのか

について整理してみようと思います。

トランザクションとは?

トランザクション(Transaction)とは、

「ブロックチェーンに対して行う処理の依頼」

です。
例えばNFTでは、

  • NFTを発行する(mint)
  • NFTを送る
  • NFTを購入する
  • スマートコントラクトを実行する

といった操作は、すべてトランザクションとしてブロックチェーンへ送信されます。

Web2との違い

普段のWebサービスでは、

更新ボタン → API → データベース更新

という流れです。
一方、Web3では、

Confirm → トランザクション生成 → 署名 → ブロックチェーンへ送信

という流れになります。
データベースへ直接更新するのではなく、ネットワーク全体へ「処理を依頼する」点が大きな違いです。

ウォレットで承認すると何が起きる?

MetaMaskなどのウォレットで「Confirm(確認)」を押すと、裏側では次のような流れになります。

ユーザーから見るとボタンを押しただけですが、その裏側では複数の処理が順番に実行されています。

RPCはブロックチェーンへの窓口

ここで登場するのがRPC(Remote Procedure Call)です。
ウォレットは直接ブロックチェーンへ接続するのではなく、RPCサービスを経由して通信します。

代表的なサービスとして、

  • Alchemy
  • Infura

などがあります。
RPCは、ブロックチェーンへの「窓口」のような役割を担っています。

トランザクションハッシュとは?

トランザクションを送信すると、

0x4c8d9f...

のような文字列が発行されます。
これをトランザクションハッシュTransaction Hashと呼びます。

トランザクションハッシュは、「トランザクション(処理)を識別するためのID」です。
このIDを使うことで、
ブロックチェーン上の取引履歴を確認できるWebサイト(ブロックチェーンエクスプローラー)から、処理内容を検索することができます。

Ethereumでは、代表的なエクスプローラーとして「Etherscan」があります
そこにトランザクションハッシュを入力すると、例えば次のような情報を確認できます。

  • 実行日時
  • ガス代
  • 実行したスマートコントラクト
  • 成功・失敗

システム開発では、障害調査やログ確認で利用することも少なくありません。

ガス代とは?

トランザクションを実行する際には、ガス代(Gas Fee)が必要になります。

ガス代は単なる利用料金ではありません。
ブロックチェーン上で処理を実行してもらうための計算コストです。

例えば、

  • NFT発行
  • NFT送信
  • スマートコントラクト実行

など、それぞれ必要な計算量が異なるため、消費するガスも変わります。

なぜガス代が必要なのか?

ガス代には主に2つの役割があります。

① 計算資源への対価

Ethereumでは、ネットワーク上のバリデータがトランザクションを検証し、ブロックへ取り込みます。 
ガス代は、トランザクションを処理してブロックへ記録するためのコストであり、ネットワークを維持する重要な仕組みの一つです。

② スパム防止

もしガス代が無料だった場合、
大量のトランザクションを送信してネットワークを停止させることも可能になってしまいます。
ガス代を必要とすることで、不正利用を防ぐ役割も担っています。

トランザクションはすぐに確定するわけではない

送信されたトランザクションは、すぐにブロックへ記録されるわけではありません。
まずはネットワーク上で待機し、その後ブロックへ取り込まれます。


トランザクション送信 → 待機 → ブロックへ取り込み → 確定

ネットワークが混雑している場合は、この待ち時間が長くなることもあります。

まとめ

今回紹介した内容を整理すると、次のようになります。

用語 役割
トランザクション ブロックチェーンへ送る処理
RPC ブロックチェーンとの通信窓口
トランザクションハッシュ トランザクションの識別ID
ガス代 処理を実行するためのコスト

 

ユーザーはMetaMaskで「Confirm」を押しているだけに見えますが、
その裏側では、

  • トランザクション生成
  • 署名
  • RPC通信
  • ブロックへの記録

という複数の処理が連携しています。


前回紹介したウォレットの署名は、この一連の流れのスタート地点でした。
署名されたトランザクションはネットワーク全体で処理され、ブロックへ記録されることで、NFTの発行や送信といった処理が完了します 。