THUẬT NGỮ · 7 PHÚT ĐỌC
Token approval là gì? Cách revoke quyền an toàn
Token approval (cấp quyền) là bước bạn cho phép một smart contract được rút một lượng token ERC-20 nhất định từ ví thay mặt bạn, thông qua hàm approve ghi vào ô "allowance" (hạn mức). Nếu không approve trước, dApp như sàn phi tập trung hay giao thức DeFi không thể chạm vào token của bạn. Đây là rủi ro ở tầng smart contract, khác lộ private key và khác phishing lừa đăng nhập.
Bài này bám đúng một khái niệm kỹ thuật hay bị bỏ qua: allowance. Hiểu nó giúp bạn thấy vì sao một chữ ký approve tưởng vô hại lại có thể khiến ví bị rút sạch sau này, và vì sao thói quen revoke định kỳ lại quan trọng khi bạn tương tác nhiều với các ứng dụng on-chain.
Token approval (cấp quyền) là gì?
Với chuẩn token ERC-20 trên các blockchain tương thích EVM, mỗi ví tự giữ số dư của mình. Khi bạn muốn một smart contract di chuyển token giúp bạn, bạn phải gọi hàm approve để đặt một "allowance": hạn mức tối đa mà contract đó được phép rút.
Allowance được lưu ngay trong contract của token, gắn với cặp (chủ ví, contract được cấp quyền). Sau khi approve, contract đó có thể gọi transferFrom để rút token của bạn, miễn là chưa vượt hạn mức. Quan trọng: allowance tồn tại dai dẳng cho tới khi bạn chủ động thay đổi. Xong một giao dịch không có nghĩa là quyền tự mất đi.
Nói cách khác, approve là một quyết định tách rời với việc chuyển tiền. Bạn cấp quyền một lần, rồi contract có thể dùng lại quyền đó ở những lần sau mà không cần bạn ký lại từ đầu.
Vì sao dApp yêu cầu approve trước khi giao dịch
Cơ chế allowance sinh ra để bạn không phải tự tay bấm gửi từng token mỗi lần. Khi hoán đổi token trên một sàn phi tập trung (khái niệm CEX và DEX giải thích rõ hơn), giao thức cần rút token nguồn từ ví bạn để thực hiện swap. Nó chỉ làm được điều đó nếu bạn đã approve trước.
Vì vậy nhiều dApp tách thao tác thành hai bước: một giao dịch approve, rồi một giao dịch thực thi (swap, nạp thanh khoản, staking). Bước approve tốn phí gas riêng, nên để tiết kiệm, nhiều giao diện mặc định xin luôn hạn mức rất lớn để bạn không phải approve lại ở các lần sau.
Đây chính là điểm cần tỉnh táo. Sự tiện lợi "approve một lần dùng mãi" đồng nghĩa với việc bạn đang trao một quyền dài hạn cho một đoạn mã. Nếu đoạn mã đó an toàn thì không sao; nếu không, quyền ấy có thể bị lợi dụng. Lưu ý cơ chế này áp dụng cho token ERC-20 nói chung, bao gồm nhiều loại stablecoin mà bạn hay dùng làm cặp giao dịch.
Rủi ro của quyền approve vô hạn (unlimited)
"Approve vô hạn" nghĩa là bạn đặt allowance ở mức tối đa mà chuẩn token cho phép, gần như không giới hạn. Contract được cấp quyền khi đó có thể rút toàn bộ token loại đó trong ví bạn, ở bất kỳ thời điểm nào, cho tới khi bạn thu hồi quyền.
Vấn đề nằm ở chỗ bạn không kiểm soát được điều gì xảy ra sau khi ký. Nếu smart contract vốn đã độc hại, hoặc một contract từng lành mạnh nhưng về sau bị khai thác lỗ hổng hay bị chiếm quyền quản trị, thì hạn mức vô hạn bạn cấp trước đó trở thành cửa ngõ để kẻ tấn công rút sạch số token bạn đang giữ. Việc rút diễn ra hoàn toàn hợp lệ về mặt kỹ thuật, vì chính bạn đã ký cho phép.
Cần phân biệt rạch ròi: đây không phải chuyện lộ private key (mất khóa là mất toàn quyền kiểm soát ví), cũng không phải phishing kiểu lừa bạn nhập mật khẩu. Ở đây khóa của bạn vẫn an toàn, nhưng một quyền hạn cũ mà bạn đã cấp lại đủ để gây thiệt hại. Nhiều vụ mất token trong DeFi đến từ đúng lỗ hổng "allowance còn treo" này, chứ không phải từ việc ví bị hack theo nghĩa thông thường.
Revoke là gì và khi nào nên thu hồi quyền
Revoke (thu hồi) là hành động đặt lại allowance của một contract về 0, cắt đứt quyền rút token mà trước đó bạn đã cấp. Sau khi revoke, contract đó không còn gọi transferFrom để lấy token của bạn được nữa; muốn dùng lại, bạn sẽ phải approve lần mới.
Bạn nên cân nhắc revoke trong vài tình huống: sau khi dùng xong một dApp mà không có ý định quay lại sớm; khi nghe tin một giao thức bạn từng tương tác bị khai thác hoặc nghi vấn; hoặc khi rà soát định kỳ và thấy những hạn mức vô hạn đang treo cho các contract lạ. Với ví ít dùng nhưng còn giữ tài sản, việc dọn sạch allowance cũ càng đáng làm.
Về công cụ, có những trang chuyên liệt kê toàn bộ approval hiện có của một địa chỉ và cho phép revoke từng cái. Nguyên tắc quan trọng: chỉ dùng công cụ có uy tín, tự kiểm tra kỹ URL, và luôn đọc rõ nội dung giao dịch trước khi ký, vì bản thân bước revoke cũng là một giao dịch on-chain tốn phí gas.
Thói quen quản lý approval để giữ ví an toàn
Vài thói quen đơn giản giúp thu hẹp rủi ro ở tầng allowance. Khi một dApp xin approve, hãy đọc kỹ hạn mức: nếu ví hỗ trợ, cân nhắc đặt hạn mức vừa đủ cho giao dịch hiện tại thay vì mặc định vô hạn. Đánh đổi là bạn có thể phải approve lại lần sau, nhưng cửa sổ rủi ro nhỏ hơn nhiều.
Nên rà soát danh sách approval theo định kỳ và revoke những quyền không còn dùng, đặc biệt các hạn mức lớn cấp cho contract mà bạn không còn nhớ rõ. Một chiến lược phổ biến khác là tách ví: dùng một ví riêng, chỉ chứa lượng tài sản đủ dùng, để thử nghiệm các dApp mới; giữ phần lớn tài sản ở ví ít khi ký approve.
Cuối cùng, luôn coi mỗi lần ký approve là một quyết định về bảo mật, không phải thao tác bấm cho xong. Hiểu rằng bạn đang trao quyền chạm vào token, kiểm tra xem contract có đáng tin không, và biết mình có thể revoke bất cứ lúc nào, đó là nền tảng để tương tác với thế giới on-chain một cách an toàn hơn.
Nguồn tham khảo
- ethereum.org — ERC-20 — Chuẩn token ERC-20.
- ethereum.org — Security — An toàn và cấp quyền token.
⚠️ Miễn trừ trách nhiệm: Nội dung chỉ nhằm mục đích thông tin và giáo dục, KHÔNG phải lời khuyên đầu tư, pháp lý hay bảo mật cá nhân. Thị trường tài sản mã hoá biến động mạnh và tiềm ẩn rủi ro mất vốn. Tại Việt Nam, khung pháp lý đang thay đổi: Nghị định 284/2026/NĐ-CP có hiệu lực 1/9/2026 quy định xử phạt vi phạm hành chính về tài sản mã hoá. Hãy tự nghiên cứu (DYOR) và cân nhắc tham vấn tổ chức/chuyên gia được cấp phép trước khi ra quyết định.
Câu hỏi thường gặp
- Token approval khác gì với việc lộ private key?
- Lộ private key nghĩa là kẻ khác nắm toàn quyền kiểm soát ví, làm được mọi thứ với mọi tài sản trong đó. Token approval hẹp hơn: bạn chỉ cấp cho một smart contract quyền rút một loại token trong hạn mức nhất định, còn khóa vẫn nằm ở bạn. Nhưng nếu contract đó độc hại hoặc bị khai thác, quyền cũ vẫn đủ để rút token loại đã approve.
- Vì sao approve vô hạn lại nguy hiểm?
- Approve vô hạn đặt allowance ở mức gần như không giới hạn, cho phép contract rút toàn bộ token loại đó trong ví bạn ở bất kỳ lúc nào cho tới khi bị thu hồi. Nếu contract về sau bị khai thác lỗ hổng hoặc vốn đã cài mã độc, hạn mức treo đó trở thành cửa để rút sạch token, dù bạn không hề ký thêm giao dịch nào.
- Revoke approval có mất phí không?
- Có. Revoke là một giao dịch on-chain, tức bạn đặt lại allowance về 0 và phải trả phí gas như bất kỳ giao dịch nào khác. Đây là chi phí đáng cân nhắc để cắt đứt các quyền cũ không còn dùng. Luôn dùng công cụ uy tín, kiểm tra kỹ URL và đọc rõ nội dung giao dịch trước khi ký.
Nội dung trên website chỉ mang tính thông tin, không phải lời khuyên đầu tư. Giao dịch crypto có rủi ro mất vốn rất cao.