Mỗi lần tương tác với một ứng dụng DeFi, bạn thường phải ký một giao dịch phê duyệt (token approval) cho phép hợp đồng thông minh chi tiêu token từ ví. Nhiều DApp mặc định yêu cầu quyền không giới hạn – và đây chính là điểm mà hàng trăm triệu USD đã bị đánh cắp trong các vụ exploit gần đây. Phê duyệt giới hạn chi tiêu MetaMask (custom spending cap) cho phép bạn tự đặt mức trần token mà DApp được phép truy cập, thay vì chấp nhận mặc định vô hạn.
Bài viết từ Ema Crypto sẽ giải thích cơ chế kỹ thuật đằng sau token approval, các rủi ro thực tế từ phê duyệt vô hạn, và hướng dẫn cụ thể cách thiết lập, quản lý cũng như thu hồi quyền phê duyệt trên MetaMask.

Phê duyệt token là gì và khác gì với kết nối ví?
Phê duyệt token (token approval) là quyền mà bạn cấp cho một hợp đồng thông minh hoặc DApp để di chuyển một lượng token nhất định từ ví của bạn. Quyền này cần thiết khi bạn thực hiện các thao tác như swap token trên DEX, staking, hoặc cung cấp thanh khoản. Nếu không được phê duyệt, DApp không thể thực hiện giao dịch thay bạn.
Điểm quan trọng nhiều người nhầm lẫn: kết nối ví ≠ phê duyệt token. Khi kết nối ví MetaMask với một trang web, bạn chỉ cho phép trang đó đọc địa chỉ công khai và số dư – tương tự như cho ai đó biết số tài khoản ngân hàng. Ngược lại, phê duyệt token cho phép DApp thực sự chuyển token khỏi ví bạn trong phạm vi đã phê duyệt.
Quan trọng hơn: ngắt kết nối ví không tự thu hồi các quyền phê duyệt đã cấp. Các approval vẫn còn hiệu lực trên blockchain cho đến khi bạn chủ động revoke. Đây là hiểu lầm phổ biến khiến nhiều người mất tài sản sau khi nghĩ rằng mình đã “an toàn” khi disconnect. Chi tiết kỹ thuật có thể tham khảo tại MetaMask Help Center.
Cơ chế kỹ thuật: approve() và transferFrom() trong ERC-20
Hầu hết token trên Ethereum và các blockchain tương thích EVM đều tuân chuẩn ERC-20, trong đó hai hàm cốt lõi liên quan đến phê duyệt là approve và transferFrom.
Luồng hoạt động của approve và transferFrom
Khi bạn ký giao dịch phê duyệt, ví gọi hàm approve(spenderAddress, amount) trên hợp đồng thông minh của token. Trong đó spenderAddress là địa chỉ DApp/hợp đồng được ủy quyền, còn amount là số token cho phép. Nếu chọn phê duyệt vô hạn, giá trị amount sẽ là 2^256 - 1 (MAX_UINT256) – tức là toàn bộ số token loại đó trong ví đều nằm trong tầm kiểm soát của hợp đồng.
Sau khi có allowance, khi bạn thực hiện swap hay staking, DApp gọi transferFrom(yourAddress, recipientAddress, amount). Hợp đồng kiểm tra hai điều kiện: (1) DApp còn đủ allowance, (2) ví bạn đủ số dư. Nếu khớp, token được chuyển và allowance giảm tương ứng. Toàn bộ quá trình được ghi nhận qua sự kiện Approval và Transfer trên blockchain, có thể tra cứu trên Etherscan.

Phê duyệt vô hạn: tiện lợi nhưng nguy hiểm
Nhiều DApp mặc định yêu cầu unlimited approval để người dùng không phải phê duyệt lại mỗi lần giao dịch, tiết kiệm phí gas. Tuy nhiên, nếu DApp bị tấn công hoặc là scam, kẻ xấu có thể dùng quyền này để chuyển toàn bộ token thuộc loại đó khỏi ví mà không cần bạn ký thêm bất kỳ giao dịch nào.
Đây là lý do MetaMask bổ sung tính năng custom spending cap – cho phép bạn đặt giới hạn cụ thể thay vì chấp nhận mặc định vô hạn. Tính năng này hiện khả dụng trên MetaMask Portfolio cho Ethereum mainnet, Polygon, BNB Chain, Optimism và Base.
EIP-3009 Permit: gộp phê duyệt và chuyển token
Một số token (ví dụ USDC) đang triển khai hàm Permit theo EIP-3009, cho phép gộp phê duyệt và chuyển khoản vào một giao dịch duy nhất. Người dùng chỉ ký một chữ ký off-chain, giảm phí gas so với quy trình hai bước truyền thống. Tuy nhiên, chính cơ chế ký off-chain này cũng tạo ra vector tấn công mới: kẻ lừa đảo có thể dụ bạn ký một “thông báo” trông vô hại nhưng thực chất là ủy quyền chuyển token.
Rủi ro thực tế từ phê duyệt độc hại
Riêng quý 1/2026, các giao thức DeFi đã thiệt hại khoảng 169 triệu USD từ các sự cố bảo mật (theo DefiLlama). Phê duyệt token độc hại là một trong những chiêu trò phổ biến nhất – kẻ tấn công tạo DApp giả mạo, lợi dụng tâm lý FOMO hoặc áp lực thời gian để người dùng cấp quyền vô hạn.

Các vụ exploit lớn liên quan đến unlimited approval
- LI.FI Exploit (7/2024): Khoảng 11,6 triệu USD bị mất. Chỉ các ví đã cấp unlimited approval mới bị ảnh hưởng – những ví đặt spending cap cụ thể không bị thiệt hại.
- Radiant Capital (10/2024): Hơn 50 triệu USD bị đánh cắp thông qua lỗ hổng bảo mật. Người dùng cấp quyền vô hạn mất toàn bộ token liên quan, trong khi ai đặt giới hạn cụ thể được bảo vệ.
- SwapNet Allowance Attack (1/2026): Khoảng 13,4 triệu USD bị rút từ ví người dùng thông qua khai thác quyền phê duyệt vô hạn (theo PeckShield).
Các vụ việc này cho thấy sự khác biệt rõ ràng giữa bounded approval và unlimited approval. Một quyền phê duyệt vô hạn cho DApp bị tấn công đồng nghĩa với việc mất toàn bộ token thuộc loại đó. Để nhận diện các dạng lừa đảo crypto phổ biến, bạn cần hiểu rõ cách chúng khai thác tâm lý và cơ chế on-chain.
Dấu hiệu cảnh báo khi phê duyệt token
Khi popup MetaMask yêu cầu phê duyệt, hãy kiểm tra kỹ trước khi xác nhận:
- Địa chỉ hợp đồng (Spender Address): So sánh với địa chỉ chính thức của DApp. Địa chỉ lạ hoặc không khớp là dấu hiệu nguy hiểm.
- Số lượng token: Nếu hiển thị Max hoặc con số khổng lồ mà bạn không chủ đích đặt, đó là unlimited approval.
- Loại token: Xác nhận đúng token bạn đang muốn giao dịch.
- Phí gas bất thường: Giao dịch phê duyệt đơn thuần có phí gas thấp. Phí cao bất thường có thể là dấu hiệu hợp đồng thực hiện logic phức tạp hơn bạn nghĩ.
Cách thiết lập giới hạn chi tiêu tùy chỉnh trên MetaMask
Khi popup phê duyệt xuất hiện trên MetaMask, thay vì chấp nhận mặc định, hãy thực hiện:
- Kiểm tra DApp: Đảm bảo URL chính xác, không có lỗi chính tả. Hạn chế kết nối với DApp mới lạ hoặc không rõ nguồn gốc.
- Chọn Custom Spending Cap: Không chọn Max/Unlimited. Nhập số lượng token vừa đủ cho giao dịch hiện tại. Ví dụ, nếu muốn staking 100 TOKEN, đặt giới hạn khoảng 100–105 TOKEN.
- Xác nhận giao dịch: Kiểm tra lại thông tin spender address, loại token, số lượng rồi mới ký.
Nguyên tắc cốt lõi là Minimum Viable Approval: chỉ cấp quyền vừa đủ, không hơn. Mỗi lần giao dịch mới có thể cần phê duyệt lại (tốn thêm phí gas), nhưng đổi lại bạn giới hạn được thiệt hại tối đa nếu có sự cố.

Quản lý và thu hồi phê duyệt token đã cấp
Mỗi quyền phê duyệt đang hoạt động là một cánh cửa tiềm năng dẫn vào ví. Thu hồi (revoke) các approval cũ, không còn sử dụng là thao tác bảo mật thiết yếu. Lưu ý: thu hồi là giao dịch on-chain nên cần trả phí gas, nhưng chi phí này rất nhỏ so với rủi ro bị khai thác.
Thu hồi qua MetaMask Portfolio
- Truy cập MetaMask Portfolio và kết nối ví.
- Tìm mục “Spending Caps” hoặc “Token Approvals” để xem tất cả DApp đã được cấp quyền, loại token, số lượng và mạng lưới tương ứng.
- Chọn phê duyệt cần hủy và nhấn thu hồi.
Thu hồi bằng Revoke.cash
Revoke.cash là công cụ chuyên biệt hỗ trợ kiểm tra và thu hồi approval trên nhiều mạng lưới. Với hơn 2,6 triệu ví đã sử dụng và hơn 5,4 triệu lượt thu hồi, đây là giải pháp được cộng đồng tin dùng. Công cụ đã được DeFiYield kiểm toán (02/2022) mà không phát hiện lỗ hổng nghiêm trọng. Revoke.cash còn có tiện ích mở rộng trình duyệt, cảnh báo khi bạn sắp ký giao dịch nguy hiểm.

Kiểm tra trên Block Explorer
Trên Etherscan (Ethereum), BscScan (BNB Chain) hoặc Polygonscan (Polygon), bạn có thể nhập địa chỉ ví, tìm tab “Token Approvals” để xem danh sách chi tiết. Một số block explorer còn cho phép thu hồi trực tiếp từ giao diện.
Thói quen dọn dẹp ví định kỳ
Xem việc rà soát approval như thói quen bảo mật hàng tháng. Đặc biệt sau khi tương tác với DApp mới, hãy kiểm tra và thu hồi quyền ngay khi không còn cần thiết. Nếu bạn lưu trữ lượng lớn tài sản, kết hợp thêm ví lạnh để tách biệt khóa riêng tư khỏi môi trường online là giải pháp bổ sung hiệu quả.
Câu hỏi thường gặp về phê duyệt giới hạn chi tiêu MetaMask
- Tại sao cần phê duyệt token?
DApp cần quyền phê duyệt để di chuyển token trong ví khi bạn thực hiện swap, staking hoặc cung cấp thanh khoản. Không có approval, DApp không thể tương tác với token của bạn. - Thu hồi phê duyệt có mất phí gas không?
Có. Thu hồi là giao dịch on-chain nên cần phí gas, thường rất nhỏ nhưng dao động theo tình trạng tắc nghẽn mạng. - Ngắt kết nối ví có tự thu hồi approval không?
Không. Ngắt kết nối chỉ ngăn DApp đọc thông tin ví. Các quyền phê duyệt token vẫn còn hiệu lực cho đến khi bạn chủ động revoke. - Phê duyệt Max/Unlimited nguy hiểm thế nào?
Nếu DApp bị tấn công hoặc là scam, kẻ xấu có thể chuyển toàn bộ token thuộc loại đó khỏi ví bạn mà không cần ký thêm giao dịch. Luôn ưu tiên custom spending cap. - Công cụ nào kiểm tra approval an toàn?
MetaMask Portfolio, Revoke.cash, và các block explorer (Etherscan, BscScan, Polygonscan) đều hỗ trợ xem và thu hồi approval. - EIP-3009 Permit khác gì phê duyệt truyền thống?
Permit gộp phê duyệt và chuyển token vào một giao dịch, tiết kiệm phí gas. Tuy nhiên, cơ chế ký off-chain cũng tạo ra rủi ro phishing mới khi kẻ xấu giả mạo yêu cầu ký.
Kết luận
Quản lý phê duyệt giới hạn chi tiêu MetaMask là thói quen bảo mật cần thiết khi tham gia DeFi. Ba nguyên tắc cốt lõi: (1) luôn đặt custom spending cap thay vì chấp nhận unlimited, (2) kiểm tra kỹ spender address và loại token trước khi ký, (3) định kỳ rà soát và thu hồi các approval cũ. Với người dùng muốn quản lý ví trên nhiều thiết bị, việc đồng bộ MetaMask giữa máy tính và điện thoại cũng nên đi kèm với rà soát approval trên tất cả các mạng đang sử dụng.
Tuyên bố miễn trừ trách nhiệm
Căn cứ Nghị quyết số 05/2025/NQ-CP ngày 9/9/2025 của Chính phủ, toàn bộ thông tin trên Emacrypto.com chỉ mang tính chất tham khảo, không phải là khuyến nghị tài chính hay tư vấn đầu tư. Nhà đầu tư cần tự nghiên cứu kỹ và chịu trách nhiệm với quyết định của mình.


