blockchainjapan’s blog

旬のブロックチェーンを記事を厳選して提供!

Aptos Review 4 — ガス料金


Aptos Review 4 — ガス料金

EcosystemEducation

編集・翻訳:Takeshi@Think Globally, Act Locally

今回はトランザクション手数料、一般的にガス料金と呼ばれるものについて説明していきます。

ガス料金は、多くのL1ブロックチェーンプロトコルにおいて重要な要素となっています。ほとんどのブロックチェーンプロトコルでは、オペレーターユーザーという2種類の参加者が存在します。オペレーターは、ユーザーの残高を記録し、トランザクションを実行し、異なるオペレーター間で記録が一貫していることを確認することで、プロトコル内で起こることを追跡し、確定していきます。ユーザーは、トランザクションを送信したり、スマートコントラクトを展開したり、ブロックチェーンプロトコルにデータを保存したりして、プロトコルを活用しています。

ブロックチェーンオペレーター:出典- Blockchain nodes and mining

ガス料金は、オペレーターがブロックチェーンプロトコルの実行にハードウェアと電力を割くためのインセンティブの基礎を構築するものです。ブロックチェーンユーザーにとって、ガス料金はオペレーターが提供する台帳管理サービスと引き換えに支払うものであると言えます。

ブロックチェーンプロトコルの長期的成長と持続可能性には、適切に設計されたガス料金モデルが不可欠となります。オペレーターがブロックチェーンに投入するリソースと労力を適切に反映させるとともに、ユーザーがブロックチェーン上で取引を実行しても経済的に成り立つような合理的な設計にする必要があります。

そこで、ブロックチェーンのガス料金モデル設計を分解みましょう。

ここにはプロトコルの構築において注意が必要な2つの側面が存在します:

  1. ガス料金の算出方法
  2. ガス料金の徴収方法

ガス料金の算出方法

マクロな視点で見ると、ガス料金はブロックチェーンのオペレーターがトランザクションを処理するためのコストを賄うために徴収されます。

ビットコインのように、価値移転の処理のみを目的とするようなブロックチェーンでは、ガス料金の計算は単純です。ビットコインの各トランザクションでは、入力の合計と出力の合計に差から算出され、このトランザクションを処理するオペレーター、つまりマイナーに送金されます。手数料がオペレーターがこのトランザクションを処理するためのコストをカバーできる限り、オペレーターは喜んでこのトランザクションを提案するブロックに含めます。

Bitcoin公式ドキュメント

しかし、スマートコントラクトの実行をサポートする汎用ブロックチェーンの場合、オペレーターが処理するタスクは、単にトランザクションの検証・記録以上のことになります。具体的にはスマートコントラクトの機能を実行し、現在のブロックチェーンの状態からデータを読み出し、トランザクションの実行後にデータを書き込むことが必要となります。この場合、オペレーターがユーザーのトランザクションを実行するためのコストには、実行コストストレージコスの2つがあります。

実行コストは簡単です。加算、減算、ディスク読み取り…などの各操作には価格が付けられます。トランザクションがより多くの演算を使用するほどに、より多くのガス料金を支払う必要が生じます。例えば、イーサリアムの各OPCodeのガス消費量は、こちらで確認できます。

ストレージコストはよりやっかいなものです。あるデータがブロックチェーンに記録されると、そのデータがブロックチェーンから完全に削除されるまで、データを保持するために全てのオペレーターに継続的にコストがかかります。イーサリアムを含む多くのブロックチェーンは、ユーザーがデータをチェーン上に保存する際に料金を請求しますが、データをそこに保存することに対する継続的な請求メカニズムが欠けています。この仕組みはストレージレント(ストレージ賃料)と呼ばれています。

イーサリアムがストレージレントを採用しにくい理由の1つは、データの保存と所有権が切り離されていることです。例えば、CryptoKittiesに関連するデータは全てCryptoKittiesのスマートコントラクトに保存されますが、各NFTの所有権は各NFTの保有者が持っているのです。各NFTホルダーにオンチェーンデータのストレージレントを請求することは不可能です。

しかし、AptosやFlowが採用するリソースモデルと、SolanaやSuiが採用するアカウント/オブジェクトモデルでは、ストレージレントを可能かつ簡単に実現することが可能です。ユーザーは、オンチェーンデータ保存を希望する場合、継続的に料金を支払うよう求められます。また、トークンをロックして、そこ発生する利子で実質的な賃料を支払うこともできます。賃料を支払うことで、ユーザーは定期的にアカウントを整理し、不要になったデータを廃棄するインセンティブを得ることもできます。

ガス料金の徴収方法

ガス料金の設計でもう一つ重要なことは、実際にユーザーからどのように徴収するかという点です。

最も簡単な方法は、トランザクションを開始したユーザーから徴収することです。しかし、これはユーザーエクスペリエンスに多大な影響を与えます。例えば、次のようなことが挙げられます。:

  1. 新規ユーザーは、アカウントにネイティブコインを保有しないとアカウントで何もできない
  2. ユーザーのアカウントにNFTやUSDCなどのコインがあっても、ガス代を支払うためのネイティブコインを保有していなければ、資産の移転や利用ができない
Source: Ethereum meta transaction 101

イーサリアムではこの問題を解決するために、2018年にメタトランザクションが導入されました。メタトランザクションでは、ユーザーは、必ずしもネイティブコインであるETHをアカウントに保有する必要はありません。ユーザーが単にトランザクションに署名し承認するだけで、ガス料金はサードパーティが支払うことになります。BloctoやArgentのようなウォレットは、より快適なユーザー体験を提供するために、このメタトランザクションの仕組みを使用しています。

一方、AptosやFlowやSolanaなどのブロックチェーンは、より柔軟な仕組みを持っており、複数の送信者/署名者を適用することが可能になっています。Aptosにはマルチエージェントトランザクションが搭載されており、複数のアカウントが協力して、複数のアカウントのアクセスを潜在的に利用する単一のトランザクションを送信することが可能です。ガス料金の支払いは、最初の署名者のみが担当します。

最近のAIP(Aptos Improvement Proposal)では、このトランザクションの手数料を支払う「手数料支払者アカウント」を別に設けるかたちの新たなトランザクションスキームが提案されています。これによって、現在のマルチエージェントによるトランザクション方式から、さらにユーザーエクスペリエンスを向上させることが可能になります。