ダストリミットはポリシーによる制限なのに比較的守られている理由
ここ半年の間、ビットコイナーの間で(何の生産性もない)議論を巻き起こしているOP_Returnに関するポリシールール緩和ですが、緩和する理由としてもはやポリシールールの既定値に関わらず迂回されてしまっていること、迂回のためのインフラがビットコインの公平性を歪めたり(マイニングの中央集権化につながる)使い勝手を悪くする(手数料推定の正確性を毀損する)ことが挙げられます。これを元に緩和してしまったほうが良いというのがBitcoin Core開発陣の多数の判断です。
さて、ポリシールールには色々ありますが、その中の1つにダストリミットがあります。これはトランザクション出力について、アドレスタイプごとに「最小金額」を決めています。前提として、「使うのに必要な手数料より少ない金額のUTXOは非経済的であり、正当な使い道はない」という発想があります。(使おうとするとむしろマイナスになる!)
| アドレス形式 | ダストリミット(sats) |
|---|---|
| P2PKH (1~) | 546 |
| P2SH (3~) | 540 |
| P2WPKH (bc1q~) | 294 |
| P2WSH (bc1q~) | 330 |
| P2TR (bc1p~) | 330 |
そして実際のところ、ダストリミットより少ない金額のトランザクション、例えば0 satsや1 satsのUTXOはかなり少ないです。1 satのものに関してはOrdinals関連で存在することにはしますが、0 satのものは2023年12月に安土さんが調べた記事によると1.5万個ほどのようです。
Pay to Anchorは0 satのアウトプットを、セットとして提出する次のトランザクションで消費することを条件にポリシールール内で有効と認める進展
なぜクソデカOP_Returnはそれなりに存在するのに、同じくポリシールール違反であるダスト未満のUTXOは少ないのでしょう?今日はその理由を考え、OP_Return同様に迂回することができるこのルールも緩和すべきなのか考えてみます。
・コンセンサスルール、ポリシールールよりも強力な「第ゼロの関門」
・ダストリミットの存在意義とOP_Returnの関係
・こちらのほうが開発者の間で意見が分かれそうな予感
コンセンサスルール、ポリシールールよりも強力な「第ゼロの関門」
ビットコイントランザクションの正当性を決めるルールとして、コンセンサスルールとポリシールールについておさらいしましょう。
コンセンサスルールとは、ブロックチェーンに取り込んでいいトランザクションやブロックの形式を決めたもので、各ビットコインノードが新しく配信されてきたブロックとその中のすべてのトランザクションについて検証します。もしコンセンサスルールに違反していたら、そのブロックやトランザクションは無効であり、ブロックチェーンに追加しません。
ポリシールールは、(ノード実装ごとに既定値こそありますが)各ビットコインノードが定めるルールで、ブロックに取り込まれる前のトランザクションに関するものです。自分のノードのポリシールールに合致していないトランザクションはピアから伝播されてきても削除し、自分から他のノードには配信しません。ただし、ブロックチェーンに追加されたらコンセンサスルール違反でない限り、改めて検証し保管します。
さて、ここからは私の意見ですが、なぜコンセンサスではなくポリシールールに制限されるダストリミット未満のUTXOが少ないかというと、「ウォレットが対応していないから」(ウォレット独自のバリデーションが入っている)ことが一番大きいのではないでしょうか。
これはOP_Returnについても言えることですが、大半のユーザーは自分のノードを使っていません。つまり、トランザクションを作るときはノード内蔵のもの以外の何らかのウォレットを使っていますが、大半のウォレットは非標準TX(ポリシールールの既定値に違反するトランザクション)を作らせてくれません!例えばOP_Returnのアウトプットを自分で作れるウォレット自体、片手に数える程度しかない気がします。ダスト未満のUTXOについても同様です。
すると、その非標準TXを意図的に作るためのウォレットが存在しないと増えないわけですが、それがOP_Returnの場合はCounterpartyだったり、めちゃデカWitness領域の場合はOrdinals Inscriptionsに対応したウォレットだったわけです。そして、ダストリミット未満のTXには今のところ単純にそういう需要(投機需要)がなかったのでしょう。見方によっては「ウォレットの対応」が最大の関門になっているのかもしれません。
ダストリミットの存在意義とOP_Returnとの関係
さて、ダストリミットの存在意義は明確で、ビットコインのUTXOセットを爆発させるDoS攻撃を防ぐために存在しています。仮に0 satのUTXOをいくつでも作れるとしたら、オンチェーン手数料さえ払えば無限にUTXOを作れてしまいます!
今のところ1億ほどしか存在しないUTXOセットですが、それでも肥大化が弱小ビットコインノードにとっては大きな運用負担になっています。例えば一時期流行っていたRaspberry Pi 4などではビットコインノードを同期できるか性能がかなりギリギリになってきています。
本来はこのようなルールはコンセンサスルールにしなければならないでしょう。なぜなら、オンチェーン手数料さえ手に入るならマイナーは0 satのUTXOしかないブロックでも喜んで採掘してくれるからです。ここはコンセンサスとポリシーを中途半端に分けてしまったサトシの失策だったといえます。
閑話休題、ダストリミットは「不要なUTXOを作らせない」ために存在する防壁なわけです。そして、今回話題になっているOP_Return制限の緩和も「不要なUTXOを作らなくてもよい」環境に近づけるためにあります。違いとしては、ダストリミットは緩和すると不要なUTXOが爆発的に増えるリスクが増大するかもしれません。否、緩和しなくてもそのリスクはすでにあります。
こちらのほうが開発者の間で意見が分かれそうな予感
OP_Returnの緩和が必要だったかについても議論が紛糾しましたが、じゃあ例えばダストリミットをどうするかについても議論が巻き起こったとしましょう。個人的にはOP_Returnの緩和(ポリシールールをコンセンサスルールに近づける)についてはそれほど大きなイシューではないと見ている開発者が多い印象ですが、ダストリミットについてポリシーとコンセンサスを近づける場合はどちらに寄せるかで意見が分かれそうな気がしています。
ここまでの説明で受ける印象だと、どちらかというとUTXOセット肥大のリスクを防ぐためにコンセンサスルールでダストリミットを強制しようというアプローチを考えたくなるかもしれませんが、それには案外ダウンサイドや現状の方針との矛盾があります。
例えばビットコイン価格がここから100倍になったとき、ダストリミットの数百satsが単位として大きくて困るようなことがあるかもしれません。実際、最近のポリシールールの緩和には、これまでトランザクション手数料の最低水準が1 sat/vbyteだったのを0.1 sat/vbyteに引き下げるものがありました。ダストリミットの固定はそれとは逆行する方針です。

また、冒頭でも触れたようにPay to Anchorのようなケースにおいては0 satのアウトプットがレイヤー2の設計に非常に有用だったりします。ダストリミットをコンセンサスルールで強制してしまうと、ビットコインの新しい使い方の芽を摘むことになるかもしれません。(無論、UTXOセットの肥大につながらないPay to Anchorのみ除外というやり方はできますが)
コンセンサスルールで強制してUTXOセットの肥大化を確実に予防するのか、それとも(OP_Returnの場合と同じくデメリットがある)現状を問題視して制限の緩和を行うのか、はたまた現状維持するのか。 果たして議題に上がるのかはわかりませんが、めちゃくちゃ難しい問題だと思います。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。

ディスカッション