Tóm tắt nhanh
Mempool (Memory Pool) là vùng bộ nhớ tạm trên mỗi node blockchain, lưu trữ các transaction đã broadcast nhưng chưa được đưa vào block. Đây là "phòng chờ" của mọi giao dịch — và đồng thời là chiến trường nơi MEV bot, miner, validator tranh giành lợi thế kinh tế.
01 Mempool là gì?
Khi bạn gửi một giao dịch trên Ethereum hay Bitcoin, transaction đó không được ghi lên blockchain ngay lập tức. Thay vào đó, nó bước vào một "phòng chờ" gọi là mempool — viết tắt của Memory Pool, còn gọi là Transaction Pool.
Mempool tồn tại cục bộ trên mỗi node mạng. Không có một mempool trung tâm duy nhất — mỗi node có mempool riêng, nhưng nhờ gossip protocol, nội dung mempool gần như đồng nhất trên toàn mạng trong vài giây.
Mempool giải quyết một bất đối xứng cơ bản: mạng có thể nhận hàng nghìn transaction mỗi giây, nhưng mỗi block chỉ chứa được một lượng giới hạn. Mempool là buffer trung gian xử lý chênh lệch này.
Về mặt kỹ thuật, mempool được lưu trong RAM — không phải ổ cứng. Nếu node restart, mempool bị xóa sạch. Transaction cần re-broadcast hoặc sẽ biến mất nếu không ai gửi lại.
02 Vòng đời của một Transaction
Hiểu mempool đòi hỏi phải nắm toàn bộ hành trình của transaction từ lúc ký đến lúc xác nhận:
Bước 1 — Tạo và ký transaction
Người dùng ký transaction bằng private key. Transaction chứa: địa chỉ người gửi, người nhận, giá trị, gas limit, gas price/priority fee, nonce, và data (nếu có). Chữ ký ECDSA chứng minh quyền sở hữu mà không tiết lộ private key.
Bước 2 — Broadcast lên mạng
Ví gửi transaction đến node qua RPC. Node validate cơ bản (chữ ký hợp lệ, balance đủ, nonce đúng thứ tự) rồi thêm vào mempool. Gossip protocol lan transaction này đến các node khác trong vài giây.
Bước 3 — Nằm trong Mempool
Transaction ở trong mempool cho đến khi: (a) được validator chọn vào block, (b) bị drop vì mempool đầy, hoặc (c) hết hạn sau timeout (thường 14 ngày). Trong thời gian này, bất kỳ ai cũng có thể đọc nội dung transaction — đây là gốc rễ của vấn đề MEV.
Bước 4 — Vào Block và Finalize
Validator/miner quét mempool, chọn transaction, đóng gói thành block và broadcast. Transaction biến mất khỏi mempool toàn mạng khi block được finalize.
03 Cấu trúc bên trong Mempool
Mempool không chỉ là một danh sách đơn giản. Cấu trúc bên trong được tối ưu để validator nhanh chóng chọn transaction tốt nhất:
Pending Pool vs Queued Pool
Ethereum chia mempool thành hai phần:
- Pending Pool: Transaction sẵn sàng xử lý ngay — nonce đúng thứ tự, balance đủ. Đây là pool validator ưu tiên chọn.
- Queued Pool: Transaction có nonce "tương lai" — ví dụ nonce 7 khi nonce 5 chưa xử lý. Phải chờ các nonce trước xong mới chuyển sang pending.
Giới hạn kích thước Mempool
Mỗi node có giới hạn tổng transaction trong mempool (Geth mặc định: 4096 pending + 1024 queued). Khi đầy, node drop transaction gas thấp nhất để nhường chỗ transaction mới gas cao hơn.
| Client | Pending Limit | Queued Limit |
|---|---|---|
| Geth (go-ethereum) | 4,096 tx | 1,024 tx |
| Nethermind | 2,048 tx | 1,024 tx |
| Besu | 4,096 tx | 1,024 tx |
| Bitcoin Core | ~300 MB tổng | — |
Replace-by-Fee (RBF)
Để thay thế transaction đang pending, gửi lại cùng nonce với gas fee cao hơn ít nhất 10%. Trên Ethereum, gửi tx cùng nonce với gas rất cao và value = 0 đến chính mình sẽ hủy tx cũ hiệu quả.
04 Gas Fee và Prioritization
Cách validator chọn transaction từ mempool quyết định trực tiếp trải nghiệm người dùng. Hai mô hình chính:
Mô hình cũ — First Price Auction (trước EIP-1559)
Người dùng đặt gasPrice — bid cao nhất thắng. Đây là đấu giá mù: không biết người khác đặt bao nhiêu. Dẫn đến overpaying phổ biến, trải nghiệm không ổn định và mempool thường xuyên tắc nghẽn trong các sự kiện lớn.
Mô hình EIP-1559 (Ethereum hiện tại)
Mỗi block có Base Fee (phí tối thiểu tự động tăng/giảm) và người dùng đặt thêm Priority Tip để "thưởng" validator ưu tiên. Base Fee bị đốt (burn), Priority Tip về tay validator.
Builder Optimization
Trong thực tế (khi dùng MEV-Boost), builder không chỉ chọn tx gas cao nhất. Họ tối ưu tổng revenue của block — bao gồm gas fee, MEV opportunity, và thứ tự tx tối ưu. Điều này tạo ra thị trường phức tạp hơn nhiều so với "chỉ đặt gas cao là xong".
05 Mempool Congestion — Khi Mempool Quá Tải
Mempool congestion xảy ra khi lượng transaction vào mạng vượt khả năng xử lý. Hệ quả:
- Gas fee tăng vọt: Người dùng phải đặt gas ngày càng cao để cạnh tranh vào block.
- Transaction chờ lâu: Tx gas thấp có thể stuck hàng giờ, thậm chí ngày.
- Mempool drop: Node tự động drop tx gas thấp khi bộ nhớ đầy.
- Poor UX: Người dùng mới không hiểu tại sao tx bị stuck.
Các sự kiện congestion lịch sử
| Sự kiện | Thời điểm | Gas đỉnh | Nguyên nhân |
|---|---|---|---|
| CryptoKitties | 12/2017 | ~50 Gwei | NFT game viral đầu tiên |
| ICO Craze | 2018 | ~100 Gwei | Hàng trăm ICO đồng thời |
| DeFi Summer | 2020 | ~700 Gwei | Uniswap, Compound, SushiSwap |
| NFT Boom | 2021 | ~10,000 Gwei | OpenSea, BAYC |
Chính những sự kiện này thúc đẩy phát triển Layer 2 và EIP-4844 để giảm tải cho Ethereum mainnet.
06 Mempool và MEV — Chiến trường Kinh tế
Tính công khai của mempool tạo ra cơ hội — và rủi ro. Vì bất kỳ ai cũng có thể đọc pending transaction trước khi chúng xác nhận, một nền kinh tế ngầm đã hình thành xung quanh mempool.
Tại sao Mempool là Public?
Để mạng propagate transaction, node phải chia sẻ nội dung mempool. Ai chạy node đều thấy toàn bộ pending transaction — bao gồm: ai đang mua gì trên DEX, ai đang liquidate position nào, ai đang interact với contract nào.
Các hình thức MEV từ Mempool
- Front-running: Bot thấy bạn mua token X → đặt tx mua X trước với gas cao hơn → giá tăng → bán lại cho bạn giá cao hơn.
- Sandwich Attack: Mua trước + bán ngay sau tx của bạn. Xem chi tiết tại Sandwich Attack là gì.
- Back-running: Thực hiện tx ngay sau một tx lớn — ví dụ arbitrage sau price slippage.
- Liquidation Race: Khi position DeFi đủ điều kiện bị liquidate, hàng chục bot cùng lúc gửi tx tranh liquidation bonus.
MEV là vấn đề hệ thống của blockchain có public mempool. Tổng MEV extracted trên Ethereum vượt $1.5 tỷ USD từ 2020. Đây là lý do hệ sinh thái Flashbots và MEV-Boost ra đời.
07 Private Mempool — Giải pháp chống MEV
Private mempool cho phép người dùng gửi transaction trực tiếp đến block builder mà không qua public mempool. Bot MEV không thể thấy, không thể front-run.
Flashbots Protect RPC
Flashbots cung cấp endpoint RPC thay thế. Thay vì gửi tx qua node thông thường (vào public mempool), bạn gửi qua Flashbots RPC → MEV-Boost relay → block builder. Transaction không hiện trong mempool công khai cho đến khi block được propose.
MEV Blocker và Intent-based Architectures
MEV Blocker (CoW Protocol + Beaver Build) auction order flow đến nhiều solver cạnh tranh, trả lại MEV cho người dùng. 1inch Fusion, Uniswap X dùng intent-based architecture — tránh mempool bằng cách để solver tìm đường thực hiện off-chain.
Đánh đổi của Private Mempool
- Ưu điểm: Bảo vệ khỏi MEV, xử lý nhanh và ổn định hơn.
- Nhược điểm: Phụ thuộc vào relay/builder. Tiềm ẩn censorship risk nếu relay filter tx (như vụ OFAC controversy của Flashbots 2022).
08 Bitcoin vs Ethereum Mempool
| Tiêu chí | Bitcoin Mempool | Ethereum Mempool |
|---|---|---|
| Đơn vị phí | sat/vByte | Gwei/gas (base fee + tip) |
| Block time | ~10 phút | ~12 giây |
| MEV complexity | Thấp (simple payments) | Rất cao (DeFi, NFT, arbitrage) |
| Nonce mechanism | UTXO (không cần nonce) | Account-based, nonce tăng dần |
| RBF | Opt-in RBF (BIP 125) | Mặc định hỗ trợ (10% gas bump) |
| Mempool timeout | ~2 tuần | ~14 ngày |
UTXO vs Account và Vấn đề Ordering
Bitcoin dùng UTXO — mỗi "đồng tiền" là output độc lập, không cần nonce ordering. Tuy nhiên UTXO có thể chain nhau: nếu tx A chưa confirm, tx B dùng output của A cũng phải chờ (Child-Pays-for-Parent — CPFP là cơ chế để tăng tốc tx cha thông qua tx con có fee cao).
09 Mempool trong Layer 2 — Sequencer Pool
Layer 2 Rollup thay đổi hoàn toàn cách mempool hoạt động. Thay vì mempool phân tán, L2 dùng Sequencer tập trung — một entity duy nhất nhận và sắp xếp transaction.
Centralized Sequencer Mempool
Trên Arbitrum, Optimism, Base: transaction gửi thẳng đến sequencer node. Sequencer có mempool riêng, sắp xếp theo FIFO (first in, first out). Block time rất nhanh: 250ms đến 2 giây. Gas fee thấp hơn nhiều L1.
Rủi ro: sequencer là single point of failure, có thể lý thuyết censor hoặc front-run transaction. Đây là vấn đề trust assumption lớn của L2 hiện tại. Xem thêm Sequencer là gì.
Decentralized Sequencer — Hướng đi tương lai
Espresso Systems, Astria, Radius đang xây shared sequencer network với nhiều sequencer cạnh tranh — giảm censorship risk và cải thiện MEV fairness trên L2. Đây là bước tiến quan trọng để L2 thực sự phi tập trung.
10 Câu hỏi thường gặp (FAQ)
Mempool (Memory Pool) là vùng bộ nhớ tạm của mỗi node blockchain, lưu trữ transaction đã broadcast nhưng chưa vào block. Đây là "phòng chờ" trước khi validator chọn xác nhận.
Transaction bị stuck khi gas fee đặt quá thấp so với thị trường. Validator ưu tiên tx gas cao hơn. Giải pháp: dùng Replace-by-Fee (RBF) — gửi lại cùng nonce với gas cao hơn ít nhất 10%.
Mempool là public — bot MEV đọc pending tx và thực hiện front-run, sandwich attack. Flashbots private mempool giải quyết bằng cách gửi tx thẳng đến builder, không qua public mempool.
Bitcoin dùng sat/vByte, UTXO model, ít MEV hơn. Ethereum dùng EIP-1559 base fee + tip, phức tạp hơn nhiều do DeFi smart contract và MEV quy mô lớn hơn.
Dùng Etherscan Mempool Viewer, mempool.space (Bitcoin), hoặc subscribe WebSocket của node tự chạy. Nhiều ví hiện đại cũng hiển thị gas estimate dựa trên mempool hiện tại để giúp người dùng chọn fee phù hợp.
Tài liệu tham khảo
- Ethereum Foundation — Transaction lifecycle documentation (ethereum.org)
- Flashbots — MEV and Mempool Research (flashbots.net)
- EIP-1559 — Fee market change for ETH 1.0 chain (eips.ethereum.org)
- Bitcoin Wiki — Mempool (bitcoin.it/wiki/Mempool)
- Ethresear.ch — Encrypted Mempool proposals (2023)