用語集 / トランザクションと手数料
メモリプール
別名はメンプール、Mempoolです。
- メモリプールとは?
- メモリプールとは、ノードが受信したもののまだブロックに入っているのを見ていない有効なトランザクションの集合で、マイナーが取り上げるのを待つ間、メモリ上に保持されます。
単一のmempoolは存在しません。すべてのノードがそれぞれ独自のmempoolを保持し、デフォルトではBitcoin Coreで300メガバイトに上限が設定され、その上限に達すると最も安いトランザクションを破棄します。mempoolのウェブサイトが表示するのは、1つのノードから見たキューの状態であり、手数料の選択には十分な精度ですが、決して権威あるものではありません。
仕組み
到着は順番待ちの整理券ではなく、フィルタリングのプロセスです。トランザクションがノードに届くと、まずコンセンサスルールに照らして検査され、次にそのノード独自のリレーポリシーに照らして検査され、両方を通過した場合にのみ、ノードはそれを保存してピアへ転送します。拒否されたトランザクションは単に転送されず、十分な数のピアが拒否すれば、マイナーにはまったく届きません。
保存領域には上限があり、待合室が無限だと期待する人々を驚かせます。-maxmempoolの設定はデフォルトで300メガバイトであり、保存領域が一杯になると、ノードは手数料率が最も低いトランザクションを追い出し、自身の受付下限を通常の最低額より引き上げます。-mempoolexpiry時間を過ぎてもなお待機しているものも破棄され、そのデフォルトは336時間、すなわち正確に14日です。Bitcoin Core 0.14.0以降、内容はmempool.datファイルに書き出されることで再起動後も保持されるため、ノードを停止しても、それが知っていた内容が消えることはなくなりました。
順序はサイズ当たりの価格で決まります。候補ブロックを組み立てるマイナーは手数料率で並べ替え、4,000,000のweight単位の予算を上から埋めていき、トランザクションを、それが依存する未確認の親トランザクションと併せて評価します。Bitcoin Core 31.0はまさにその考え方を中心にmempoolを作り直し、つながりのあるトランザクションを最大64件のメンバーからなるクラスターにまとめ、実際にマイニングされる際の手数料率で順位付けします。到着時刻はまったく考慮されず、そのため今朝ブロードキャストしたトランザクションが、より多く支払う後発のトランザクションに午後じゅう追い越されることがあります。
各ノードが独自の設定を適用するため、内容はマシンごとに異なります。1時間前に再起動したノードは1か月稼働しているノードより知っていることが少なく、Bitcoin Knotsを実行しているノードはBitcoin Coreを実行しているノードとは異なるフィルタリングを行い、マイナーにはネットワークをまったく経由しなかったトランザクションが直接渡されることもあります。
ビットコインを購入するときにこれが重要な理由
コインを移動する前にキューを確認することは、ビットコインにおいて最も安上がりな習慣です。同じ出金でも、静かな週末には数百サトシで済み、混雑時には数万サトシかかることがあり、ウォレットは自分がどちらの状況にいるのかを警告してくれません。出金を押す前に次のブロック向けの現在の手数料率を一目見ることは、ウォレットが提供するどんな手数料設定よりも価値があります。
どの取引所を使うかによって、その重要度は変わります。Binance、Kraken、Coinbaseはいずれもビットコインの出金にネットワークに基づく価格を付けるため、提示される金額はキューが深いときに上がり、解消すると下がります。静かな時間帯を待つことは実際の金額に見合います。一方、固定の出金手数料を公表している取引所は、キューの状態にかかわらず同じ金額を徴収するため、穏やかな日には割高であり、混雑時にはお得になります。自分がどちらのモデルにいるのかを知ることで、待つことに意味があるかどうかが分かります。
混雑は予告なく、また支払いとは無関係な理由でも発生します。2023年のトークン発行の波と2024年4月のRunesのローンチはいずれもブロックをデータで埋め尽くし、普通の貯蓄者を、参加する気などまったくなかった入札合戦へと押し込みました。SwanやRiverを通じて自動出金付きの定期購入を行っている場合、妥当な対応は、キューの状態を無視する固定の週次スケジュールではなく、より少ない回数でより大きなトランザクションにまとめてコインを移動させるしきい値です。
出金を押す前にキューを読む
mempoolのダッシュボードを開くと、3つのものが目に入ります。待機中のトランザクション、それらが位置する手数料率の帯、そしてその帯が埋めることになる予測ブロックです。次のブロック向けと表示された帯は、およそ10分でマイニングされるために支払う額であり、より下の帯は待つために支払う額です。
1枚のコインを1つの出力へ送るトランザクションで具体的な数字を出してみます。このトランザクションはネイティブSegWitの入力で約110vBであるため、2 sat/vBでは220サトシ、90 sat/vBでは9,900サトシかかります。トランザクションはどちらの場合もバイト単位で同一です。異なるのは選んだ時点だけであり、それがこの話のすべてです。
下限を知っておくことも重要です。低すぎる入札をすると、トランザクションがピアにまったく受け入れられない可能性があり、そうなるとエクスプローラーに表示されず、手数料を引き上げることもできません。意図的に少し低い入札をする場合、あなたは14日以内にキューが空になることに賭けていることになります。それを過ぎるとノードはトランザクションを破棄し、ウォレットのコインは再び使用可能になります。
mempool vs mempoolポリシー
mempoolは容器であり、ポリシーは門番です。容器は検査を通過したものをすべて保持し、そのサイズと有効期限はポリシーと同様に設定可能ですが、両者は異なる問いに答えます。ポリシーはトランザクションを受け入れて先へ転送してよいかを決め、mempoolはその後何が起こるか、空間が不足したときにどのトランザクションが追い出されるかを含めて決めます。
mempool vsブロック
ブロックは確定した永続的な記録であり、4,000,000weight単位という厳格な上限があります。mempoolは、次のいくつかのブロックに何が含まれ得るかについての、一時的で私的な、原則として上限のない推測です。トランザクションはマイニングされるとmempoolを離れ、それを含むブランチが放棄された場合にも再び離れ、その場合は待機状態に戻ります。mempoolに入っていることは、誰かによる何らかの約束ではありません。