Mempoolとは?
執筆者 Alchemy
ブロックチェーンのトランザクションにおいて、メンプール(メモリプール)とは、ノードによる検証を経てブロックに取り込まれるのを待っている保留中のトランザクションのリストです。これは、従来のソフトウェア開発において、本番環境にリリースする前にテストや品質管理を行う「ステージング」環境を使用することと似ています。
従来の「ステージング」環境が一元化されているのに対し、メンプールは各ノードがそれぞれ独自に管理しています。トランザクションフローを見ることで、メンプールの目的と、それにアクセスすることで得られる重要な情報について理解しましょう。
Ethereumのトランザクションフロー
Ethereumのトランザクションは、次の3種類に分類されます。
1)シンプルな送金 - ある公開アドレスから別のアドレスへ価値が送られるものです。これは、NFTやサービスに対する支払いである場合があります。
2)スマートコントラクトのデプロイ - スマートコントラクトがブロックチェーン上にデプロイされる際には、トランザクションが生成されます。
3)スマートコントラクトの実行 - あるアドレスがスマートコントラクトのアドレスに対して資金やデータを送りたい場合です。
Alchemyのモニタリングツールを使ってEthereumのトランザクションを監視することができ、Alchemy Transfers APIのようなツールを使って、あるアドレスのトランザクション履歴を調べることができます。
Ethereumのトランザクションは、種類にかかわらずすべて同じライフサイクルをたどります。
1)ユーザーがトランザクションを作成し、自分の秘密鍵を使って署名します。
2)ノードがトランザクションを受け取り、メンプールに格納します。
3)メンプール内にある間、ノードはトランザクションの検証テストを行います。メンプールがこのテストに合格すると、トランザクションのステータスは「Pending(保留中)」に移行します。
4)ノードは保留中のトランザクションをネットワーク上の他のすべてのノードにブロードキャストし、それぞれのメンプールにも追加させます。
5)新しいブロックが生成される際、ブロックコンストラクタはガス価格の高いトランザクションから優先的に取り込みます。これにより、トランザクションは「Successful(成功)」状態に移行します。
6)トランザクションが含まれるブロックの後に、ノードが新しいブロックを追加するたびに、そのトランザクションは確認(confirmation)を受け取ります。時間の経過とともにブロックが再編成されるリスクが減少するため、これによりトランザクションがブロックチェーンに永続的に追加されたという保証が得られます。

トランザクションの送信方法や、実際に自分でトランザクションを送る方法についてはこちらで詳しく学べます。
メンプールの目的
ブロックチェーンは不変であるため、ブロックチェーンに記録されるトランザクションが正しくエラーのないものであることが重要です。メンプールをホストするノードは、トランザクションがブロックチェーンにコミットされるプロセスが始まる前に、各トランザクションを検証するという重要な役割を担っています。
開発者にとっては、トランザクションが失敗したり「Pending」状態のまま止まったりする理由を理解するために、これらの検証テストについて把握しておくことが重要です。
1. 資金の有無
ノードは、送信元アドレスが送金額とトランザクション完了に必要なガス代の両方をカバーするのに十分な資金を持っているかどうかを検証します。この検証に失敗すると、トランザクションはメンプールから削除されます。この検証を確実に通過させるためには、送金額や送信先アドレスなどのパラメータを正しく指定することが重要です。
2. トランザクション署名の有効性
各トランザクションは、送信元アドレスによって署名されている必要があります。これは、送信者が確かにそのアドレスの所有者であることを識別するためのものです。ノードは、その署名が送信元アドレスに紐づく正しいものであるかどうかを検証します。

3. 正しいnonce値
nonce値とは、送信元アドレスから送信されたトランザクションの数を表す値です。送信元が新しいトランザクションを送信するたびに、nonce値は1ずつ増加します。nonce値は、あるアドレスから送られる各トランザクションが送信された順序どおりに処理されることを強制するため、重要な役割を持っています。

トランザクションのnonce値が重複したりスキップされたりしないようにすることで、二重支払いや利用可能な資金以上の支払いといった問題を防ぐことができます。ノードは、保留中のトランザクションに正しいnonce値が付与されているかを検証します。このテストに失敗した場合、トランザクションは先に進みません。
4. ガス価格
メンプールによっては、同時に保持できるトランザクションの数に上限があります。Ethereumクライアントとして広く使われているGethには、デフォルトでpendingが4096件、queuedが1024件という上限が設定されています。この上限に達すると、容量を管理するために、ガス価格が最も低いトランザクションからメンプールから削除されます。
メンプールへのアクセス
メンプール構造の大きな利点の一つは、保留中のトランザクションを置き換え用のトランザクションで上書きし、修正、高速化、あるいは完全なキャンセルができることです。
メンプールに詰まった保留中のトランザクションを修正する以外にも、メンプールへのアクセスは次のような場面で役立ちます。
1. ガス代の見積もり
現在保留中のトランザクションのリストと、それに付随する手数料を確認することで、手数料の払い過ぎを避けられます。
2. NFTマイニング
メンプールスキャナーを使うことで、ユーザーはNFTコントラクトとやり取りしている保留中のトランザクションを把握し、より高いガス代を提示してそれらのトランザクションを出し抜くことができます。
3. パフォーマンスに関する知見
Notify APIのようなサービスを利用することで、スマートコントラクトの開発者はメンプールからスマートコントラクトのアクティビティに関する知見を得られます。保留中のトランザクションは、スマートコントラクトのバグや脆弱性についての情報を提供してくれます。
まとめ
メンプールは、ブロックチェーンの機能と健全性において重要な役割を果たしています。ノードがトランザクションを検証し、マイナーがガス代に応じて保留中のトランザクションに優先順位をつけられるようにすることは、トランザクションの流れにとって不可欠な要素です。
開発者はまた、メンプールが提供するデータを活用して、自分たちのスマートコントラクトにおけるコストや問題を減らすこともできます。メンプールはブロックチェーンの「ダークフォレスト」としばしば形容されてきましたが、Alchemy Monitoringのようなツールを備えたプラットフォームによって、ユーザーはこの重要なステップをより明確に把握できるようになります。
関連する概要
Ethereum2026年7月28日
Robinhood Chainでミームコインをローンチする
FoundryとAlchemy RPCを使ってRobinhood Chainメインネットに固定供給のERC20を書いてデプロイする、またはAlchemy CLIでローンチ全体をコーディングエージェントに任せる。
Ethereum2025年11月18日
Ethereum Fusakaアップグレードとは?12個のEIPを解説する開発者向けガイド
Fusakaアップグレードの実践的な解説。12個の主要EIPと、それらがEthereumスタック全体のデータ可用性、暗号技術、ガスコスト、バリデーター運用に与える変化について説明する。
Ethereum2025年5月19日
EIP-7702:Pectra後のEthereum開発者向けクイック統合ガイド
EthereumはEIP-7702という重要なアップグレードを目前に控えている。すべての開発者向けに、統合時の考慮点をまとめたクイックガイド。

ブロックチェーンで魔法を生み出す
Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。