本文へ移動

メンプールとトランザクションプール

Ethereumのトランザクション受入れ、pending/queuedノンス、伝播、手数料適格性、置換、非公開注文フロー、取り込み、排除、再編成をノードローカルの視点で解説します。

更新日

教育目的の情報であり、取引またはセキュリティの助言ではありません。メンプールの表示はノードローカルで変動し、ポリシーに左右されます。トランザクションを受理済みまたは完了済みとみなす前に、対象チェーン、クライアント、ノンス、手数料上限、送信経路、レシート、ファイナリティを確認してください。

端的な答え

メンプール(トランザクションプール)とは、ノードが現在の検証規則とポリシーに基づいて受け入れたものの、正規チェーンにはまだ含まれていない署名済みトランザクションを、メモリー上、一部は永続ストレージにも一時保持する集合です。コンセンサスオブジェクトでも、ネットワーク共通のキューでも、取り込みの約束でもありません。誠実な二つのノードでも、受信したgossip、クライアントや設定、再起動、エントリー排除、公開/非公開の送信経路が異なれば、保有するトランザクションは異なります。

Ethereum実行クライアントでは、アカウントの次の nonce を持つ実行可能なトランザクションをpending、ノンスギャップで止まる後続ノンスをqueuedと呼ぶのが一般的です。これらはクライアントインターフェース上のラベルで、最終的なプロトコル状態ではありません。トランザクションは、受入れ前に拒否される、伝播される、同じ送信者とノンスを持つ別の署名済みトランザクションに置換される、排除される、破棄される、正常に取り込まれる、取り込まれてからリバートする、再編成後に再検討される、といった状態を取り得ます。

1
作成

ウォレットが宛先、金額、手数料、使用済み入力や nonce などのリプレイ防止情報を指定します。

仕組み

  1. 環境を固定します。チェーンID、実行クライアントとバージョン、現在のチェーンヘッドと基本手数料、トランザクション形式、送信者、ノンス、価値、calldata、gas上限、手数料上限、送信経路を記録します。公開gossip、非公開リレー/ビルダー、ERC-4337 UserOperation の経路を分けます。これらは一つの共通プールを共有しません。
  2. 署名済みバイト列をデコードし、受入れ前検査を行います。署名と送信者、チェーンID、形式とエンコード、intrinsic gas、ノンス関係、価値と最大手数料エクスポージャーを賄う残高、手数料フィールド、必要なblob sidecarを検証します。ここでの拒否はEVM REVERT ではなく、通常はレシートもオンチェーン手数料も発生しません。
  3. ローカルプールのポリシーを把握します。クライアントがpending/queuedのどちらに分類したか、アカウント単位と全体の容量、最低手数料フィルター、保持期間、ローカルアカウントの例外、置換時の引上げ幅、永続化挙動を記録します。Gethのフラグと既定値が説明するのはGethであり、Ethereumコンセンサスや全プロバイダーではありません。
  4. 全世界共通の表示を仮定せずに伝播を観測します。独立ノード間で生のトランザクションハッシュと署名済みバイト列を比較しますが、不在には複数の意味があります。ノードが未受信、ローカルポリシーで拒否、すでに排除、またはプール非公開かもしれません。非公開経路は公開gossipを迂回できますが、運営者とビルダーにはトランザクションを開示します。
  5. 候補ブロック時点で取込適格性と順序を評価します。type-2トランザクションの実行gas価格は min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas) です。基本手数料が最高手数料を超えれば、その上限では取り込めません。ノンス依存、gas/blob上限、状態妥当性、ビルダーのbundle、MEVは、初回観測時刻より大きく影響する場合があります。
  6. ライフサイクルを意図的に管理します。待機するか、稼働チェーン、送信者、置換ポリシーを確認してから、同一ノンスの置換トランザクションを根拠とともに送信します。同じノンスで自分宛てに送るトランザクションも置換候補にすぎず、キャンセル原語ではありません。あるエクスプローラーから元の取引が消えただけで、価値移転を再送してはいけません。
  7. コンセンサス状態と照合します。全署名済みハッシュと置換系譜を保存し、必要な確認またはファイナリティ水準で、正規レシート、ブロックハッシュ、status、gas使用量、ログ、消費済みノンス、アカウント/コントラクト状態を確認します。再編成でブロックが除外されると、有効なトランザクションが一部のローカルプールに戻る可能性がありますが、その挙動はクライアントと状態に依存します。

計算例

  • 手数料上限の適格性。 type-2送金の gasUsed = 21,000baseFeePerGas = 32 gweimaxPriorityFeePerGas = 3 gweimaxFeePerGas = 34 gwei とします。実効価格は min(34, 32 + 3) = 34 gwei なので、実際のチップは 2 gwei です。手数料は 21,000 * 34 = 714,000 gwei = 0.000714 ETH で、0.000672 ETH の基本手数料バーンと 0.000042 ETH のチップに分かれます。候補ブロックの基本手数料が 35 gwei に上がれば、34 gwei の上限ではそのブロックに取り込めません。
  • ノンスギャップ。 正規アカウントノンスを 10 とします。ローカルプールはノンス 1012 のトランザクションを受信しましたが、11 はありません。10 をpending、12 をqueuedと分類できます。ノンス 10 が取り込まれると正規ノンスは 11 になります。12 はブロックされたままで、有効なノンス 11 のトランザクションが取り込まれるまで進みません。プールでノンス 12 が見えても、単独で実行可能にはなりません。
  • ポリシー依存の置換。 教材用Geth設定で txpool.pricebump = 10、旧トランザクションが maxFeePerGas = 40 gweimaxPriorityFeePerGas = 2 gwei を持つとします。10%引上げで計算した置換基準は 44 gwei2.2 gwei です。43 gwei3 gwei の提案は、一方の上限が設定基準に届かないため拒否され得ます。44 gwei2.2 gwei なら教材上の両基準に達します。整数丸め、取引形式、受入れロジックはバージョン固有で、別ノードは別候補を保持し得ます。
  • 全世界共通のプールはない。 ノードAが異なるトランザクションハッシュを 120,000 件、ノードBが 100,000 件報告し、共通部分が 80,000 件だとします。和集合は 120,000 + 100,000 - 80,000 = 140,000、Jaccard重複率は 80,000 / 140,000 = 57.1428571429% です。Aだけに見えるハッシュは 40,000 件、Bだけは 20,000 件です。どちらの件数からも、ビルダー、非公開リレー、他のネットワーク参加者が何を見ているかは証明できません。

リスク

  • 誤ったチェーンIDまたはネットワークで署名・ブロードキャストする。
  • 悪意ある、古い、または設定不良のRPCエンドポイントを信頼する。
  • 署名、トランザクション形式、エンコード、blob sidecarが無効である。
  • 価値と最大手数料エクスポージャーを賄う残高が不足する。
  • intrinsic gasまたはcalldata規則により受入れ前に拒否される。
  • ノンスが使用済みまたは低すぎる。
  • ノンスギャップにより後続トランザクションがqueuedに残る。
  • 同一ノンスの置換がローカルポリシーで引上げ不足と判定される。
  • 最高手数料が候補ブロックの基本手数料を下回る。
  • 実効優先手数料が低い、またはリソース制約で取込みが遅れる。
  • クライアント、プロバイダー、バージョン、設定ポリシーが一致しない。
  • プール容量、期限切れ、再起動、排除によりトランザクションが消える。
  • ピア伝播不良、Eclipse攻撃、選択的リレー。
  • 非公開リレーの漏えい、検閲、停止、またはビルダー不参加。
  • 公開注文フローへのフロントラン、サンドイッチ、その他MEV。
  • ビルダーの並べ替え、bundle、非公開トランザクションで実行状態が変わる。
  • シミュレーションが取込み前に古くなる。
  • 根拠のない重複送信、または置換系譜の喪失。
  • プール受入れ後も、取込み時に REVERT、out-of-gas、捕捉された子呼出し失敗が起きる。
  • 再編成やファイナリティを誤解する、またはERC-4337代替メンプールを通常のtxpoolとみなす。

よくある誤解

  • メンプールは全ネットワークで同期した先入れ先出しキューである。
  • トランザクションハッシュがあれば、ネットワークが受理・伝播した証明になる。
  • Pendingは、取込み済み、成功、不可逆、または受取人への支払済みを意味する。
  • 十分に高い手数料なら、取込みと成功を保証できる。
  • 非公開送信経路なら、自動的に機密、検閲耐性、上陸保証を得られる。

関連トピック

出典

ナビゲーション

Wiki を検索...