本文へスキップ
buybitcoinsmart

用語集 / プロトコルとアップグレード

クラスターメムプール

クラスターメムプールとは?
クラスターメムプールとは、Bitcoin Coreの待機室を再設計したもので、互いにつながった未承認トランザクションの各グループを常に整列させておくため、ノードはマイナーが実際にどれを選ぶかを常に把握できます。

互いの出力を使い合う未承認トランザクションは依存関係のグラフを形成しますが、これまでソフトウェアは、1つの項目に許される祖先と子孫の数に対する粗い上限を通じてしか、それを扱えませんでした。バージョン31.0はそれらを1つの規則に置き換えました。すなわち、64件のトランザクションまたは101kBの仮想サイズを超える連結グループを認めない、という規則です。その結果、手数料の引き上げも置き換えも、より予測しやすくなりました。

仕組み

クラスターとは、メムプールの連結成分です。任意の未承認トランザクションを選び、親と子のリンクを双方向にたどっていくと、到達できるものはすべて同じクラスターに属します。

旧設計は祖先と子孫を別々に追跡し、それぞれに25の上限を設け、さらにサイズの上限を併用していました。計算は安上がりでしたが、1つの重要な点で誤っていました。それは、ある一族がどれほど大きいかをノードに伝えましたが、合理的なマイナーがその一族をどの順序で取るかは伝えなかったため、メムプールは自らの中心的な問いに答えられませんでした。すなわち、今すぐブロックを組み立てなければならないとしたら、何が入るのか、という問いです。

クラスターメムプールは、すべてのクラスターを常に線形化しておくことでこれに答えます。線形化とは、チャンクに分割された順序であり、各チャンクは一緒にマイニングされるトランザクションの集合で、1つの実効手数料率を共有します。それらのチャンクを並べ替えると、メムプール全体の手数料率ダイアグラムができ、今では意思決定はこのダイアグラムと照らし合わせて測られます。

上限はクラスターあたり64件のトランザクションと101kBの仮想サイズであり、祖先と子孫の件数を完全に置き換えました。かつて子孫の上限を超えて追加の子を1つ通していた例外であるCPFP carveoutも、それらとともに削除されました。クラスターの件数を迂回するものは何も許されないからです。

その利点は置き換えに現れます。以前のreplace-by-feeの規則は寄せ集めのいくつかの条件であり、共有トランザクションに安価な不要物を付けて置き換えを法外に高くすることで悪用できました。手数料率ダイアグラムを比較すれば、代わりに1つの判定になります。置き換えは、ダイアグラムをどこでも悪化させず、どこかで改善する場合に受け入れられます。2つの新しいRPCがその仕組みを公開します。クラスターの内容と順序にはgetmempoolcluster、ダイアグラム自体にはgetmempoolfeeratediagramです。

どこで目にするか

クラスターメムプールは、未承認の支出をあまりに多く連ねたときのエラーメッセージとして、また、問題を予想していた場面で成功する手数料の引き上げとして現れます。

ウォレットの利用者がこの上限に遭遇するのは、よくある1つの状況です。混雑した時期に未承認のおつりを何度も使い続ける場合です。この上限は、個人には余裕があり、支払いをまとめて処理するサービスには厳しく、おおよそその数字はそうしたサービスのために書かれたものです。ウォレットが支出を拒否し、クラスターに言及した場合、対処法は手数料を上げることではなく、確認を1つ待つことです。

より静かな利点は、child-pays-for-parentが今やその名のとおりに機能することです。詰まったトランザクションの出力を高い手数料率で使い、手数料を引き上げると、ノードはその2つが既に待機列にあるものより優れているかを即座に判断できるため、近似ではなく1つの手順で明確な答えが得られます。

クラスターメムプールvsメムプール

メムプールとは、ノードが保持しているトランザクションの集合であり、クラスターメムプールとは、1つのプログラムがその集合を内部でどう整理するかです。コンセンサスルールは何も変わりませんでしたし、フォークも起きておらず、旧バージョンを実行し続けるノードも、より劣った記帳で同じトランザクションを保持します。この区別が重要なのは、この変更が、ビットコインがトランザクションの連鎖についてネットワーク全体の新しい規則を得たかのように報じられることがあるためです。そうではありません。これはポリシーであり、ノードごとに選ばれるもので、どの運営者も自分のマシン上でコマンドライン引数によって上限を動かせます。

混同しやすい用語

よくある質問

クラスターメムプールはビットコインのコンセンサスルールを変更しますか?

いいえ。これは1つの実装内のメムプールポリシーであるため、ノードが何を保持し中継するかは変えますが、何が有効なブロックとみなされるかは決して変えません。旧バージョンを実行するノードは、同じチェーン上で同じトランザクションを保持し続けます。

ウォレットがトランザクションはクラスターの上限を超えていると表示したのはなぜですか?

未承認の支出の連鎖を作り、その連結グループが64件のトランザクションまたは101kBの仮想サイズの上限に達したためです。手数料を上げても解決しません。先のトランザクションの1つが確認されるのを待ってください。それによりグループが分かれます。

関連用語

プロトコルとアップグレードのその他の用語

このページを英語で読む