OP_Return戦争再び:ブロックチェーンにデータを刻む機能について再燃する議論
今週、ビットコイン関係のツイッターがある話題で持ちきりになっています。GitHubのBitcoin CoreリポジトリにPeter Todd氏が提出した以下のプルリクエストです。
この提案は、現在Bitcoin Coreノードのトランザクションリレーポリシーにある「OP_Returnは1トランザクションあたり1つまで、かつ83バイトまで」という制限を撤廃するものです。
想像に難くないことですが、2023年のOrdinals Inscriptionsの登場をきっかけにビットコイナーの中ではブロックチェーンに任意のデータを刻まれることに強い抵抗感を感じる人達が多くいます。今回の提案に大して、そのようなビットコイナーの多くが反発しています。
日本国内でOrdinals Inscriptionsについて触れたメディアはおそらく本稿が初めてでした。
主にBRC-20トークンなど草コイン投機目的のトランザクションがもたらした手数料の高騰で悪印象を抱いたビットコイナーも多かったと思いますが、それだけでなくOrdinals InscriptionsはビットコインのUTXOセットを膨らませてしまうことでビットコインノードのハードウェア要求を高めてしまいました。2022年末は4.7GBほどだったUTXOセットは、現在では11GBほどまで増えてしまっています。
これを受けて、Luke Dashjrを筆頭に一部のビットコイナーはOrdinals Inscriptionsをフィルタリングしようと動き、マイニングプールのOceanが生まれたり、Bitcoin Knots(昔からLuke Dashjrが動かしているビットコインノード実装)が盛り上がったりしています。現時点でOceanは全ハッシュレートの0.75%、Bitcoin Knotsは計測可能なビットコインノードの2.7%を占めています。
Oceanのチームは昨年のBitcoin Tokyo 2024にも参加していました。
しかし、P2Pでのトランザクション伝播段階でのフィルタリングはほぼ効果がなく、不要な複雑性をネットワークに導入してしまうばかりか、マイニングの寡占化を促進してしまう影響すらあります。かといって必ずしもOP_Returnの制限撤廃がすぐに必要ではありませんし、単体では現在存在するビットコイン上にデータを刻む用途の受け皿にはならない可能性が高いですが、形骸化しているものなので撤廃していくことは方向性としては正しいでしょう。コンセンサスではなくポリシールールに頼った弱い仕組みという点では、RBFフラグが立てられていないトランザクションをゼロ承認で受け付けていた時代と同じです。
RBF無効のトランザクションでもマイナーに直接提出するなどして置き換えることができたので、結果的にはすべてのトランザクションをRBF有効として扱うようノードポリシーが変更されました。
今日は以上の論点を掘り下げて、OP_Returnの制限撤廃を支持する立場での意見を示してみます。(とはいえ、残すメリットがないというだけで急いで撤廃する必要性は高くありませんが。)
・リレーポリシーによる制限は効果が乏しく、マイニングの寡占化を招く
・OP_Returnの上限撤廃は必ずしも問題の解決につながらない
・目的を果たせないポリシー(コード)は撤廃すべき
リレーポリシーによる制限は効果が乏しく、マイニングの寡占化を招く
本稿のメインの主張は冒頭部分でしたので、リレーポリシーによる現状の制限でも任意のデータをブロックチェーンに書き込めている事例をいくつか例示します。
まず、最も流行した例であるOrdinals Inscriptionsです。大きなものだと984.67kvB、実際のサイズでいうと3.94MBを占める巨大なトランザクションがブロックチェーンに残っています。これは、2017年のSegwit導入によって署名データ領域の手数料コストが安く計算されること(1/4のサイズとして評価されること)と、リレーポリシーを迂回するためにマイナーに直接提出されたことで実現しました。

上記の例は、UTXOセットには1つのUTXOしか追加せず、しかもその後回収されているので、どちらかというとノードが同期・保存しないといけないデータサイズの問題と捉えられます。画像NFTのように扱われていたものはそれぞれがUTXO上に存在するので、存在する数だけUTXOセットも増大させ、ブロックチェーン上のデータサイズにもなります。
BRC-20に関しても、同様に署名領域に発行や送金などの取引データを書き込みます。1つ1つは小さいですが、トランザクション数が増えるため、やはりブロックスペースを激しく消費します。こちらも、ダストを回収できる手数料率に落ち着くとダストを回収できるので、経済合理性で言えばUTXOセットの増大の影響は比較的小さいでしょう。(実際は多くのユーザーが価値の小さいダストを放棄してしまい、UTXOセットが元に戻らないことが予想されますが)

Runesはよりややこしく、データを刻むのにはOP_Returnを使用しますが、トークンの残高をUTXOに紐づけて管理するので結果的にUTXOセットも増大してしまいます。(OP_Returnだけ見るとUTXOセットは肥大化しませんが…)
(5/7追記)OP_Returnの中身の情報もブロックハッシュを計算するのに必要なので、全く残す必要がないわけではなく、現状では(ブロックごとプルーニングしなければ)ノードには残ります。使用されることはないのでUTXOセットには追加されません。
RunesもBRC-20も現在のリレーポリシーで防げるものではなく、OceanやBitcoin Knotsなどが独自に防ごうとしていますが、結局はトランザクションを直接マイナーに提出したり、Libre Relayなどリレーポリシーがゆるいビットコインノード経由でマイナーに届けばブロックチェーンには入ってしまいます。
現在のリレーポリシーで本来は防げるはずの例でいえば以下のトランザクションは83バイトを優に超えるOP_Returnがあります:

むしろ、マイナーに直接トランザクションを提出するツールがいくつかある時代にリレーポリシーでフィルタリングを試みると、そのようなツールの利用を促進してしまいかねません。すると、APIなどで直接提出してもらいやすい大手のマイナーだけが得られる収入源になってしまい、マイニングの寡占化を招いてしまいます。
以上はリレーポリシーによる内容制限の撤廃を支持する論点になります。
OP_Returnの上限撤廃は必ずしも問題の解決につながらない
注釈で触れたように、OP_ReturnとWitness領域へのInscriptionの違いから、OP_Returnの上限撤廃が現在の問題解決につながるかというとそうでもありません。巨大なInscriptionであれば今後もマイナーに直接提出する必要があります。
もし様々なプロトコルがそれ以降OP_Returnを使って実装されていけば、プルーニングできる形でブロックチェーンにデータを残すため、今よりは改善と言えるでしょう。しかし、OP_Returnを使ってもらえるとは限りません。なぜならSegwitで導入されたWitness領域の手数料ディスカウント(1/4のデータサイズとして扱う)が大きすぎるためです。記録するデータが大きければ大きいほどWitness領域のほうが安くなってしまいます。上限撤廃と噛み合いません。
反対派には、カルチャー的な問題を指摘する意見もあります。任意のデータを記録することを少しでも難しくしておくことでそういうユースケースを遠ざけることができるという意見ですが、個人的にはこれはもう手遅れなのではないかと思います。InscriptionsやBRC-20、ビットコインL2ブームなど、ビットコインをデータ置き場に使う発想や技術はすでにWeb3業界にあります。マイナーにトランザクションを提出すれば済むようなささやかな障壁に意味があるとは思えません。OP_Return Botのような使いやすいサービスもいくつかあります。

したがって、OP_Returnの上限撤廃のネガティブな側面は個人的には過剰に恐れられているのではないかと思います(それはすべてもう現実化している)。どちらかというと、上限撤廃によって現在の問題が解決されるわけではないのに今急ぐ必要があるのか疑問なのと、上限撤廃をしてもOP_Returnを使ってもらえない心配をするべきなのではないでしょうか。
以上、自分が考える筋の良い反論を挙げました。
目的を果たせないポリシー(コード)は撤廃すべき
最後に、ダメ押しですがFull-RBFのとき同様、コンセンサス外で現実とそぐわない部分はコンセンサスに合わせていくのが正しいと私は考えます。なぜなら、コンセンサス以外のルールは確実に目的を果たすことができず、むしろ誤解を招くためです。
もちろんノードを守るためのDoS攻撃対策のようなノードポリシーはずっと必要になるでしょう。しかし、ノードポリシーで他者のビットコインの使い方を制限するのは無理筋です。それなら、目的を果たせないポリシーは撤廃してノードの保守性やネットワークの安定性を改善すべきでしょう。
面白かった提案の1つとして、Super Testnet氏が「トランザクションとともに、送り先のアドレスが実際に使用可能なものか証明させる」(つまり出力のロックスクリプトと一緒に伝播させる)と伝聞から紹介したものがありました。ビットコイン送金のUXも大きく変わってしまうほか、プライバシーの問題、新しいDoS攻撃ベクターになるなど大量の問題があるため現実的ではありませんが、面白いアプローチだとは思いました。先にインボイスを発行したり、チャネルの存在を証明させるライトニングに影響を受けていそうです。
One option I heard today: enforce a mempool policy that rejects transactions that put money in addresses without including a proof that each address can be spent from. The proof doesn't go in the blockchain, it's just relayed with the tx to prove its outputs are spendable.
— Super Testnet (@SuperTestnet) April 30, 2025
また、OP_Returnの上限撤廃と合わせて、Tapscriptなどにデータを書き込まれてしまう根本的な原因である署名領域のディスカウントも将来的にはなくしていったほうが良いのではないかと思います。当初これはSegwitへの移行を促進するという側面、実質的なブロックサイズ拡張によるスケーリングを狙った側面がありましたが、レガシーアドレスの使用がまれになった今、扱いを変えることを検討すべきかもしれません。
なにより、不要な規制や優遇があるとそこを迂回したり悪用するために非効率であったり悪影響の出る裏ワザがはびこってしまうので、そういうものは撤廃すべきというのは割とビットコイナーに受け入れられる考え方じゃないでしょうか。
まとめ
・厳しすぎるリレーポリシーは好ましくないトランザクションを防ぐのに役立たないどころか、P2Pネットワークを迂回してトランザクションをマイナーに提出することを普通にしてしまい、マイニングの寡占化を招く。つまり、弊害のほうが大きい可能性が高い。
・ただし、今回問題となっているOP_Returnの上限を迂回しようとして問題が起こっている事例は少ない。OP_Returnを使ってデータを刻むより、Witness領域(署名領域)のディスカウントを使ったほうが安価に刻めるため、その裏ワザがビットコインにデータを刻む方式の主流となっている。したがって、OP_Returnの上限撤廃自体だけで状況が改善するとは考え難い。
・いずれにせよ、形骸化しているコードは撤廃すべきなのではないか。
・OP_Returnの上限撤廃に加えてWitness領域のディスカウントの修正を行えば長期的にはOP_Returnへとデータ記録の用途を誘導できるかもしれない。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。



ディスカッション