MSTR Cat

ブロックチェーン/レベル II · 仕組み/2.2 トランザクション/レッスン 5

メンプール

各ノードが独立して管理するローカルな待合室

用意するものメンプール画面のあるブロックエクスプローラー(例:mempool.space)オプション:Bitcoin Coreノード('getmempoolinfo')

問い

  1. あるフルノードで有効なトランザクションが、隣のノードに拒否されるのはなぜでしょうか?
  2. ノードがメモリの上限に達すると、手数料が最も低いトランザクションはどうなるのでしょうか?
  3. マイナーは、どの未承認トランザクションを次のブロックに含めるべきかを、どのように決めるのでしょうか?

探究

  1. メンプールは中央のデータベースではなく、各フルノードが独立して管理する、ローカルなメモリ上のリストです。Bitcoin Coreは、長く滞留しすぎた未承認トランザクションを削除します。有効期限がバージョン0.12で導入された当初は72時間でしたが、バージョン0.14以降は2週間(336時間)です。トランザクションを異なる順序で受け取ったり、異なる設定で動作していたりする2つのノードは、わずかに異なるメンプールを持つことになります。
  2. 各ノードは、コンセンサスルール(有効なスクリプト、二重支払いがないことなど)に加えて、最低手数料率やRBF設定などのローカルポリシールールを適用します。トランザクションが特定のノードの最低手数料率の基準を満たさない場合、他のノードが受け入れていても、そのノードはそれを拒否するか、すでに取り込んでいれば追い出します。
  3. デフォルトでは、Bitcoin Coreはbitcoin.confファイルの'maxmempool'パラメータによって、メンプールのサイズを300 MBに制限しています。この上限に達すると、ノードは最低手数料の基準を動的に引き上げてより収益性の高いトランザクションのための空きを作り、価値の最も低いものから追い出します。'getmempoolinfo'を実行し、メンプールが埋まるにつれて'mempoolminfee'が固定値の'minrelaytxfee'を上回っていく様子を観察してみましょう。
  4. マイナーは、自分のメンプールからトランザクションを選んでブロックを構築します。その際、未承認の親トランザクションとあわせて評価した、仮想バイトあたりの手数料が最も高いものを優先します。有効なブロックが届くと、すべてのノードは承認済みのトランザクションと、それと競合するトランザクションを自分のメンプールから削除します。
  5. ポリシーはコンセンサスではありません。手数料の下限を下回っていたり、非標準の形式を使っていたりするために大半のノードが中継を拒否するトランザクションでも、ブロック内では有効になり得ます。そうしたトランザクションを直接受け付けるマイナーもいます。したがって、各ノードのメンプールは次のブロックに何が含まれるかの推定にすぎず、境界付近ではノードごとに食い違うことがあります。
  6. Bitcoin Coreはシャットダウン時にメンプールをmempool.datというファイルに保存し、起動時に再読み込みします。その際、もはや有効でないものは破棄されます。そのため、再起動したノードが空のメンプールから始まることはありません。メンプールの働きを見るには、mempool.spaceを開いてみましょう。予測ブロックには、マイナーが次に含める可能性の高いものが表示され、新しいブロックが生まれるたびに最上層が取り除かれます。

重要な事実

  • メンプールは単一の共通サービスではなく、各ノード上にあるローカルなメモリプールです。
  • Bitcoin Coreは、'maxmempool'によってメンプールのサイズ上限をデフォルトで300 MBに設定しています。
  • Bitcoin Coreは、デフォルトで未承認トランザクションを2週間(バージョン0.14以降、336時間)で削除します。
  • ノードは、コンセンサスルールと、最低手数料率を含むローカルポリシールールの両方を適用します。
  • メンプールが満杯になると、ノードは手数料の基準を動的に引き上げ、収益性の低いトランザクションを追い出します。
  • Bitcoin Coreはシャットダウン時にメンプールを'mempool.dat'に保存するため、再起動後もメンプールが維持されます。

演習 九・六・三・一

9集めるブロックエクスプローラーのメンプール画面から、未承認のトランザクションを9件挙げてください。それぞれの現在の手数料率、仮想バイト単位のサイズ、承認数(すべて0)を記録してください。
6まとめる9件のトランザクションを、滞留している可能性のある理由に基づいて6つのカテゴリーに分類してください:低い手数料率、大きなサイズ、RBFシグナリング、未承認のインプット、オーファン状態、その他のポリシー上の理由。
3絞り込む6つのグループを、コンセンサス上は有効なトランザクションであっても、ノードがそれを拒否したりメンプールから追い出したりする3つの主な理由に絞り込んでください。
1結晶化するノード間のローカルポリシーの違いが、ネットワーク全体で未承認トランザクションの見え方を断片的で共通性のないものにする仕組みを、1文で説明してください。

事実確認

日付、数字、主張は、下記に記載された公表資料と照合して確認しました。

インタラクティブ版で開く →

EN PT ES ZH KO RU DE FR MS