用語集 / トランザクションと手数料
ヌルデータトランザクション
別名はNull data transaction、OP_RETURNトランザクションです。
- ヌルデータトランザクションとは?
- ヌルデータトランザクションとは、お金の代わりに短いメッセージを格納する出力を持つトランザクションです。この出力は誰にも使用できないことが証明可能な形で示され、ノードは使用可能なコインの集合からそれを除外できます。
人々は、安全な方法が存在するずっと前から、ブロックチェーンに何かを書き込みたいと考えていました。安全な方法とは、OP_RETURNで始まる出力です。この出力は、誰かが使用しようとすると直ちに失敗するため、フルノードはそれを永久に追跡するのではなく、メモリから破棄できます。こうした出力はほとんどがゼロサトシを保持しており、送信者はバイト分の手数料だけを支払います。
仕組み
ヌルデータ出力は、決して満たすことのできないロックスクリプトであり、まさにそこが要点です。
スクリプトはOP_RETURNオペコードから始まり、その後にデータのプッシュが続きます。このオペコードは到達した瞬間にスクリプトを中断するため、どのような署名の組み合わせでも出力をアンロックすることはできず、ノードはメモリ上に保持する未使用出力の集合からそれを除外できます。この集合はフルノードが維持する費用のかかるものであり、不要なものをそこに入れないことが、この機能の正当化のすべてです。
Bitcoin Coreは、2014年3月にリリースされたバージョン0.9.0で、このような出力を1つだけ標準とし、ペイロードを40バイトに制限しました。2015年にデータの上限は80バイトに引き上げられ、ノードはオペコードとプッシュのプレフィックスを含めると83バイトのスクリプトとして数えます。2025年10月にリリースされたバージョン30.0は、リレーポリシーがそもそもデータ保存を抑制しようとすべきかどうかについての、長く激しい議論の末に、デフォルトの上限と1トランザクションにつき1出力という制限を撤廃しました。Bitcoin Knotsはより厳しいデフォルトを維持したため、最も使われている2つのノード実装は現在、意図的に見解を異にしており、ノード運営者はソフトウェアを選ぶことでどちらかの側を選びます。
この変更はコンセンサスの変更ではなく、ポリシーの変更です。OP_RETURN出力内のデータは常に有効でした。議論は、通常のノードがそれをリレーすべきかどうかだけに関するものでした。
どこで見られるか
エクスプローラーで任意のブロックを見ると、値がゼロで、スクリプトがOP_RETURNに続いて16進表記で表示されるヌルデータ出力が見つかります。
最も古い大量利用者はOmni Layerです。これはビットコイン上でTetherの最初のバージョンを発行したプロトコルで、命令をこの方法でエンコードしていました。OpenTimestampsのようなタイムスタンプサービスは、文書のハッシュを出力にコミットするため、その文書がそのブロックより前に存在したことを後から証明できます。2024年4月20日の半減期ブロックで開始されたトークンプロトコルであるRunesは、その命令セット全体を1つのヌルデータ出力に入れており、そのためこのブロックとそれに続くブロックはそれで埋め尽くされていました。
ビットコインを購入する人にとって、実際の影響は間接的ですが現実のものです。データ出力はあなたの支払いと同じブロックスペースを奪い合い、それが大量に発生すると、承認を得るために支払う必要のある手数料率が上がります。これがここ数年の手数料高騰のほとんどの背景にある仕組みです。
ヌルデータトランザクションvs OP_RETURN
OP_RETURNは1つのオペコードです。ヌルデータトランザクションは、たまたまそれを使う出力を含むトランザクション全体です。この区別はノードの設定を読むときに重要です。Bitcoin Coreの設定はオペコードではなくトランザクションのカテゴリーにちなんで名付けられているからです。-datacarrierはそのようなトランザクションをそもそもリレーするかどうかを決め、-datacarriersizeはペイロードがどれだけ大きくてよいかを設定します。ドキュメントでOP_RETURNを検索しても、これらのオプションは見つかりません。
ヌルデータトランザクションvsインスクリプション
インスクリプションはデータをまったく別の場所に置きます。オーディナルのインスクリプションはペイロードをTaprootのウィットネススクリプトの中に隠し、これはSegWitの重量割引を受けられ、数メガバイトに達することもあります。一方、ヌルデータ出力は全重量で課金され、歴史的には80バイトに制限されていました。この価格とサイズの違いが、画像やコレクティブルがOP_RETURNデータではなくインスクリプションとして登場した理由であり、両者がブロックチェーンの肥大化について非常に異なる議論を引き起こす理由です。