Bitcoinのブロックはコンセンサスによって4 million weight units(ウェイト単位)に上限が設けられており、手数料率が低いトランザクションは容量が埋まると待機を強いられます。月曜日のEDT午前8時時点で、約90,617件の未確認送金がmempool(メンプール)で待機していました。この制約は、投稿時刻に関係なく、より高いsatoshis per virtual byte(sat/vB)率を提示するトランザクションを優先するという、手数料ベースのオークションを引き起こします。各Bitcoin Coreノードはそれぞれ独自のローカルmempoolを保持しており、デフォルトで300 MBの容量、最大336時間トランザクションを保持し得ます。これにより、ビットコイン全体に共通する単一のトランザクション待ち行列は存在しない、分散型の仕組みが生まれています。Bitcoin Core 31.0では、ローカルメモリ上限に達した際に接続されたトランザクションをノードがどのようにグループ化し、並べ替え、退避(evict)するかを改善するために、クラスターmempoolアーキテクチャが導入されました。
満員のブロックと満員のmempoolは別の出来事です。Bitcoinのブロックはコンセンサスにより4 million weight unitsに制限されます。これはトランザクションデータがどのように構造化されているかを考慮した測定値です。Bitcoin Coreノードはデフォルトでローカルmempoolにおよそ300 MBのメモリを割り当て、最大336時間の間トランザクションを保持できます。十分に多くのトランザクションがメモリ内に残っていても、ブロックは埋まることがあります。確認待ちのままです。
トランザクションはまず、ノードのmempoolに入り込みます。そこは、まだ確認されていない有効な支払いのための一時的な保管場所です。各ノードは自分自身のバージョンを保持し、自身のローカルポリシーを適用し、保留中トランザクションの「集まり」が少しずつ異なって見える可能性があります。ビットコインネットワーク全体に単一の普遍的mempoolはありません。
マイナーは通常、年齢(トランザクションが投入されてからの経過時間)だけでトランザクションを選びません。彼らは手数料、トランザクションのウェイト、そして支払い間の依存関係をもとにブロックテンプレートを組み立てます。ユーザーが実感する実用上の単位はsatoshis per virtual byte、つまりsat/vBです。より高いレートは、希少なブックスペースを同じ条件でより多くの収益に変えるため、最も強い手数料パッケージほど先に動きやすくなります。
先に送信した支払いは、後から送られたものが確認されるまでの数分後に確認され得ます。高い手数料のトランザクションはネットワーク全体に広く伝播し、マイナーの次のテンプレートに載りやすくなります。低い手数料のトランザクションは、数ブロックが経過しても、カットオフを下回ったまま残ることがあります。確認の見積もりは役に立ちますが、確約ではありません。新しいトランザクションは継続的に到着し、ブロック自体も不規則な間隔で現れるためです。
保留中トランザクションが、すべてのブロックに対して競合するほど集まると、mempoolは競争環境になります。新しくてより良く支払うトランザクションが、弱い入札を置き換えることがあります。Bitcoin Coreノードが設定されたメモリ上限に到達すると、経済的に最も弱い接続された(connected)グループのトランザクションを削り(trim)つつ、継続的に上がるローカルな最低手数料率(fee floor)を引き上げます。退避(evicted)されたトランザクションは無効になりませんし、ブロックチェーンがそれをキャンセルしたわけでもありません。そのノードが単に保持しなくなっただけです。
通常のユーザーにとって最初の結果は遅延です。ウォレットは、新しいトランザクションが確認されている間にも、支払いが数時間保留中だと言うことがあります。トレーダー、取引所、あるいはトレジャリー部門にとっては、その遅れは、取引所への入金を延期したり、担保の移動を遅らせたり、裁定取引(arbitrage)の送金を中断したり、動きの速い市場の間に資金が使用不可のままになったりする原因になり得ます。
手数料は主に、移送する価値ではなくトランザクションのウェイトに結び付いているため、$50の支払いと$5 millionの送金は、トランザクション構造が同程度であれば、似た条件で競合できます。時間に敏感な送金ほど、手数料を払い過ぎない(アンダーペイ)ことがより高くつきやすくなります。
次に起こるのは、より高い手数料市場(fee market)です。Bitcoinにはプロトコルレベルのベース手数料はありません。その代わり、ユーザーは「次のブロックに収まる範囲でマイナーが採用できる限界の手数料率」に対して競争します。さらに各ノードもローカルな受け入れ最低ライン(admission floor)を保持しています。圧力がかかると、この動的なフロアはソフトウェアの基本的な中継設定を大幅に上回ることがあります。
3つ目の結果は、決済前の不確実性です。ブロックエクスプローラーでトランザクションを見かけるのは、「一部のノードがそれを知っている」ことの証拠であって、「すべてのマイナーが知っている」ことの証明ではありません。未確認の支払いは、入れ替えられたり、退避されたり、ノードの見え方から消えたりし得ますが、それでも有効な可能性のある支払いとして残ります。商品を出荷する、口座に反映する、または入金をゼロ確認で確定扱いにする企業は、混雑がそれをより見えやすくすることでリスクが増えることを受け入れていることになります。
Bitcoin自体は、ユーザーが遅延した支払いの価格設定をやり直すための主な方法を2つ提供しています。手数料上乗せによる置換(Replace-by-fee: RBF)は、支払者が未確認トランザクションを、より高い手数料を払う別のトランザクションに置き換えられる仕組みです。子ペイメントで親を後押し(Child-pays-for-parent: CPFP)は別ルートで、遅延トランザクションから使えるアウトプットを、新しい高手数料の子トランザクションで利用します。これにより、マイナーに「親子をまとめて含める」インセンティブが生まれます。
どちらのツールも自動ではありません。RBFの置換は、ノードポリシーを満たし、置き換える対象のトランザクションだけでなく、現在の市場(相場)も上回るだけの手数料を支払う必要があります。CPFPの子は、パッケージ全体の合算手数料率を引き上げる必要があり、単に子単体が高そうに見えるだけでは不十分です。実際の狙いは最低の中継手数料ではありません。次に起こりそうなブロックの末尾付近における手数料率です。
この2つの選択肢の外では、「マイニング・アクセラレータ(mining accelerators)」があります。これは、一部のビットコインマイニングプールが提供するサービスで、mempool内で低い手数料により詰まっている(stuck)トランザクションを優先的に検討してもらうためにユーザーが送信できます。Bitcoinのコンセンサスルールを変えるのではなく、アクセラレータは参加マイナーに対して、そのトランザクションをマイナーが掘る次のブロックのいずれかに含めてもらうよう依頼するだけです。無料のアクセラレータもありますが適格条件があります。無料でないものは手数料を取るか、最低手数料率を満たすことを要求します。ViaBTCの送金アクセラレータでは、1時間あたり20回の無料プッシュが提供されます。
Bitcoin Core 31.0は、トランザクション選択の裏側にある仕組みの一部を変更します。そのクラスターmempoolは、未確認の接続されたトランザクションをグループ化し、グループが「採掘されると期待される手数料率」によって順序付けします。デフォルトのクラスター上限は、トランザクション数64件、仮想サイズ101 kBです。この設計は、Bitcoinの4 million-weight-unitというコンセンサス上限を変えずに、ブロック構築、退避(eviction)、トランザクションの中継、置換の判断を改善することを目的としています。
別のエンジニアリング作業では、ネットワークを通じたフルブロックの移動コストを下げようとしています。コンパクトブロック中継により、ノードは自分がすでに保持しているトランザクションから新しいブロックの大部分を再構築できるため、伝播に必要なデータ量と時間が減ります。これは重要です。伝播が遅いと、2人のマイナーが短時間で異なるチェーン先端(chain tip)をそれぞれ別々に構築してしまうリスクが高まる可能性があるためです。
Bitcoinのブロックが4 million weight unitsの上限に達すると何が起きますか?
Bitcoinのブロックが4 million weight unitsというコンセンサス上限に達すると、マイナーはsatoshis per virtual byte(sat/vB)で計測される手数料率に基づいてトランザクションを優先します。より高い手数料を提供するトランザクションが先に選ばれ、低い手数料のトランザクションはmempoolに残って次のブロックでの採用を待ちます。ブロック上限によって保留中トランザクションが無効になるわけではありません。各ノードのローカルmempoolに残り続け、デフォルトでは最大336時間保持され得ます。
Bitcoin Core 31.0のクラスターmempoolはトランザクション処理をどのように改善しますか?
Bitcoin Core 31.0では、接続された未確認トランザクションをグループ化し、そのグループが採掘されると期待される手数料率順に並べるクラスターmempoolアーキテクチャが導入されました。デフォルトのクラスター上限は、トランザクション数64件、仮想サイズ101 kBです。この設計により、Bitcoinの4 million weight unitというコンセンサス上限(ブロック上限)を変えずに、ブロック構築、退避(eviction)、トランザクションの中継、置換の取り扱いが改善されます。
詰まったビットコイントランザクションをスピードアップする3つの方法は何ですか?
ビットコインのユーザーには、詰まったトランザクションに対する手数料上乗せ(fee-bump)の方法が3つあります。Replace-by-fee(RBF)は、支払者が未確認トランザクションをより高い手数料を払うものに置き換えられる方法です。Child-pays-for-parent(CPFP)は、遅延したトランザクションの使えるアウトプットを新しい高手数料の子トランザクションで使い、マイナーに親子の両方を含める動機を与えます。そして、ViaBTCのように一部のプールが提供するマイニング・アクセラレータは、参加マイナーに対して、そのトランザクションを次に掘るブロックのいずれかに含めるよう求めます(ViaBTCは1時間あたり20回の無料の優先プッシュを提供します)。
関連ニュース