Phê duyệt token cho phép đối tượng cụ thể sử dụng token của một tài khoản theo quy tắc hợp đồng. Thao tác ERC-20 thường gọi là Approve; ERC-20 là chuẩn giao diện token. Kết nối website không phải chấp thuận chi tiêu, ngắt kết nối cũng không tự xóa hạn mức. EIP-20 định nghĩa tra hạn mức và sử dụng; EIP-2612 cho phép chữ ký đủ điều kiện tạo hạn mức. Bài viết dùng ví dụ hữu hạn để xét hiệu lực, sử dụng và thu hồi, với tài liệu đối chiếu tới 27/10/2026.
Khi ví mở cửa sổ xác nhận, khó nhất thường không phải tìm nút mà là hiểu mình đồng ý điều gì. Website nói “đăng nhập” nhưng yêu cầu giao dịch; website đã ngắt mà hạn mức token của đối tượng nào đó vẫn trên chuỗi. Chỉ xét “ví có kết nối không” dễ bỏ sót quyền chi tiêu thực sự.
Bài này tách kết nối, giao dịch và chữ ký rồi theo một kế hoạch hạn mức hữu hạn. Mục tiêu là biết sau mỗi bước trạng thái nào thật sự đổi và điều gì vẫn chưa đủ để kết luận an toàn.
Kết nối, giao dịch và chữ ký trao những quyền khác nhau
Kết nối, Approve và ký thông điệp là các thao tác riêng, không thể cùng kết luận “đã cấp quyền”. Kết nối website thông thường có thể chia sẻ địa chỉ tài khoản bạn chọn và cho phép gửi yêu cầu tiếp theo. Có thể yêu cầu không đồng nghĩa được tùy ý chuyển tài sản. Xem ví và quyền kiểm soát tài sản để hiểu ví giữ khóa thế nào.
Kết nối website không phải chấp thuận chi tiêu token
Token ERC-20 thường ghi hạn mức chi tiêu trong hợp đồng. Chủ sở hữu cấp hạn mức cho spender, tức địa chỉ được quyền sử dụng token, rồi đối tượng đó có thể gọi transferFrom theo quy tắc để gửi token tới bên nhận. Spender có thể là hợp đồng hoặc tài khoản thông thường; tên “router” không chứng minh đáng tin cậy.
Tài liệu MetaMask “Disconnect wallet from a dapp” nhắc ngắt kết nối không thu hồi quyền token. Ngắt kết nối xử lý liên kết giao diện; thu hồi phải thay đổi hạn mức on-chain. Ký bằng phần cứng cũng không tự từ chối yêu cầu chi tiêu độc hại. Cách ví phần cứng cách ly khóa giảm một phần nguy cơ lấy khóa, nhưng bạn vẫn phải hiểu nội dung ký.
Approve và Permit có thời điểm hiệu lực khác nhau
Approve thường là giao dịch gửi tới hợp đồng token. Sau khi xác nhận, vẫn phải đợi thực thi thành công trên chuỗi mới có thể nói hạn mức đã đổi. Từ chối ký, chưa gửi, pending và thực thi lỗi đều chưa phải hoàn tất.
Một đường khác là Permit. EIP-2612 cho chủ sở hữu ký dữ liệu cụ thể trước, rồi chính họ hoặc người khác nộp lên chuỗi sau. Gas là lượng công việc thực thi được tính phí. Lúc ký có thể chưa có phí gas on-chain nhưng người nộp sau có thể tạo hạn mức. Vì vậy, không mất phí mạng ngay không chứng minh chữ ký không có rủi ro tài sản. Giao thức khác có thể dùng cơ chế ký và sử dụng riêng, không áp một cách thu hồi cho tất cả.

Cố định bốn thông tin để đọc một quyền phê duyệt
Trước khi tra hạn mức, xác định mạng, chủ sở hữu, hợp đồng token và spender. Thiếu một mục có thể tra nhầm chuỗi, tài khoản hoặc token, thấy giá trị 0 rồi tưởng quyền cần xử lý đã xóa.
Mạng, chủ sở hữu, token và bên được cấp quyền
Chủ sở hữu xác định token được chi từ tài khoản ai; hợp đồng xác định token nào; spender trả lời ai có thể gọi sử dụng theo hạn mức. Người nhận có thể khác spender, nên không lấy địa chỉ nhận cuối làm spender chỉ vì nó hiện trên màn hình.
Truy vấn EIP-20 allowance(owner, spender) dùng chủ sở hữu và spender làm tham số, trên hợp đồng token đã chọn. Cùng tên token chưa chắc cùng hợp đồng; địa chỉ trông giống cũng không bỏ được kiểm tra mạng. Lấy dữ liệu đầy đủ từ kênh chính thức đáng tin cậy, đối chiếu yêu cầu ký để biết chuẩn bị đổi trạng thái nào.
Hạn mức khác số dư, vô hạn không có nghĩa miễn phí
Số dư là token đang giữ; hạn mức là lượng tối đa đối tượng cụ thể có thể dùng theo hợp đồng. Phê duyệt 20 không tăng số dư 20 và không có nghĩa chuyển ngay 20. Khi hạn mức cao hơn số dư hiện tại, rủi ro có thể bao phủ token nạp vào sau.
Số “vô hạn” hoặc rất lớn thay đổi phạm vi được sử dụng, không miễn phí giao dịch. Cách xử lý hạn mức tối đa, trừ hạn mức và sửa giá trị có thể khác giữa token. Ví dụ dưới cố định mô hình hữu hạn giảm theo lần sử dụng thành công, không đại diện mọi token ERC-20. Nếu chỉ cần dùng 12, vẫn phải hiểu vì sao yêu cầu nhiều hơn, không bỏ qua phạm vi vì tiện lần sau.

Bài tập hạn mức: khi nào 20, 8 và 0 có hiệu lực?
Ghi số dư riêng với hạn mức mới thấy mỗi bước hoàn tất điều gì. Bài tập trên giấy: A ban đầu có 100 đơn vị token T, muốn cho S dùng 12 rồi thu hồi phần hạn mức còn lại. A, S, T và bên nhận R đều là ký hiệu, không có triển khai, chữ ký hay chuyển tiền thật; cũng không có giá token hoặc giả định lợi nhuận.
Bước 1: đọc hạn mức hiện tại rồi quyết định
Cố định mạng, A, hợp đồng T và S, tra hạn mức hiện tại bằng 0. Ghi kết quả cùng thời điểm tra rồi xét có thực sự cần S chi thay không, và S có khớp địa chỉ trên giao diện đáng tin cậy không. Giá trị 0 chỉ mô tả hạn mức của tổ hợp ấy lúc đó, không chứng minh A không có quyền khác hoặc chữ ký còn hiệu lực.
Kế hoạch chỉ cấp 20, dùng 12 rồi xử lý phần còn lại. Số 20 là lựa chọn giảng giải, không khuyên ai cũng dùng cùng mức. Nếu cửa sổ ký đổi S hoặc token không còn T, hủy chuẩn bị và đối chiếu lại bốn mục; kiểm tra vừa xong không cho phép yêu cầu khác tự vượt qua.
Bước 2: chỉ phê duyệt 20 và chờ xác nhận on-chain
Giả sử A chuẩn bị Approve để đặt hạn mức T cho S bằng 20. Cần kiểm tra bên nhận giao dịch, nội dung gọi và phí mạng. Số 20 là đơn vị hiển thị token; hợp đồng có thể lưu số nguyên theo đơn vị nhỏ hơn. Giao diện đáng tin cậy phải quy đổi theo số chữ số thập phân của token, không coi nguyên số thô là lượng trên màn hình.
Khi đã ký nhưng chưa xác nhận, ghi đang chờ, chưa điền hạn mức 20. Sau giao dịch thành công, tra cùng tổ hợp được 20 mới ghi có hiệu lực. Bước này không chuyển T nên số dư vẫn 100. Nếu A tự trả phí, tài sản gốc có thể giảm riêng; không ghi thành T đã bị sử dụng.
Bước 3: sau khi dùng 12, kiểm tra hạn mức còn 8
Giả sử S chuyển thành công 12 T của A tới R theo quy tắc và không có biến động token khác. Số dư T của A là 100 − 12 = 88. Theo mô hình hữu hạn của bài, hạn mức còn của S là 20 − 12 = 8. Hai số trả lời hai câu hỏi: còn giữ bao nhiêu và đối tượng còn dùng được bao nhiêu.
Không chỉ nhìn dấu tích của trang thao tác. Kiểm tra giao dịch gốc thành công, đúng token cùng bên nhận, rồi đọc số dư và hạn mức hiện tại. Nếu có giao dịch khác trong khoảng ấy, không áp thẳng 88 và 8. Nếu thất bại, ghi trạng thái thật on-chain, không trừ 12 theo kỳ vọng.
Hạn mức ERC-20 thông thường vận hành theo quyền đã cấp, không tự khóa bên nhận hoặc mục đích từng lần. Trừ khi hợp đồng có giới hạn riêng, lần đầu gửi R không chứng minh 8 còn lại mãi chỉ dùng được tại cùng nơi.
Bước 4: thu hồi rồi xác nhận 0, không chỉ nhìn đã gửi
Giả sử A tiếp tục đổi hạn mức cùng T và S thành 0 thành công. Trong thời gian giao dịch thu hồi chờ xử lý, 8 cũ không tự mất hiệu lực vì đã bấm nút. Sử dụng hay thu hồi được thực thi trước vẫn ảnh hưởng kết quả. Đừng ghi “tài sản an toàn” chỉ vì đã gửi yêu cầu thu hồi.
Chỉ khi thu hồi thành công và tra lại bằng 0 mới ghi hạn mức của tổ hợp này đã về 0. Nếu không có biến động T khác, A vẫn có 88; hủy quyền 8 không trả thêm 8 vào số dư. Đây là đóng quyền chi còn lại, không lấy lại 12 đã chuyển và không bảo đảm quyền khác an toàn.
EIP-20 cũng lưu ý rủi ro thứ tự giao dịch khi đổi hạn mức hiện có khác không, đề xuất giao diện đặt về không trước khi đặt giá trị mới. Token thật có thể có cách tăng/giảm hoặc hạn chế khác. Đây không phải bảo đảm ngăn mọi hành vi sử dụng trước; nếu nghi bị tấn công, đánh giá theo mức phơi lộ thay vì liên tục đổi hạn mức sang số khác.


Thu hồi một hạn mức rồi, rủi ro nào vẫn còn?
Thu hồi xử lý quyền cụ thể, không tự xóa chữ ký khác, quyền token khác hay lộ khóa. Ví dụ mới hoàn thành việc đưa hạn mức T của A cho S về không trên mạng cố định. Spender, chuỗi hoặc tài sản khác đều cần tra riêng.
Permit chưa nộp khác với hạn mức đã tồn tại
Thêm một nhánh độc lập: A từng ký Permit EIP-2612 chưa được nộp. Nếu nonce và thời hạn vẫn thỏa hợp đồng, nó có thể được nộp sau để tạo hạn mức. Nonce là số thứ tự chống dùng lại cùng giấy phép; deadline là điều kiện hạn chót nộp, không phải bằng chứng an toàn khi chưa hết ngày.
Vì vậy, thấy hạn mức Approve bằng 0 không chứng minh mọi chữ ký chưa nộp đã mất hiệu lực. Phải xét giao thức, nội dung và cách hủy thực tế; approve(0) thông thường không hủy mọi loại chữ ký. Nhánh 20 → 8 → 0 trước đó không có Permit. Phần này chỉ giới hạn kết luận của giá trị 0, không khẳng định bài tập đã có lần chi thứ hai.

Lộ khóa riêng: thu hồi không thay được quyền kiểm soát
Nếu đã đưa cụm từ hoặc khóa riêng cho người khác, vấn đề vượt quá hạn mức của S. Người có dữ liệu kiểm soát có thể tạo giao dịch hay quyền mới; đổi mật khẩu ứng dụng cũ không thu lại bản sao của họ. Đọc khóa riêng và cụm từ khôi phục để xác định tài khoản cùng nguồn.
Không thể khép lại bằng ảnh “đã thu hồi”; cũng không thể vì thấy phê duyệt đáng ngờ mà khẳng định khóa chắc chắn lộ. Tách điều đã biết khỏi điều chưa rõ, xử lý theo dấu vết thực tế. Kiểm tra giao dịch lạ và quyền kiểm soát nối tiếp cách phân nhánh này.

Quản lý quyền trước mỗi lần ký
Thói quen hữu ích là giải thích được đối tượng, phạm vi và cách có hiệu lực trước khi đồng ý. Kiểm kê sau có thể tìm quyền không còn dùng, nhưng không chứng nhận sẵn chữ ký lạ tiếp theo. Không đọc được màn hình, dữ liệu lệch hoặc website thúc bỏ kiểm tra thì dừng.
Kiểm tra từ nguồn đáng tin, không nhận yêu cầu xác minh lạ
Bắt đầu từ ví, tài liệu chính thức hoặc công cụ quản lý hạn mức đã xác minh, không bấm “kiểm tra an toàn” trong tin nhắn lạ. Tra hạn mức công khai không cần đưa khóa hay cụm từ cho hỗ trợ. Nếu công cụ quản lý yêu cầu ký hoặc giao dịch, phải đọc lại yêu cầu đó; nhãn “an toàn” không tạo ngoại lệ.
“Spending caps” của MetaMask giới thiệu xem và thu hồi hạn mức, nhưng danh sách quyền công cụ hiển thị vẫn giới hạn theo hỗ trợ. Không xuất hiện trong danh sách không chứng minh không có quyền trên chuỗi khác, token không thể thay thế (NFT) hoặc chữ ký riêng của giao thức. Bài tập ERC-20 không thay được quy tắc xử lý chúng.
Kiểm tra phí cùng điều kiện dừng
Approve và thu hồi thường cần phí giao dịch on-chain; giấy phép chữ ký có thể để người khác trả phí nộp. Ai trả phí khác với ai được dùng token. Xem phí khi giao dịch thất bại để tách dự trù và khoản tính thực.
Với quản lý thường kỳ, xác định phí cùng ngân sách trước rồi quyết định làm. Nếu nghi có bot quét tiền, không trực tiếp nạp tài sản gốc vào tài khoản cũ để “thu hồi cho xong”. Bot quét theo dõi tiền vào và tự động chuyển tài sản đi nhanh. Ghi điều kiện dừng cùng hạn mức để tránh lộ thêm tiền khi xử lý một quyền.
Bài viết giải thích cơ chế bằng tình huống giả định, không thực hiện phê duyệt hay thu hồi thật và không phải lời khuyên xử lý tài sản cá nhân. Cách triển khai token và giao thức có thể khác; nghi có xâm phạm thì đánh giá bằng dữ liệu thực cùng hỗ trợ chính thức đáng tin cậy.