今週、ビットコイン関係のツイッターがある話題で持ちきりになっています。GitHubのBitcoin CoreリポジトリにPeter Todd氏が提出した以下のプルリクエストです。

Remove arbitrary limits on OP_Return (datacarrier) outputs by petertodd · Pull Request #32359 · bitcoin/bitcoin
As per recent bitcoindev mailing list discussion. Also removes the code to enforce those limits, including the -datacarrier and -datacarriersize config options. These limits are easily bypassed by…

この提案は、現在Bitcoin Coreノードのトランザクションリレーポリシーにある「OP_Returnは1トランザクションあたり1つまで、かつ83バイトまで」という制限を撤廃するものです。

想像に難くないことですが、2023年のOrdinals Inscriptionsの登場をきっかけにビットコイナーの中ではブロックチェーンに任意のデータを刻まれることに強い抵抗感を感じる人達が多くいます。今回の提案に大して、そのようなビットコイナーの多くが反発しています。

Ordinalsは全satsに通し番号を振るフルオンチェーンNFTプロトコル
ここ数日で話題になっているビットコイン上のプロジェクトに、OrdinalsというフルオンチェーンNFTプロトコルがあります。 個人的には直接ブロックチェーンを利用するNFT自体が無駄という意見なので、フルオンチェーン(紐づけるファイルのデータを全てブロックチェーン上に記録する)は愚かとさえ感じますが、もちろん対価となる手数料さえ払えば何を記録するのもユーザーの自由なので今日はそこを議論するつもりはありません。 Ordinalsがどういう仕組みなのか、特にCounterpartyやRGBなどビットコイン上でNFTを扱うことのできる他のプロトコルとどう違うかに焦点を当てていきます。 Ordinals Ordinal Theoryとは Ordinal Numbersとは序数、つまり順番の番号(何番目)を指す言葉で、Ordinal Theoryは「ビットコイン上で発行された全てのsatoshi (sats)に固有番号を振るシステム」というような意味を持ちます。具体的にどういうことでしょうか。 例えばビットコインの最初のブロックで50BTC、すなわち50億satsが発行されたとき、

日本国内でOrdinals Inscriptionsについて触れたメディアはおそらく本稿が初めてでした。

主にBRC-20トークンなど草コイン投機目的のトランザクションがもたらした手数料の高騰で悪印象を抱いたビットコイナーも多かったと思いますが、それだけでなくOrdinals InscriptionsはビットコインのUTXOセットを膨らませてしまうことでビットコインノードのハードウェア要求を高めてしまいました。2022年末は4.7GBほどだったUTXOセットは、現在では11GBほどまで増えてしまっています。

💡
UTXOセットとは今所有されているすべてのビットコインについて、どのトランザクションの何番目の出力かを表現するデータで、いわば「現在のビットコインの残高表」のようなものです。

これを受けて、Luke Dashjrを筆頭に一部のビットコイナーはOrdinals Inscriptionsをフィルタリングしようと動き、マイニングプールのOceanが生まれたり、Bitcoin Knots(昔からLuke Dashjrが動かしているビットコインノード実装)が盛り上がったりしています。現時点でOceanは全ハッシュレートの0.75%、Bitcoin Knotsは計測可能なビットコインノードの2.7%を占めています。

Oceanが発表したマイニングプロトコル「DATUM」は、いわば「リデザインされたStratum V2」
先日東京で開催されたBitcoin Tokyo 2024カンファレンスにも来場していたLuke DashjrをはじめとするマイニングプールOceanが、マイニングの分散性を守るためとしてStratum V2とは異なる次世代マイニングプールプロトコル「DATUM(Decentralized Alternative Templates for Universal Mining)」を発表しました。 本稿では以前にもStratum V2を紹介しています。知識をリフレッシュされたい方はぜひ以下の記事をご覧ください。またOceanについてもマイニングカテゴリ内の記事で度々触れております。 Stratum V2は本当にマイニングプールの検閲耐性を改善するのか?マイニングの話題になると、少なくともここ数年は規制や検閲という部分に関する関心が高まっている実感があります。マイナーがマイニングプールに接続する現状ではプール側が検閲を行えるのではないか、いくつかの大手マイニングプールが検閲を行うと実質的にネットワーク全体が検閲をしているのと同じ状況にならないか、といった疑問です。 ビットコインの検閲耐性は

Oceanのチームは昨年のBitcoin Tokyo 2024にも参加していました。

しかし、P2Pでのトランザクション伝播段階でのフィルタリングはほぼ効果がなく、不要な複雑性をネットワークに導入してしまうばかりか、マイニングの寡占化を促進してしまう影響すらあります。かといって必ずしもOP_Returnの制限撤廃がすぐに必要ではありませんし、単体では現在存在するビットコイン上にデータを刻む用途の受け皿にはならない可能性が高いですが、形骸化しているものなので撤廃していくことは方向性としては正しいでしょう。コンセンサスではなくポリシールールに頼った弱い仕組みという点では、RBFフラグが立てられていないトランザクションをゼロ承認で受け付けていた時代と同じです。

Bitcoin Core 24.0からのFull RBF既定化についての議論まとめ
この1週間ほど世間の話題はFTXの信用不安問題で持ちきりですが、ビットコイン開発者の多くは全然違う論争に巻き込まれていました。Bitcoin Coreの次期リリースである24.0において、ノードのポリシーとしてFull RBF (mempoolfullrbf)というものが導入される予定のところ、これに反対する意見が出たためです。 結果的には導入継続という流れになりましたが、このように誰でも意見・議論できることがビットコイン開発における健全性維持の1つの仕組みです。 それでは議論の内容を見ていきましょう。 RBFとは RBFとはReplace-by-Feeの略で、配信したがまだブロックに取り込まれていないトランザクションを、より高い手数料を払って置換することをいいます。トランザクション作成時にそのトランザクションにRBF有効のフラグが立てられている場合、同じコインを使用する別のトランザクション、つまり相反するトランザクションを配信して古いものを置き換えることができます。(置換されるトランザクションより手数料が高いこと、置換されるトランザクションがまだブロックに取り込まれていない

RBF無効のトランザクションでもマイナーに直接提出するなどして置き換えることができたので、結果的にはすべてのトランザクションをRBF有効として扱うようノードポリシーが変更されました。

今日は以上の論点を掘り下げて、OP_Returnの制限撤廃を支持する立場での意見を示してみます。(とはいえ、残すメリットがないというだけで急いで撤廃する必要性は高くありませんが。)

・リレーポリシーによる制限は効果が乏しく、マイニングの寡占化を招く

・OP_Returnの上限撤廃は必ずしも問題の解決につながらない

・目的を果たせないポリシー(コード)は撤廃すべき

リレーポリシーによる制限は効果が乏しく、マイニングの寡占化を招く

本稿のメインの主張は冒頭部分でしたので、リレーポリシーによる現状の制限でも任意のデータをブロックチェーンに書き込めている事例をいくつか例示します。

まず、最も流行した例であるOrdinals Inscriptionsです。大きなものだと984.67kvB、実際のサイズでいうと3.94MBを占める巨大なトランザクションがブロックチェーンに残っています。これは、2017年のSegwit導入によって署名データ領域の手数料コストが安く計算されること(1/4のサイズとして評価されること)と、リレーポリシーを迂回するためにマイナーに直接提出されたことで実現しました。

右側の青いトランザクションが3.94MBあります。

上記の例は、UTXOセットには1つのUTXOしか追加せず、しかもその後回収されているので、どちらかというとノードが同期・保存しないといけないデータサイズの問題と捉えられます。画像NFTのように扱われていたものはそれぞれがUTXO上に存在するので、存在する数だけUTXOセットも増大させ、ブロックチェーン上のデータサイズにもなります。

BRC-20に関しても、同様に署名領域に発行や送金などの取引データを書き込みます。1つ1つは小さいですが、トランザクション数が増えるため、やはりブロックスペースを激しく消費します。こちらも、ダストを回収できる手数料率に落ち着くとダストを回収できるので、経済合理性で言えばUTXOセットの増大の影響は比較的小さいでしょう。(実際は多くのユーザーが価値の小さいダストを放棄してしまい、UTXOセットが元に戻らないことが予想されますが)

ビットコインを襲うBRC20の猛威は如何に生まれるのか
今週、ビットコインのトランザクション手数料は600sats/vbyte以上という歴史的水準に達し、ブロックの手数料が新規発行分の6.25BTCを超えるなど2017年末を彷彿とさせるバブリーな状況がありました。本日は日本時間に40sats/vbyte程度まで落ち着きましたが、北米が目を覚ましてからは再び次のブロックにトランザクションが入る水準は200sats/vbyteを超える状態で推移しています。 今年に入ってからOrdinal Inscriptionsの誕生などでトランザクション手数料の相場がここ数年に比べて高い状態が続いていますが、今回の桁違いの高騰もOrdinal Inscriptionsに関連しています。Inscriptionsを多用するBRC20というカラードコインプロトコルのようなものの配布が原因だからです。今日はビットコインの手数料高騰を招くBRC20の仕組みと、それに対するビットコインコミュニティの反応、そして私の予想する今後の流れを書いて行きます。 BRC20は非常に非効率なプロトコル 現時点でリファレンス実装や厳密な仕様は存在しませんが、公式?とされるドキュ

Runesはよりややこしく、データを刻むのにはOP_Returnを使用しますが、トークンの残高をUTXOに紐づけて管理するので結果的にUTXOセットも増大してしまいます。(OP_Returnだけ見るとUTXOセットは肥大化しませんが…)

💡
UTXOは今後誰かが使うことがあるかもしれないので、ノード全員が必要な情報です。一方、OP_Returnになっている出力は誰にも使えないので、将来に備えて情報を残しておく必要がないのです。

(5/7追記)OP_Returnの中身の情報もブロックハッシュを計算するのに必要なので、全く残す必要がないわけではなく、現状では(ブロックごとプルーニングしなければ)ノードには残ります。使用されることはないのでUTXOセットには追加されません。
次のオンチェーン手数料高騰をもたらす?RunesとAMMがテストネットで旋風を引き起こしている
今からちょうど1年ほど前、BRC-20の登場によってビットコインのトランザクション手数料は久しぶりに高騰して物議を醸していました。メインネットの手数料水準も過去と比べて安くはありませんが、最近話題になっているのはテストネットの手数料水準の高騰です。 ビットコインにはPoWを採用するパブリックなテストネット(Testnet)のほか、中央集権的なテストネットとしてSignet、ローカル環境で実行できるRegtestなどいくつかのテスト用ネットワークとブロックチェーンが存在します。その中でも一番古いTestnetはブロックの生成間隔が不安定だったり、大規模なReorgが発生したり、コインの入手が難しいなど使い勝手が悪いという問題を抱えており、他の選択肢がある現在はそれほど人気のあるネットワークではありません。 ところが人気のブロックチェーンエクスプローラーであるMempool.spaceでTestnetを覗いてみると、なんと現在150ブロック分以上もトランザクションがメモリプールに存在しているではありませんか!中身を覗いてみるとInscriptionのようなサイズの大きいトランザクション

RunesもBRC-20も現在のリレーポリシーで防げるものではなく、OceanやBitcoin Knotsなどが独自に防ごうとしていますが、結局はトランザクションを直接マイナーに提出したり、Libre Relayなどリレーポリシーがゆるいビットコインノード経由でマイナーに届けばブロックチェーンには入ってしまいます。

現在のリレーポリシーで本来は防げるはずの例でいえば以下のトランザクションは83バイトを優に超えるOP_Returnがあります:

OP_Returnの83バイトという制限はコンセンサスルールではないため、ブロックチェーンに入っても受け入れられる

むしろ、マイナーに直接トランザクションを提出するツールがいくつかある時代にリレーポリシーでフィルタリングを試みると、そのようなツールの利用を促進してしまいかねません。すると、APIなどで直接提出してもらいやすい大手のマイナーだけが得られる収入源になってしまい、マイニングの寡占化を招いてしまいます。

Slipstream | MARA Holdings, Inc.
ViaBTC | Transaction Broadcast
Enjoy ViaBTC’s BTC accelerator and one-stop mining services to facilitate your mining of Bitcoin, Litecoin, Bitcoin Cash, Kaspa, and other cryptocurrencies.
ANTPOOL - 先进的比特币矿池 | ANTPOOL
As the world’s leading cryptocurrency mining platform, ANTPOOL has been committed to providing users with high-quality multi-currency mining services since its establishment in 2014, currently supports BTC,BCH,LTC,ETH,ETC,ZEC,DASH,DCR,RVN,DGB,CKB. At the same time, ANTPOOL has also launched ‘cloud’ and ‘code block’ services, which can be customized to provide professional one-stop diversified services according to customer needs. In order to help more users understand Proof of Work, ANTPOOL has also set up a special page for the PoW community.

以上はリレーポリシーによる内容制限の撤廃を支持する論点になります。

💡
現在見かけるビットコイン上のプロトコルで問題になっているのは基本的にOP_Returnではない点だけ注意が必要です。むしろ、署名領域のデータサイズに関する制限も撤廃すべきでは?という意見も考えられます。そちらはノードが実行し検証するスクリプトが含まれるため、DoS攻撃のリスク低減の機能もあるので当面はなくならないでしょう。

OP_Returnの上限撤廃は必ずしも問題の解決につながらない

注釈で触れたように、OP_ReturnとWitness領域へのInscriptionの違いから、OP_Returnの上限撤廃が現在の問題解決につながるかというとそうでもありません。巨大なInscriptionであれば今後もマイナーに直接提出する必要があります。

もし様々なプロトコルがそれ以降OP_Returnを使って実装されていけば、プルーニングできる形でブロックチェーンにデータを残すため、今よりは改善と言えるでしょう。しかし、OP_Returnを使ってもらえるとは限りません。なぜならSegwitで導入されたWitness領域の手数料ディスカウント(1/4のデータサイズとして扱う)が大きすぎるためです。記録するデータが大きければ大きいほどWitness領域のほうが安くなってしまいます。上限撤廃と噛み合いません。

💡
(5/7追記)計算すると、2トランザクションで署名領域の公開によってデータを刻むほうが1トランザクションでOP_Returnを使用するより安くなるしきい値は137バイトだそうです。なので、OP_Returnの上限撤廃は単に83~137バイトのデータを刻みやすくする効果しかない(ハードルを下げる)という意見もあります。

反対派には、カルチャー的な問題を指摘する意見もあります。任意のデータを記録することを少しでも難しくしておくことでそういうユースケースを遠ざけることができるという意見ですが、個人的にはこれはもう手遅れなのではないかと思います。InscriptionsやBRC-20、ビットコインL2ブームなど、ビットコインをデータ置き場に使う発想や技術はすでにWeb3業界にあります。マイナーにトランザクションを提出すれば済むようなささやかな障壁に意味があるとは思えません。OP_Return Botのような使いやすいサービスもいくつかあります。

OP_RETURN Bot
OP_RETURN Bot will create an OP_RETURN output for you, you just need to pay the fees.

したがって、OP_Returnの上限撤廃のネガティブな側面は個人的には過剰に恐れられているのではないかと思います(それはすべてもう現実化している)。どちらかというと、上限撤廃によって現在の問題が解決されるわけではないのに今急ぐ必要があるのか疑問なのと、上限撤廃をしてもOP_Returnを使ってもらえない心配をするべきなのではないでしょうか。

以上、自分が考える筋の良い反論を挙げました。

💡
なお、議論のもととなったbitcoindevグループの会話ではCitreaという会社のBitcoinブリッジの仕様を読んだ人が、「OP_Returnの制限が厳しいためTapscript(つまりは署名領域)にデータを埋め込む」と明記されていたことから、OP_Returnの制限は好ましくないデータの埋め込み方を助長しているので撤廃しようと提案していました。OP_Returnを使ったほうが手数料が高くつくなら、結局ずっと署名領域にデータを書き込む可能性があり、根本的な問題は署名領域のディスカウントということになると私は思います。

目的を果たせないポリシー(コード)は撤廃すべき

最後に、ダメ押しですがFull-RBFのとき同様、コンセンサス外で現実とそぐわない部分はコンセンサスに合わせていくのが正しいと私は考えます。なぜなら、コンセンサス以外のルールは確実に目的を果たすことができず、むしろ誤解を招くためです。

もちろんノードを守るためのDoS攻撃対策のようなノードポリシーはずっと必要になるでしょう。しかし、ノードポリシーで他者のビットコインの使い方を制限するのは無理筋です。それなら、目的を果たせないポリシーは撤廃してノードの保守性やネットワークの安定性を改善すべきでしょう。

面白かった提案の1つとして、Super Testnet氏が「トランザクションとともに、送り先のアドレスが実際に使用可能なものか証明させる」(つまり出力のロックスクリプトと一緒に伝播させる)と伝聞から紹介したものがありました。ビットコイン送金のUXも大きく変わってしまうほか、プライバシーの問題、新しいDoS攻撃ベクターになるなど大量の問題があるため現実的ではありませんが、面白いアプローチだとは思いました。先にインボイスを発行したり、チャネルの存在を証明させるライトニングに影響を受けていそうです。

💡
ちなみにSuper Testnet氏はどちらかというと多少でも「スパム」に対する障壁を作れるならフィルタリング支持派だそうです。その見方もわからなくはないですが、いたちごっこの一環でルールをコンスタントに変化させていくのがビットコインでは難しそうです。

また、OP_Returnの上限撤廃と合わせて、Tapscriptなどにデータを書き込まれてしまう根本的な原因である署名領域のディスカウントも将来的にはなくしていったほうが良いのではないかと思います。当初これはSegwitへの移行を促進するという側面、実質的なブロックサイズ拡張によるスケーリングを狙った側面がありましたが、レガシーアドレスの使用がまれになった今、扱いを変えることを検討すべきかもしれません。

なにより、不要な規制や優遇があるとそこを迂回したり悪用するために非効率であったり悪影響の出る裏ワザがはびこってしまうので、そういうものは撤廃すべきというのは割とビットコイナーに受け入れられる考え方じゃないでしょうか。

まとめ

・厳しすぎるリレーポリシーは好ましくないトランザクションを防ぐのに役立たないどころか、P2Pネットワークを迂回してトランザクションをマイナーに提出することを普通にしてしまい、マイニングの寡占化を招く。つまり、弊害のほうが大きい可能性が高い。

・ただし、今回問題となっているOP_Returnの上限を迂回しようとして問題が起こっている事例は少ない。OP_Returnを使ってデータを刻むより、Witness領域(署名領域)のディスカウントを使ったほうが安価に刻めるため、その裏ワザがビットコインにデータを刻む方式の主流となっている。したがって、OP_Returnの上限撤廃自体だけで状況が改善するとは考え難い。

・いずれにせよ、形骸化しているコードは撤廃すべきなのではないか。

・OP_Returnの上限撤廃に加えてWitness領域のディスカウントの修正を行えば長期的にはOP_Returnへとデータ記録の用途を誘導できるかもしれない。