Phí gas là lượng công việc on-chain được tính phí nhân giá hiệu dụng. Với giao dịch Ethereum mainnet thông thường, tiền dự trù dùng giới hạn gas và giá tối đa; phí thực tế phải đối chiếu biên nhận thực thi. “Gas and fees” của Ethereum.org phân biệt hai cách tính này. Ước tính không bảo đảm vào khối hay thành công; với lỗi, cần tách bị từ chối trước khi vào khối khỏi thực thi bị hoàn tác trên chuỗi.
Ví yêu cầu chuẩn bị 0,0032 ETH, tài sản gốc của Ethereum, nhưng cuối cùng chỉ tốn 0,001404. Chênh lệch đi đâu? Một giao dịch khác thất bại mà vẫn tính phí là vì sao? Trộn giới hạn, lượng dùng và nguyên nhân lỗi dễ dẫn đến hai hiểu lầm ngược nhau: đặt cao hơn là bị trừ nhiều hơn, hoặc thất bại luôn được hoàn phí.
Bài viết tách đơn vị trước, dùng cùng bộ đầu vào giả định để tính dự trù và phí thực tế, rồi chỉ đổi từng điều kiện để xét chờ xử lý và thất bại. Đọc được các trường hữu ích hơn vội chọn “nhanh nhất”.
Tách lượng gas khỏi số ETH trả phí
Gas đo công việc tính toán; phí ETH là số tiền trả cho công việc đó. Ở giữa còn có giá mỗi đơn vị. Gas Limit không phải một số tiền ETH, và chỉ nhìn đơn giá không đủ biết cả thao tác rẻ hay đắt.
Bài này chỉ tính phí thực thi giao dịch EIP-1559 thông thường trên Ethereum mainnet. EIP-1559 là cơ chế tách phí cơ sở, phí ưu tiên và giá trần. Tài khoản gửi tự trả phí, không áp dụng mô hình bên thứ ba tài trợ. Xem hướng dẫn ví tiền mã hóa để nối lại quy trình nhận và chuyển đầy đủ.
Gas Limit giới hạn công việc, gwei là đơn vị giá
Gas Limit là lượng gas tối đa giao dịch được phép dùng; Gas Used là lượng cuối cùng được tính phí. Gwei là đơn vị nhỏ bằng một phần tỷ ETH. Nếu dùng 50.000 gas ở giá hiệu dụng 20 gwei, phí bằng 50.000 × 20 ÷ một tỷ = 0,001 ETH.
Thao tác phức tạp có thể cần nhiều gas; nhu cầu mạng tăng cũng có thể đổi đơn giá. “Gas and fees” của Ethereum.org giải thích hai nguồn này bằng công việc và giá. Chuyển ETH, chuyển token và tương tác hợp đồng nhiều bước không nên dùng cùng giới hạn cố định. Khi ước tính lỗi, hạ số xuống không tự làm thao tác rẻ hơn.
Max Fee và Max Priority Fee không phải hai khoản để cộng
Base Fee là giá cơ sở do giao thức xác định; Max Priority Fee là mức ưu tiên tối đa mỗi đơn vị bạn chấp nhận trả thêm; Max Fee là giá trần tổng thể mỗi đơn vị. Hai trường sau tương ứng maxPriorityFeePerGas và maxFeePerGas trong EIP-1559. Không cộng hai mức trần để tạo thêm một tổng giá có thể thu.
Quy chuẩn EIP-1559 yêu cầu Max Fee không thấp hơn Base Fee của khối và không thấp hơn Max Priority Fee rồi mới áp dụng công thức bên dưới. Phí ưu tiên hiệu dụng lấy giá trị nhỏ hơn giữa mức ưu tiên tối đa và Max Fee trừ Base Fee; cộng lại Base Fee để ra giá hiệu dụng. Khi khoảng trống dưới trần không đủ, bạn không trả nguyên mức ưu tiên đã đặt. Công thức được đối chiếu ngày 27/10/2026; phần sau thế số từng bước.

Tính dự trù trước, dùng biên nhận tính phí sau
Kiểm tra tiền dự trù theo giới hạn giao dịch, tính phí thực tế theo biên nhận sau khi vào khối. Giả sử tài khoản có 0,004 ETH và tương tác hợp đồng token mà không gửi ETH gốc. Gas Limit là 80.000, Max Fee 40 gwei, Max Priority Fee 2 gwei. Khối giả định có Base Fee 25 gwei, Gas Used cuối cùng 52.000. Tất cả là đầu vào bài tập, không có giao dịch được phát hay biên nhận thật.
Bước 1: cố định đầu vào cho tương tác hợp đồng
Trước khi gửi, tính mức trần 80.000 × 40 gwei = 0,0032 ETH. Ví có 0,004 ETH và lượng ETH gốc gửi bằng không nên đáp ứng kiểm tra dự trù này. Nếu đồng thời chuyển ETH, phải cộng cả số tiền chuyển vào nhu cầu vốn, không chỉ kiểm tra phí.
Phép tính trả lời “có đủ tiền theo điều kiện trần không”, không trả lời “chắc chắn tốn bao nhiêu” hay “chắc chắn vào khối”. Ước tính còn chịu ảnh hưởng trạng thái thực thi. Khi ví báo lỗi, hợp đồng hoặc thao tác chưa rõ, kiểm tra nguyên nhân trước; đừng bỏ biên an toàn chỉ để vừa số dư.

Bước 2: lấy giá trị nhỏ hơn để tính giá hiệu dụng
Khoảng còn lại dưới trần là 40 − 25 = 15 gwei. So với mức ưu tiên tối đa 2, chọn 2. Giá hiệu dụng là 25 + 2 = 27 gwei, không phải 40 + 2 hay mặc định lấy trọn 40 làm giá thực tế.
Có thể viết “ưu tiên hiệu dụng = min(2; 40 − 25) = 2”, rồi “giá hiệu dụng = 25 + 2 = 27”. Min nghĩa là chọn giá trị nhỏ hơn. Số 25 là điều kiện khối giả định. Ảnh chụp trước lúc gửi thật không bảo đảm khối sau vẫn có mức ấy.

Bước 3: dùng lượng gas thực tế đối chiếu phí
Giả sử giao dịch thành công, biên nhận ghi Gas Used 52.000 và giá hiệu dụng 27 gwei. Phí thực thi là 52.000 × 27 ÷ một tỷ = 0,001404 ETH. Nếu không có biến động ETH khác, số dư còn 0,002596 ETH.
Mức trần trước khi gửi là 0,0032, phí thực tế giả định là 0,001404 và chênh lệch là 0,001796 ETH. Phép trừ này không chứng minh có một giao dịch “hoàn tiền” riêng. Giao thức có quy tắc quyết toán gas chưa dùng và phí liên quan; cách ví hiển thị cũng khác nhau. Đối chiếu bằng biên nhận cùng số dư thực, đừng coi toàn bộ trần đã bị trừ rồi coi chênh lệch là lần chuyển khác.
Tách cùng khoản phí: phần cơ sở 52.000 × 25 gwei = 0,0013 ETH; phần ưu tiên hiệu dụng 52.000 × 2 gwei = 0,000104 ETH. Tổng vẫn là 0,001404. Đây là hai thành phần bên trong, không cộng thêm bên ngoài tổng để tính phí hai lần.
Ví dụ không chuyển ETH gốc nên mới lấy 0,004 trừ thẳng phí. Nếu còn thanh toán ETH cho ai, phải trừ riêng số tiền gửi; biến động token cũng cần đối chiếu riêng, không ghi phí gas thành lãi/lỗ giao dịch token.

Bước 4: chỉ đổi một trường để xem kết quả thay đổi
Trước tiên tăng riêng Gas Limit lên 120.000, giữ giả định Gas Used 52.000 và giá hiệu dụng 27 gwei. Dự trù thành 0,0048 ETH, vượt số dư 0,004. Nhánh giữ nguyên số dư này phải dừng, không ghi gửi được hay đã hoàn tất. Xét riêng phép nhân 52.000 × 27 gwei vẫn ra 0,001404 ETH, nhưng công thức ấy không chứng minh giao dịch thiếu tiền có thể thực thi. Nâng trần công việc khác với thực sự làm thêm việc.
Quay lại giới hạn 80.000 và chỉ đổi Base Fee thành 39 gwei. Khoảng dưới trần còn 1 nên ưu tiên = min(2; 1) = 1, giá hiệu dụng 40. Cùng lượng 52.000 thì phí là 0,00208 ETH. Đây là nhánh độc lập, không ghi đè kết quả 27 gwei ở trên.
Nếu Base Fee của khối chờ nhận là 41 nhưng Max Fee vẫn 40, giao dịch không đáp ứng điều kiện giá của khối ấy. Kiểm tra giao dịch gốc, ước tính và cách xử lý ví hỗ trợ. Nâng Gas Limit không giải quyết việc trần đơn giá quá thấp, và sửa một trường không bảo đảm được xử lý ngay.
Giao dịch lỗi: xác định thất bại ở giai đoạn nào
Bị từ chối trước khi vào khối khác với đã vào khối nhưng thực thi thất bại. Ethereum.org “Gas and fees” phân biệt từ chối ở bước kiểm tra với hết gas lúc thực thi. Không thể áp cùng quy tắc phí cho mọi thông báo “thất bại”.
Từ chối trước khối khác thực thi bị hoàn tác
Ví dụ giao dịch không đáp ứng tính hợp lệ và bị từ chối trước khi vào khối thì không có lượng thực thi on-chain để tính phí. Đây là phí thực thi, không suy ra nền tảng có thu dịch vụ riêng không. Kiểm tra biên nhận và bản ghi vào khối, không chỉ đọc một thông báo của ví.
Nếu hợp đồng đã vào khối nhưng REVERT, tức hoàn tác, thay đổi trạng thái dự định được đảo lại nhưng tài nguyên tính toán đã dùng vẫn có thể tính phí. Với giá 27 gwei, giả sử tính phí 30.000 gas trước lỗi thì phí là 0,00081 ETH. Không đạt kết quả mong muốn không đồng nghĩa không từng thực hiện tính toán.
Hết gas và hoàn tác không dùng cùng một số phí
Nếu dùng hết giới hạn 80.000 trong lúc thực thi, tức Out of Gas, ở cùng giá 27 gwei thì phí là 0,00216 ETH. Đây là nhánh thất bại khác với REVERT dùng 30.000 ở trên; không cộng hai khoản thành một giao dịch và không khẳng định mọi lỗi đều dùng hết giới hạn.
Trước khi thử lại, xác định thiếu hạn mức, điều kiện hợp đồng không thỏa, thiếu vốn hay điều kiện giá không phù hợp. Chỉ tăng Gas Limit không làm thao tác trái quy tắc hợp đồng trở nên hợp lệ; thử nhiều lần có thể phát sinh phí mới.

Vì sao không chỉ chọn con số phí thấp nhất?
Chỉ nên so rẻ hơn trên cùng mạng, cùng thao tác và điều kiện chờ chấp nhận được. Chọn số nhỏ nhất có thể đổi đường nhận hoặc biến thao tác làm được thành đầu vào dễ lỗi.
Giới hạn thấp, ước tính thay đổi và chờ xử lý
Gas Limit thấp có thể làm thực thi không hoàn tất; trần giá không đáp ứng khối có thể ảnh hưởng khả năng được đưa vào khối. Hai giới hạn khác đơn vị nên đọc đúng trường trước khi sửa. Giao dịch còn pending thì tra bản gốc, đừng dùng lần thứ hai để trả trùng cùng việc.
Cùng thao tác ở thời điểm khác có thể có ước tính khác vì nhu cầu mạng hoặc trạng thái hợp đồng. Lưu điều kiện tại lúc đó, không lấy mức rẻ hôm nay ghi ngược vào khoản hôm qua đáng lẽ trả. Số trong bài cũng không phải báo giá hiện tại.
Đổi mạng phải kiểm tra lại toàn bộ mô hình phí
Một công thức phí thực thi mainnet không phải tổng phí đầy đủ của mọi mạng lớp 2, tức hệ thống mở rộng khả năng xử lý của mainnet. Tài liệu OP Mainnet “Transaction fees”, đối chiếu ngày 27/10/2026, liệt kê thêm phí dữ liệu và phí vận hành tùy cấu hình. Hãy so tổng ước tính của mạng, không chỉ trường gwei.
Dù mạng khác rẻ hơn, bên nhận vẫn phải hỗ trợ cùng tài sản và đường đi. Sai mạng có thể gây vấn đề lớn hơn chênh lệch phí. Xem mạng chuyển tiền và ghi có để kiểm tra cả điều kiện nhận.

Giảm chi phí thừa mà không phá kế hoạch
Giảm thao tác lặp không cần thiết đáng làm trước hơn việc mù quáng hạ mọi mức trần. Hiểu mục tiêu rồi quyết định chữ ký và giao dịch nào cần thiết; đừng chấp nhận quyền chưa hiểu để tiết kiệm một lần phí.
Hiểu phê duyệt trước khi giảm số lần thao tác
Một số ứng dụng có cả cấp quyền và sử dụng token sau đó, không chỉ một giao dịch. Mỗi bước có phí on-chain hay không tùy cơ chế. Ví dụ Permit theo EIP-2612 có thể được người khác nộp lên chuỗi sau khi đáp ứng chữ ký, nonce và hạn chót. Chưa trừ gas lúc ký không có nghĩa đó chỉ là đăng nhập.
Ngược lại, cũng đừng cấp hạn mức vô hạn cho đối tượng lạ chỉ để bớt một lần phê duyệt. Phí và quyền là hai đánh giá riêng. Đọc phê duyệt và thu hồi quyền token; phép tính phí không chứng nhận nội dung ký an toàn.
Ghi riêng ước tính, giới hạn và phí thực tế
Với mỗi giao dịch, ghi ước tính trước gửi, giới hạn gas và giá, TxID, lượng dùng cùng giá hiệu dụng sau vào khối rồi so số dư ETH. Chưa có biên nhận thì để phí thực tế “chưa xác định”, không dùng số không hay lấy dự trù làm chi phí thật. Ví dụ lần lượt là “số dư 0,004; mức trần 0,0032; phí giả định 0,001404; số dư sau quyết toán 0,002596”. Số đầu là điểm xuất phát, số thứ hai là hạn chế trước gửi, hai số sau thuộc nhánh hoàn tất giả định. Nếu còn chờ, chỉ giữ hai số đầu cùng định danh gốc, chưa điền số dư nhánh hoàn tất.
Định danh, mạng và trạng thái thành công trong biên nhận cũng phải khớp thao tác gốc. Một giao dịch có phí gần giống chưa chắc là của bạn; lượng dùng và giá hiệu dụng phải lấy từ cùng giao dịch đã vào khối. Nếu ví chỉ có ước tính, chưa có kết quả để đối chiếu thì giữ trạng thái chờ, không dùng số giả định trong bài điền sổ.
Bài viết phục vụ hiểu cơ chế phí và tính toán, không phải lời khuyên đầu tư. Mọi số tiền cùng mức phí đều giả định; mạng, thao tác và cách tài trợ thực tế có thể khác. Ước tính không bảo đảm vào khối, thành công hay chi phí cố định.