用語集 / プロトコルとアップグレード
エフェメラルアンカー
- エフェメラルアンカーとは?
- エフェメラルアンカーとは、手数料を支払う子トランザクションを接続して親トランザクションをブロックに引き込めるようにするためだけに、トランザクションへ追加される価値ゼロのアウトプットです。
BIP-431で規定されています。
Lightningなどのコントラクトプロトコルは、手数料がいくらになるか誰も分からないずっと前にトランザクションへ署名しなければならないため、後から手数料を上乗せする手段が必要です。Bitcoin Core 28.0は、まさにその用途のために、誰でも使用できる4バイトのスクリプトを標準化し、29.0では、親トランザクションが手数料を支払わないことを条件に、そのようなアウトプットが何も保持しなくてもよいとされました。その利点は、コストがより低く、取り残される資金がより少ないチャネルクローズです。
仕組み
エフェメラルアンカーはスケジュールの問題を解決します。事前署名されたトランザクションは、ブロードキャストされる数か月前に選ばれた手数料率を抱えており、それが実際に必要になるころには市場は動いています。
従来の回避策は、トランザクションに小さな使用可能なアウトプットを持たせ、それを必要とする誰かが両方の手数料を支払う子トランザクションをブロードキャストするというものでした。Lightningのアンカーチャネルは、当事者ごとに1つずつ、330サトシのアウトプット2つでこれを行います。機能しますが、その資金はすべてのコミットメントトランザクションの中に拘束され、その後、誰かが回収するかどうかにかかわらず、アウトプットは有効なコインの集合の中に残ります。
Pay-to-anchorはそのコストの大部分を取り除きました。Bitcoin Core 28.0は、スクリプトがちょうど4バイトの新しい標準アウトプットを認識しました。OP_1、2バイトのプッシュ、そしてバイト0x4e 0x73です。これは長さ2のsegwitバージョン1プログラムであり、Taprootは未知のバージョン1プログラムに支出条件を課さないため、誰でも空のウィットネスでこれを支出できます。鍵も、明かすスクリプトもなく、入力はほとんど価値がないほど小さいものです。
当初はダスト規則がなお影響しました。Bitcoin Coreはアウトプットを、それを支出するのにかかるコストで評価し、これについては80仮想バイトになります。これは仮想バイトあたり3サトシという標準のダスト料率では、少なくとも240サトシを保持しなければならないことを意味します。330よりはましですが、まだ無料ではありません。
Bitcoin Core 29.0はエフェメラルダストでその差を埋めました。トランザクション自体がちょうどゼロの手数料を支払う限り、トランザクションはダストしきい値を下回る単一のアウトプットを、価値が何もないものを含めて持つことができます。ゼロ手数料がその仕掛けです。何も支払わない親トランザクションは単独では決してマイニングされないため、アンカーが有効なコインの間に取り残されることはないと保証されます。それはそれを支出する子トランザクションとともにパッケージの中でだけ存在し、名前はそこから来ています。
Bitcoin Core 28.0の他の2つの要素がこの仕組みを実用的にします。BIP431で規定され、バージョン3でシグナルされるTRUCトランザクションは、未承認の親1つと未承認の子1つを許可し、トランザクションを10,000仮想バイトに制限します。これにより、手数料の引き上げを信頼できないものにしていたピンニング攻撃が取り除かれます。そして日和見的なパッケージリレーにより、親トランザクションは子トランザクションと対になって一緒に伝わることができるため、ゼロ手数料の親トランザクションでもマイナーに届くことができます。
どこで見られるか
エフェメラルアンカーは、Lightningのチャネルクローズや、事前署名されたトランザクションの上に構築されたより新しいコントラクトプロトコルに現れ、通常の支払いには決して現れません。
ブロックエクスプローラー上では一見すると間違って見えます。価値が何もないアウトプットが、すぐ次のトランザクションで空のウィットネスを持つ入力によって支出されるのです。Lightningノードを運用している場合、その効果は、強制クローズがすべてのコミットメントにダストを確保する必要がなくなること、そして詰まったクローズの手数料引き上げが必要なときにずっと成功しやすくなることです。オンチェーンでビットコインを保有しているだけなら、それを自分で作成することは決してなく、その利点はLightningの利用が安くなることを通じて届きます。
エフェメラルアンカーvsダストリミット
ダストリミットは、有効なコインの集合が、支出する価値がないほど小さなアウトプットで埋まるのを防ぐために存在し、エフェメラルアンカーは、その規則を破ることが証明可能に安全である唯一のケースです。通常のダストアウトプットは永遠に未支出のまま残ることがあり、そのたびに世界中のすべてのノードに1セントの何分の1かのために少しのメモリを負担させます。エフェメラルアンカーはそうはなりません。その親トランザクションは手数料を支払わないため、アンカーを支出する子トランザクションが一緒に届かない限り、どのマイナーも親トランザクションを取りません。この除外は原則を緩めるものではありません。それは原則が当てはまらないことの実証です。