Mempool là tập giao dịch chưa xác nhận mà một nút Bitcoin đang lưu để xem xét và truyền tiếp. Nó giúp giải thích trạng thái “đang chờ” của giao dịch; trạng thái này chưa đồng nghĩa khoản thanh toán đã được ghi vào lịch sử chung.
Mỗi nút có góc nhìn riêng
Không nên hình dung mempool như một phòng chờ duy nhất của toàn mạng. Một nút chỉ xử lý các giao dịch nó nhận được, theo điều kiện kiểm tra và chính sách của phần mềm đang chạy. Mã Bitcoin Core phân biệt quá trình chấp nhận vào mempool với quá trình xác minh khối; giao dịch vào mempool không phải quyết định thay cho tất cả các nút. Nguồn: Bitcoin Core v30.0, validation.cpp — MemPoolAccept và AcceptToMemoryPool.
Vì vậy, khi hai dịch vụ hiển thị trạng thái khác nhau, câu hỏi hữu ích là chúng đang nhìn cùng giao dịch, cùng thời điểm và cùng nguồn nút hay chưa. Sự khác biệt hiển thị không tự nó chứng minh blockchain đã ghi hai kết quả trái nhau.
Từ nhận giao dịch tới ứng viên trong khối
Có thể chia cơ chế thành bốn bước: nút nhận giao dịch; kiểm tra khả năng chấp nhận; lưu ứng viên phù hợp; phần mềm khai thác lựa chọn tập giao dịch để xây khối. Bitcoin Core có logic lựa chọn các nhóm giao dịch liên quan khi tạo mẫu khối, vì vậy thứ tự không chỉ là xếp từng giao dịch độc lập theo một con số. Nguồn: Bitcoin Core v30.0, miner.cpp — CreateNewBlock và addPackageTxs.
Việc một giao dịch có trong tập ứng viên không tạo ra hợp đồng về thời gian được chọn. Phải theo dõi tiếp trạng thái khối và xác nhận, finality để đánh giá mức hoàn tất phù hợp với tình huống.
Tổng phí khác phí trên mỗi đơn vị dữ liệu
Phí giao dịch thông thường là tổng input trừ tổng output. Khi so sánh mức phí với không gian khối sử dụng, người ta còn xét phí trên mỗi đơn vị kích thước ảo, thường biểu diễn bằng satoshi trên vbyte (sat/vB). Nguồn: Bitcoin Developer Guide, Block Chain — Transaction Propagation; Bitcoin Core v30.0, miner.cpp — GetFee/GetTxSize.
Ví dụ giả định: giao dịch A trả 1.000 sat cho 100 vB, tương đương 10 sat/vB. Giao dịch B trả 1.500 sat cho 300 vB, tương đương 5 sat/vB. B trả tổng phí cao hơn nhưng mức phí trên đơn vị dữ liệu thấp hơn. Các số này chỉ minh họa phép chia, không phải báo giá hiện tại hay cam kết A sẽ được xác nhận trước B.
Vì sao trạng thái chờ có thể thay đổi?
Mempool là trạng thái phần mềm, còn khối hợp lệ là một phần lịch sử được nút xác minh. Chính sách chấp nhận, quan hệ phụ thuộc giữa giao dịch và trạng thái chain có thể ảnh hưởng cách nút xử lý ứng viên. Khi phân tích trường hợp cụ thể, cần thông tin giao dịch và phiên bản phần mềm thay vì áp một giải thích duy nhất. Nguồn kỹ thuật: Bitcoin Core v30.0, validation.cpp — MemPoolAccept.
Ngộ nhận phổ biến là coi phí đã trả như việc mua một suất xác nhận đúng giờ. Trong thực tế, số tiền phải được đọc cùng kích thước, quan hệ giao dịch và điều kiện chọn khối. Một ước tính phí cũng cần ngày giờ và phương pháp; trang này không đưa dữ liệu phí động.
| Giao dịch | Tổng phí | Kích thước | Phí/vbyte |
|---|---|---|---|
| A | 1.000 sat | 100 vB | 10 sat/vB |
| B | 1.500 sat | 300 vB | 5 sat/vB |
Kết luận
Mempool là tập giao dịch đang chờ mà mỗi node tự lưu, không phải một hàng đợi chung cho cả mạng. Phí ảnh hưởng tới khả năng được chọn vào block, nhưng cần đọc theo phí trên mỗi đơn vị dữ liệu chứ không chỉ tổng phí, và trả phí không bảo đảm được xác nhận đúng giờ. Chỉ khi nằm trong một block hợp lệ, giao dịch mới thuộc lịch sử chung.
Đọc tiếp
Đọc hành trình giao dịch Bitcoin và kinh tế học Bitcoin; tra cứu UTXO, Proof of Work, block reward hoặc Thư viện thuật ngữ.