Điều gì thực sự xảy ra khi bạn gửi một giao dịch Ethereum

--> Vấn Đề

Bạn nhấn “Gửi” trong ví của bạn. Giao diện xác nhận giao dịch.

Nhưng sau đó... không có gì xảy ra.

Đôi khi nó xác nhận trong vòng vài giây.
Đôi khi nó treo trong vài phút—hoặc hoàn toàn thất bại.

Tại sao?

Hầu hết các lời giải thích dừng lại ở “nó vào blockchain.”

Điều đó không hữu ích nếu bạn đang xây dựng hệ thống trên đó.

Hãy cùng phân tích xem điều gì thực sự xảy ra bên trong.


Mô Hình Tư Duy (Định Hướng Nhanh)


Một giao dịch không được thực thi ngay lập tức.

Nó di chuyển qua ba giai đoạn rõ ràng:

  • Lan truyền (mempool)

  • Bao gồm (đề xuất khối)

  • Thực thi (chuyển trạng thái)

Mỗi giai đoạn tạo thêm độ trễ, rủi ro và các chế độ lỗi.


Bước 1: Tạo giao dịch

Khi bạn bấm “send”:


  • Ví của bạn tạo giao dịch:

    • để

    • giá trị

    • gasLimit

    • maxFeePerGas

    • data (nếu có tương tác hợp đồng)

    Nó ký giao dịch bằng khóa riêng của bạn

Tại thời điểm này:
👉 Giao dịch hợp lệ nhưng chưa được mạng biết đến


Bước 2: Phát tán ra mạng

Ví của bạn gửi giao dịch tới một nút.

  • Nút đó:

  • Xác minh chữ ký

  • Kiểm tra nonce

  • Đảm bảo tính hợp lệ cơ bản

Nếu hợp lệ → nó đi vào mempool


Bước 3: Mempool (Nơi mọi thứ trở nên thú vị)

Mempool là:

  • Khu vực lưu giữ tạm thời

  • Không nhất quán trên toàn cục

  • Khác nhau giữa các nút

Điều này có nghĩa là:
👉 Giao dịch của bạn có thể tồn tại ở một số nút—nhưng không phải ở tất cả

Hành vi then chốt:

  • Các nút ưu tiên giao dịch theo phí

  • maxFeePerGas càng cao = ưu tiên càng cao


📊 Sơ đồ 1: Luồng lan truyền giao dịch


Sơ đồ nên thể hiện:

  • Ví người dùng → Nút A → Nút B → Nút C

  • Mỗi nút có mempool riêng

  • Các mũi tên thể hiện lan truyền gossip

  • Điểm nhấn: “Không phải mọi mempool đều giống nhau”


Bước 4: Đề xuất khối

Trình xác thực chọn giao dịch từ mempool của họ.

Họ sẽ chọn:

  • Giao dịch có phí cao nhất được ưu tiên trước

  • Các giao dịch nằm trong giới hạn gas

Quan trọng:
👉 Giao dịch của bạn đang cạnh tranh với những giao dịch khác



Bước 5: Thực thi (cấp EVM)


Ngay sau khi được đưa vào một khối

  • Giao dịch được thực thi bên trong EVM

  • Các thay đổi trạng thái xảy ra:

    • Cập nhật số dư

    • Thay đổi dữ liệu lưu trữ của hợp đồng thông minh

Nếu thực thi thất bại:

  • Vẫn tiêu tốn gas

  • Các thay đổi trạng thái bị hoàn lại


📊 Sơ đồ 2: Luồng thực thi


Sơ đồ nên thể hiện:

  • Khối → EVM → Chuyển trạng thái

  • Đầu vào:

    • Giao dịch

    • Trạng thái hiện tại


  • Đầu ra:

    • Trạng thái mới

  • Hãy đưa “tiêu thụ gas” vào mỗi bước


Các trường hợp biên & Chế độ lỗi

Đây là nơi hầu hết các bài viết thất bại. Hãy đi sâu hơn.

❌ 1. Giao dịch bị kẹt trong Mempool

  • Phí quá thấp

  • Không bao giờ được trình xác thực chọn

❌ 2. Giao dịch bị loại

  • Nút loại bỏ nó vì:

    • Phí thấp

    • Tràn mempool

❌ 3. Giao dịch bị thay thế

  • Cùng nonce + phí cao hơn → thay thế giao dịch ban đầu

❌ 4. Thực thi hết gas

  • Việc thực thi dừng giữa chừng

  • Trạng thái bị hoàn lại

  • Gas bị mất

❌ 5. Tổ chức lại chuỗi (Reorg)

  • Khối bị thay thế

  • Giao dịch có thể biến mất tạm thời



Hệ quả trong thực tế

Dành cho nhà phát triển:

  • Bạn không thể giả định tính hoàn tất ngay lập tức

  • Phải xử lý các trạng thái đang chờ

Vì UX:

  • Người dùng thấy “pending” → gây bối rối

  • Ước lượng phí trở nên cực kỳ quan trọng

Dành cho Thiết kế Hệ thống

  • Cần có logic thử lại

  • Theo dõi giao dịch là bắt buộc


Những điểm cần nhớ

  • Một giao dịch là quá trình nhiều giai đoạn, không phải một sự kiện đơn lẻ

  • Mempool là không xác định và bị phân mảnh

  • Phí ảnh hưởng trực tiếp đến xác suất được thực thi

  • Có thể xảy ra lỗi ở nhiều lớp

  • Hệ thống phải được thiết kế cho sự không chắc chắn và độ trễ



Nếu bạn đang xây dựng trên Ethereum, việc hiểu pipeline này là không thể thiếu—đó là nền tảng$ETH