Thu hồi phê duyệt token từ SSP

·7 phút đọc·Bởi SSP Editorial Team
Hình minh hoạ việc thu hồi phê duyệt token ERC-20 từ ví SSP: allowance được đưa về 0 và SSP Key đồng ký giao dịch.

Thu hồi phê duyệt token từ SSP

Mỗi lần bạn xác nhận một giao dịch swap, gửi tiền hay listing NFT trên một chain EVM, bạn đang cấp cho dApp quyền di chuyển một token ERC-20 cụ thể thay mặt bạn. Những quyền đó — gọi là phê duyệt hay allowance — vẫn tồn tại on-chain sau khi giao dịch đã được thanh toán. Vài tháng sau, hợp đồng mà bạn tin tưởng hồi tháng Ba vẫn có thể được phép rút sạch token đó vào tháng Sáu. Cách xử lý rất rõ ràng: thu hồi những phê duyệt bạn không còn cần. Bài hướng dẫn này chỉ cho bạn cách làm điều đó từ SSP, ví tự bảo quản 2-trên-2 nơi mỗi giao dịch (bao gồm cả thu hồi) được SSP Key đồng ký.

Nếu khái niệm này mới với bạn, hãy đọc trước Phê duyệt token: những quyền bạn vẫn liên tục cấp. Bài đó giải thích vì sao phê duyệt tồn tại và vì sao allowance không giới hạn là bề mặt tấn công mặc định trong DeFi. Bài hiện tại là phần dọn dẹp đi kèm.

Tóm tắt nhanh

Khi bạn ký một lời gọi approve(spender, amount), hợp đồng token ghi nhận rằng spender (thường là một hợp đồng router, vault hay marketplace) được phép chuyển tối đa amount token đó từ địa chỉ của bạn. Nhiều dApp yêu cầu 2^256 - 1 — gần như không giới hạn — để giúp bạn tiết kiệm gas cho các tương tác sau này. Sự tiện lợi đó cũng chính là rủi ro: nếu hợp đồng spender về sau bị xâm phạm, hoặc bạn ngừng dùng dApp nhưng allowance vẫn còn đó, kẻ tấn công có thể rút sạch toàn bộ số dư bất cứ lúc nào.

Thu hồi đảo ngược việc cấp quyền đó. Nó không hoàn tác các giao dịch trước đó và không "xoá" bất cứ thứ gì — nó chỉ đặt allowance về lại 0.

Thu hồi vận hành về mặt kỹ thuật ra sao

Một thao tác thu hồi chỉ là một giao dịch khác. Bạn gọi approve(spender, 0) trên đúng hợp đồng token đó, trên đúng chain nơi phê duyệt gốc đã được cấp. Một lời gọi hàm duy nhất đó ghi một giá trị 0 mới vào mapping allowance[owner][spender] của hợp đồng, ghi đè con số cũ.

Một vài chi tiết kỹ thuật cần ghi nhớ:

  • Mỗi cặp token-spender, mỗi chain, một lần thu hồi. Nếu bạn đã phê duyệt một spender USDC trên Ethereum và cũng spender đó trên Polygon, bạn cần hai giao dịch thu hồi — mỗi chain một giao dịch. Allowance không được chia sẻ giữa các chain.
  • Thu hồi là một giao dịch độc lập. Nó tốn gas như mọi giao dịch chuyển khoản khác. Hãy lên kế hoạch: chuẩn bị tài sản gốc của chain (ETH trên Ethereum, MATIC trên Polygon, v.v.) để trang trải phí.
  • Có thể rẻ hơn bạn lo lắng. Một thao tác thu hồi là một lần ghi đơn giản, thường rẻ hơn cả một swap. Trên các Layer 2 như Base, chi phí thường chỉ vài xu.
  • SSP vẫn đồng ký. Vì SSP là một ví 2-trên-2, giao dịch thu hồi đi theo cùng một quy trình như mọi giao dịch khác: extension đề xuất, SSP Key xem lại và đồng ký. Bảo vệ của bạn mở rộng đến cả khâu dọn dẹp — không một thiết bị nào tự thu hồi đơn phương, và không một thiết bị nào có thể bị lừa để phê duyệt một thứ ngụy trang dưới dạng thu hồi.

Hai con đường thu hồi

Bạn có hai cách thu hồi phê duyệt từ SSP, đều có giá trị tương đương. Hãy chọn cách phù hợp với tình huống.

Cách 1: dùng một block explorer uy tín

Đây là lộ trình thủ công, minh bạch. Hữu ích khi bạn biết chính xác token và spender mình muốn thu hồi, hoặc khi bạn không muốn kết nối với một công cụ bên thứ ba.

  1. Mở trang hợp đồng của token trên explorer phù hợp:
    • Ethereum: etherscan.io
    • Polygon: polygonscan.com
    • Base: basescan.org
    • BNB Smart Chain: bscscan.com
    • Avalanche: snowtrace.io
  2. Vào tab Contract, rồi đến Write Contract (hoặc Write as Proxy nếu token là hợp đồng proxy — phần lớn các stablecoin lớn đều như vậy).
  3. Tìm hàm approve. Tham số là spender (địa chỉ bạn muốn thu hồi) và amount (allowance mới).
  4. Đặt amount về 0. Dán địa chỉ spender — sao chép từ lịch sử giao dịch trước đây, đừng bao giờ gõ từ trí nhớ.
  5. Kết nối ví của bạn. Hầu hết các explorer hỗ trợ WalletConnect, cũng là cách được khuyến nghị để kết nối SSP. Phê duyệt kết nối trong extension.
  6. Nhấn Write. Explorer dựng giao dịch approve(spender, 0) và đẩy sang SSP. Extension SSP hiển thị chi tiết lời gọi; SSP Key đồng ký; thu hồi được phát đi.

Con đường này dài dòng nhưng không để lại sự mơ hồ nào về thứ bạn đã ký.

Cách 2: dùng một công cụ thu hồi chuyên dụng

Với hầu hết người dùng, đây là lựa chọn thực tế. revoke.cash là công cụ mã nguồn mở được dùng rộng rãi cho việc này. Nó quét địa chỉ của bạn trên các chain được hỗ trợ, liệt kê mọi allowance đang hoạt động, đánh dấu những thứ rủi ro (số lượng không giới hạn, hợp đồng lạ) và cho phép bạn thu hồi — từng cái hoặc theo lô — thông qua ví đang kết nối.

Quy trình:

  1. Mở revoke.cash trực tiếp trong trình duyệt. Bookmark đúng domain thật và chỉ vào từ bookmark đó. Bản phishing của các công cụ thu hồi tồn tại chính vì người dùng đến đó sẵn sàng ký giao dịch.
  2. Kết nối bằng WalletConnect, rồi quét mã QR hoặc dán URI vào SSP.
  3. Chuyển bộ chọn chain sang chain bạn muốn rà soát. revoke.cash sẽ lấy về các phê duyệt của bạn trên chain đó.
  4. Xem lại danh sách. Mỗi dòng hiển thị token, spender, số lượng allowance và thường có nhãn cho dApp.
  5. Nhấn Revoke cạnh bất cứ mục nào bạn không còn dùng. Mỗi thao tác thu hồi là một giao dịch approve(spender, 0) riêng, được SSP đồng ký.

Một quy trình rà soát thực tế

Một hoặc hai lần mỗi năm, dành 20 phút và đi qua các bước sau:

  1. Kết nối SSP với revoke.cash qua WalletConnect.
  2. Xem lại các phê duyệt đang hoạt động trên mỗi chain bạn đã dùng. Bắt đầu với Ethereum — về mặt lịch sử là đồ thị phê duyệt dày đặc nhất — rồi lần lượt Polygon, Base, BNB Smart Chain và Avalanche.
  3. Bắt đầu từ những mục rủi ro nhất. Sắp xếp hoặc lướt qua để tìm allowance không giới hạn và tên dApp lạ. Một protocol bạn đã swap một lần năm 2024 và không bao giờ chạm lại là ứng viên hàng đầu. Cũng như mọi hợp đồng bạn không thể xác định.
  4. Thu hồi. Xác nhận giao dịch trong extension SSP; SSP Key nhắc bạn đồng ký; thu hồi được phát đi.
  5. Đồng ký trên SSP Key. Đây là lúc kiểm tra lại đích đến. SSP Key hiển thị hợp đồng bạn đang gọi và hàm — xác nhận cả hai đều khớp với ý định của bạn.
  6. Lặp lại theo từng chain. Allowance là theo từng chain. Đừng cho rằng thu hồi trên Ethereum cũng dọn sạch Polygon.

Bạn không cần xoá sạch tất cả. Mục tiêu là giữ allowance trên các hợp đồng bạn còn dùng và đưa phần còn lại về 0.

Cảnh báo

  • Vệ sinh domain. Chỉ dùng domain chính thức revoke.cash. Bản phishing nhắm chính xác vào quy trình này vì người dùng đã ở chế độ ký giao dịch. Bookmark nó; kiểm tra thanh URL trước khi kết nối.
  • Thực tế theo từng chain. Thu hồi một phê duyệt USDC trên Ethereum không hề chạm đến phê duyệt USDC trên Polygon, ngay cả khi token "trông giống nhau" trong portfolio của bạn. Phải đi qua từng chain một cách rõ ràng.
  • Ngân sách gas. Thu hồi tốn gas. Trên Ethereum, một lô thu hồi tích tụ có thể cộng dồn; hãy làm khi gas đang dịu. Trên Layer 2, chi phí gần như không đáng kể.
  • Luôn xác minh spender. Trước khi bạn ký bất kỳ giao dịch "thu hồi" nào, hãy chắc chắn rằng địa chỉ spender trong lời gọi khớp với hợp đồng bạn định thu hồi. Một trang độc hại có thể trình bày một UI thu hồi giả thực ra đang phát một phê duyệt mới cho kẻ tấn công. Đọc tên hàm (approve) và số lượng (0) trên màn hình SSP Key là tuyến phòng thủ cuối cùng của bạn.
  • Permit lại khác. Một số token (USDC, các biến thể của DAI) hỗ trợ permit — các chữ ký off-chain hoạt động như phê duyệt. revoke.cash sẽ hiện các quyền dựa trên permit mà nó biết; với bất cứ thứ gì bạn không nhận ra, hãy xử lý y như một allowance on-chain.

Lợi thế 2-trên-2 trong dọn dẹp

Đây là điểm thường bị bỏ sót: thu hồi trong SSP không phải là một cú nhấp trên một thiết bị duy nhất. Extension của bạn soạn thảo thu hồi nhưng không thể tự phát đi. SSP Key phải đồng ký, và chính bước đồng ký đó là lúc bạn kiểm tra thứ thực sự sắp được gửi. Nếu extension của bạn bị xâm phạm và cố gửi một "thu hồi" độc hại mà thực chất là một phê duyệt mới, SSP Key sẽ hiển thị đúng hàm và đúng số lượng trên màn hình của nó. Hai thiết bị, hai cơ hội để bắt được vấn đề.

Vệ sinh phê duyệt định kỳ là thói quen DeFi có đòn bẩy cao nhất mà phần lớn người dùng bỏ qua. Đặt một lời nhắc trên lịch, làm bài rà soát, ngủ ngon hơn. Và đọc tiếp loạt bài — bắt đầu với Ethereum trong SSP nếu bạn muốn neo lại các chi tiết theo từng chain, hoặc quay lại Phê duyệt token: những quyền bạn vẫn liên tục cấp để tự nhắc mình vì sao chuyện này quan trọng.

Chia sẻ bài viết này

Bài viết liên quan