Phê duyệt token Ethereum

Những ý chính:

  • Token approval là quyền cấp phép on-chain mà chủ sở hữu crypto cấp cho các ứng dụng web3 để truy cập và sử dụng tài sản của họ nhằm thực hiện các giao dịch tự động.
  • Mặc dù token approval là một ví dụ điển hình cho quyền tự chủ tài sản (self-sovereignty) mà crypto mang lại, nhưng nó cũng đặt ra trách nhiệm lớn hơn cho người dùng trong việc nhận thức và quản lý các rủi ro tiềm ẩn.
  • Do đó, việc hiểu rõ cách token approval hoạt động và cách giảm thiểu rủi ro của chúng là một bước quan trọng mà mọi người dùng Ethereum nên thực hiện.

Ethereum đã giữ vững vị trí trong top 3 tiền điện tử lớn nhất thế giới bởi vì nó đã thay đổi cuộc chơi của web3 khi trở thành nền tảng đầu tiên cho phép các smart contract tự thực thi và các ứng dụng Web3 phức tạp.

Các ứng dụng này thường cần quyền truy cập từ chủ sở hữu ví để có thể hoạt động. Người dùng có thể cấp quyền đó bằng cách ký giao dịch bằng private key của mình. Tuy nhiên, việc phải ký từng giao dịch riêng lẻ mỗi lần thực hiện thao tác có thể trở nên phiền toái và mất thời gian, đặc biệt đối với những tác vụ lặp lại thường xuyên. Không chỉ tạo ra trải nghiệm người dùng kém, điều này còn dẫn đến tổng chi phí gas cao hơn.

Cơ chế token approval được thiết kế để giải quyết thách thức này trong khi vẫn duy trì tính bảo mật của tài sản. Tuy vậy, vẫn tồn tại một số rủi ro liên quan mà người dùng cần phải nhận thức rõ. Vì vậy, hãy cùng tìm hiểu token approval là gì và cách chúng hoạt động, lịch sử phát triển của token approval, cách sử dụng chúng một cách an toàn, và khi nào bạn nên sử dụng cơ chế này.

Token Approval là gì?

Token approval là quyền cấp phép on-chain mà người dùng ví crypto cấp cho smart contract, chủ yếu trên các ứng dụng phi tập trung (dApps). Cơ chế này cho phép smart contract truy cập vào một lượng token cụ thể của người dùng mà không cần chữ ký ví cho từng giao dịch riêng lẻ. Trong một số trường hợp, sự chấp thuận của người dùng còn cho phép dApp chuyển tài sản từ ví Ethereum của người dùng sang smart contract của dApp để thực hiện các giao dịch một cách tự động. Một số dApp chỉ yêu cầu quyền truy cập vào một lượng tài sản giới hạn, trong khi những dApp khác có thể yêu cầu quyền truy cập không giới hạn. Vì vậy, người dùng cần xem xét cẩn thận các thông số này trước khi xác nhận yêu cầu token approval từ smart contract.

Vì việc xác nhận approval diễn ra trực tiếp trên blockchain (on-chain) nên sẽ có phí gas mà người dùng phải thanh toán. Sau khi hoàn tất, blockchain sẽ ghi lại giao dịch một cách bất biến nhằm đảm bảo tính minh bạch và bảo mật.

Vậy tại sao một dApp lại cần đến token approval?

Token Approval được sử dụng để làm gì?

Theo mặc định, một dApp không thể truy cập vào tài sản crypto của bạn nếu không có sự cho phép rõ ràng thông qua chữ ký từ ví. Token approval chính là bằng chứng được ghi nhận trên blockchain cho phép dApp sử dụng các tài sản này, ngay cả khi bạn không trực tiếp ký giao dịch tại thời điểm đó. Ví dụ, giả sử bạn muốn sử dụng nền tảng cho vay như Aave. Để làm được điều này, trước tiên bạn phải approve các token mà bạn muốn cho vay. Token approval sẽ cho phép Aave truy cập vào ví của bạn và chuyển tài sản vào pool cho vay.

Tương tự, các thị trường NFT cũng yêu cầu token approval. Nếu bạn muốn bán một NFT trên nền tảng như OpenSea, bạn phải cấp quyền cho marketplace xử lý giao dịch NFT thay mặt bạn. Nhưng thực sự điều gì diễn ra phía sau khi các dApp truy cập token từ ví người dùng?

Token Approval hoạt động như thế nào?

Các tiêu chuẩn token khác nhau có thể sử dụng các phương pháp token approval hơi khác nhau, mặc dù về cơ bản chúng đều thực hiện cùng một chức năng chính.

Đối với token chuẩn ERC-20, có ba hàm smart contract quan trọng liên quan đến token approval:

  • Hàm “approve”, cho phép địa chỉ smart contract được quyền chi tiêu token của người dùng
  • Hàm “allowance”, xác định số lượng token mà người dùng đã cho phép smart contract được phép chi tiêu
  • Hàm “transferFrom”, là cơ chế để smart contract thực sự sử dụng (chi tiêu) các token đó

Theo thời gian, cơ chế token approval đã không ngừng phát triển nhằm cải thiện trải nghiệm người dùng, giảm chi phí giao dịch và tăng cường bảo mật tài sản. Phần tiếp theo sẽ giải thích chi tiết lịch sử phát triển của từng tiêu chuẩn token và các cơ chế approval tương ứng của chúng.

Smart Contract không thể trực tiếp quản lý ETH

Trên Ethereum, ETH là đồng tiền điện tử gốc (native cryptocurrency) được sử dụng để thanh toán cho các giao dịch và dịch vụ tính toán trên mạng lưới. Tuy nhiên, ETH không tuân theo tiêu chuẩn token ERC-20, tiêu chuẩn cho phép smart contract dễ dàng quản lý token (ví dụ: chuyển token hoặc cấp quyền cho các smart contract khác sử dụng chúng).

Vì lý do này, bạn không thể trực tiếp cấp quyền cho một smart contract quản lý ETH của mình theo cách tương tự như với các token ERC-20.

Để khắc phục hạn chế này, bạn có thể chuyển đổi ETH của mình thành Wrapped Ether (WETH) – một token ERC-20 đại diện cho ETH theo tỷ lệ 1:1.

Điều này có nghĩa là 1 ETH = 1 WETH. Khi bạn wrap ETH thành WETH, tài sản này sẽ trở thành một token tương thích ERC-20, từ đó smart contract có thể quản lý và tương tác với nó.

Cách hoạt động

  • Hoán đổi ETH sang token ERC-20: Bạn gửi ETH của mình đến smart contract WETH, và đổi lại bạn sẽ nhận được một lượng WETH tương đương.
  • Cấp quyền (Approvals): Vì WETH là token ERC-20, bạn có thể sử dụng các hàm chuẩn của ERC-20 (như approve) để cho phép một smart contract quản lý WETH của bạn.
  • Tương tác với Smart Contract: Sau đó, smart contract có thể chuyển hoặc sử dụng WETH thay mặt bạn, từ đó bạn có thể tương tác với các dApp như nền tảng lending, marketplace NFT và nhiều ứng dụng khác.

Lịch sử phát triển của Token Approval

Cơ chế “Approve” của tiêu chuẩn ERC-20: Cơ chế Approval nguyên bản

Hàm “approve” của tiêu chuẩn token ERC-20 là cơ chế token approval ban đầu. Nó cho phép bạn chỉ định số lượng token mà bạn cho phép một smart contract chuyển khỏi tài khoản của mình. Mặc dù đây là nền tảng của cơ chế token approval trên Ethereum, phương pháp này vẫn tồn tại một số hạn chế.

Thứ nhất, mỗi lần approval được ghi nhận như một giao dịch riêng biệt trên blockchain. Vì bạn phải trả phí gas cho từng giao dịch, chi phí có thể tăng lên đáng kể. Thứ hai, bạn phải cấp quyền trước cho một số lượng token cụ thể mà một smart contract được phép sử dụng. Điều này có nghĩa là mỗi khi số lượng token được cấp quyền ban đầu bị sử dụng hết, bạn sẽ phải thực hiện một token approval mới.

Cuối cùng, việc cấp quyền token không giới hạn (unlimited approval) cho một dApp có thể ảnh hưởng đến mức độ an toàn của ví. Lý do là kẻ xấu có thể khai thác một smart contract có quyền unlimited approval để rút token khỏi ví của bạn.

ERC-2612 Permit Signatures

ERC-2612 đã giới thiệu một phương pháp token approval mới trên Ethereum được gọi là Permit signatures (Chữ ký cấp phép).

Cụ thể, Permit signatures cho phép bạn cấp token approval bằng cách ký một thông điệp off-chain. Sau đó, smart contract của dApp sẽ sử dụng chữ ký off-chain này để xác minh và thực thi token approval on-chain. Phương pháp này mang lại một số lợi ích quan trọng. 

Thứ nhất, việc ký approval off-chain giúp người dùng không phải trả phí gas cho đến khi giao dịch thực sự được thực hiện trên blockchain. Thứ hai, các approval off-chain này cũng có nghĩa là bạn không cần thực hiện một giao dịch on-chain mới cho mỗi lần ký, từ đó cải thiện đáng kể trải nghiệm người dùng khi tương tác với dApps.

Ngoài ra, ERC-2612 Permit signatures còn tăng cường bảo mật tài sản, cho phép người dùng thiết lập trước giới hạn và thời gian hết hạn cho token approvals. Tuy nhiên, mặc dù rất hữu ích, ERC-2612 vẫn chưa được áp dụng rộng rãi trên toàn bộ hệ sinh thái.

Permit2

Permit2 là một hợp đồng token approval mã nguồn mở được phát triển bởi đội ngũ Uniswap, với mục tiêu mở rộng các lợi ích của ERC-2612 cho tất cả các token. Nói cách khác, Permit2 cho phép bạn sử dụng approval không tốn gas cho bất kỳ token nào, bất kể token đó có tích hợp ERC-2612 hay không.

Ngoài ra, Permit2 còn tích hợp sẵn cơ chế tự động hết hạn, giúp loại bỏ rủi ro bảo mật do các token approval tồn tại quá lâu. Permit2 cũng cho phép người dùng gộp nhiều token lại và thực hiện nhiều giao dịch chuyển token trong một giao dịch duy nhất.

Tương tự, người dùng cũng có thể thu hồi (revoke) token approvals theo từng nhóm. Nhắc đến việc thu hồi token approvals, vậy tại sao bạn có thể muốn làm điều đó và khi nào thì cần thiết?

Rủi ro khi cấp Token Approval

Mặc dù token approvals là một bước cần thiết để dApps có thể truy cập tài sản của người dùng, chúng vẫn tiềm ẩn một số rủi ro đáng lưu ý. Một trong những cách phổ biến mà kẻ xấu khai thác token approvals là thông qua các hàm smart contract độc hại.

Nếu một người dùng không cảnh giác chọn hàm “SetApprovalForAll” trên một smart contract hoặc dApp độc hại, kẻ lừa đảo có thể rút toàn bộ token khỏi ví của người dùng.

Tương tự, hacker cũng có thể rút tài sản từ ví của người dùng bằng cách khai thác các smart contract không độc hại nhưng có lỗi bảo mật. Đây chính là một trong những nguy cơ của các approval tồn tại lâu dài, vì smart contract có thể bị tấn công hoặc bị khai thác sau một thời gian dài kể từ lần tương tác ban đầu.

Nhiều người cũng trở thành nạn nhân của các vụ lừa đảo sau khi tương tác với nhầm smart contract, tưởng rằng đó là một dApp đáng tin cậy. Điều này thường xảy ra do các cuộc tấn công phishing, vì vậy việc kiểm tra kỹ nền tảng trước khi ký bất kỳ token approval nào là vô cùng quan trọng.

Mặc dù ít phổ biến hơn, vẫn có khả năng chủ dự án trở nên “rogue” (hành động gian lận) và cố ý tạo ra smart contract có lỗi trong một dApp hợp pháp. Sau đó, họ có thể lợi dụng các token approval đã tồn tại để đánh cắp tài sản.

Unlimited Token Approval có nghĩa là smart contract có quyền truy cập toàn bộ tài sản của tôi không?

Khi bạn cấp quyền approval “không giới hạn”, điều đó chỉ áp dụng cho loại cryptocurrency hoặc bộ sưu tập NFT mà bạn đã cấp quyền. Ví dụ, nếu bạn cấp unlimited approval cho token ERC-20 WETH, thì smart contract có thể truy cập toàn bộ số WETH trong ví crypto của bạn. Tuy nhiên, nó không thể truy cập các tài sản khác như USDT hoặc USDC, nếu bạn có chúng. Tương tự, nếu bạn cấp unlimited approval cho bộ sưu tập NFT CryptoPunks, smart contract chỉ có thể truy cập các NFT thuộc bộ sưu tập đó.

Khi nào nên thu hồi Token Approvals?

Có nhiều trường hợp bạn nên thu hồi token approvals:

Bạn không còn sử dụng ứng dụng hoặc dịch vụ đó

Khi bạn ngừng sử dụng một dApp, bạn thường không còn theo dõi các hoạt động đáng ngờ như rò rỉ dữ liệu hoặc sự cố bảo mật trên nền tảng đó. Vì vậy, giới hạn hoặc thu hồi token approvals đối với các dApp không còn sử dụng là một thực hành bảo mật tốt. Điều này giúp giảm nguy cơ mất tài sản do hack, phishing hoặc các hình thức khai thác khác.

Smart Contract có lỗ hổng khai thác

Đôi khi smart contract có lỗ hổng bảo mật mà kẻ tấn công có thể khai thác. Ví dụ, nền tảng giao dịch NFT Trader gần đây đã gặp sự cố bảo mật, trong đó kẻ tấn công đánh cắp NFT trị giá hơn 3 triệu USD. Công ty sau đó đã báo cáo cuộc tấn công xảy ra trên các smart contract cũ, và yêu cầu người dùng thu hồi token approvals đối với hai địa chỉ contract cụ thể.

Bạn vô tình kết nối với smart contract

Trước khi cấp token approval, bạn thường có cơ hội xác minh chi tiết smart contract trên blockchain explorer như Etherscan. Việc này có thể giúp phát hiện các hoạt động bất thường hoặc dấu hiệu lừa đảo. Tuy nhiên, nếu bạn lỡ kết nối với một contract sai, bạn có thể thu hồi token approval ngay khi phát hiện ra.

Bạn vừa bị lừa đảo

Nếu kẻ lừa đảo đã đánh cắp tài sản của bạn, việc thu hồi token approval sẽ không giúp lấy lại số tiền đã mất. Tuy nhiên, bạn vẫn nên thu hồi tất cả các approval đang hoạt động để ngăn hacker tiếp tục đánh cắp tài sản. Việc xem xét và thu hồi token approval định kỳ cũng giúp giảm nguy cơ bị khai thác từ các approval cũ.

Cách Approve Token một cách an toàn

Bạn không thể tự mình đánh giá hoặc dự đoán tất cả các rủi ro liên quan đến việc sử dụng smart contract hoặc cấp token approvals. Tuy nhiên, bạn vẫn có thể thực hiện một số biện pháp bảo mật để giảm thiểu khả năng trở thành nạn nhân của các vụ hack hoặc đánh cắp tài sản.

Chỉ cấp Token Approval trên các nền tảng đáng tin cậy. Bạn chỉ nên cấp token approval cho các dApp đáng tin cậy. Hãy chắc chắn kiểm tra kỹ những gì một dApp đang yêu cầu trước khi bạn phê duyệt token của mình. Nếu một dApp hứa hẹn lợi nhuận phi thường hoặc bất kỳ điều gì có vẻ quá tốt để là sự thật, hãy đặc biệt cảnh giác và tránh kết nối ví của bạn với nền tảng đó.

Bạn cũng nên đối chiếu tên dApp, URL và địa chỉ smart contract của nó trên các block explorer, đồng thời chỉ cấp quyền truy cập token ở mức giới hạn cho những dApp chưa quen thuộc.

Token approval trong các hệ sinh thái blockchain như Ethereum cho phép smart contract được quyền di chuyển token của bạn, thường là vô thời hạn cho đến khi bạn thu hồi (revoke). Sự linh hoạt này rất mạnh mẽ nhưng cũng tiềm ẩn rủi ro, nó khiến tài sản của bạn đối mặt với nhiều mối đe dọa khác nhau như lỗ hổng khai thác (exploit), sai sót của con người, hoặc thay đổi bối cảnh hệ thống. Mặc dù việc thu hồi approval sau khi ngừng sử dụng dApp hoặc sau khi xảy ra một sự cố bảo mật rõ ràng đã được nhiều người biết đến, vẫn tồn tại một số tình huống ít trực quan hơn nhưng cực kỳ nguy hiểm mà người dùng cần đặc biệt chú ý. Để làm rõ, nếu quyền sở hữu của một smart contract được chuyển giao cho một bên mới. Ví dụ như khi các nhà phát triển ban đầu bán hợp đồng cho một cá nhân hoặc tổ chức khác, thì các token approval hiện có của bạn vẫn tiếp tục tồn tại, và có thể rơi vào tay một thực thể với động cơ không rõ ràng.

Một rủi ro tinh vi khác xuất phát từ các lỗ hổng gián tiếp: một contract mà bạn đã cấp quyền có thể tương tác với một contract khác bị xâm nhập, từ đó khiến tài sản của bạn bị phơi bày thông qua chuỗi phụ thuộc ẩn.

Ngoài ra, giao diện dApp bị xâm nhập cũng tạo ra một dạng rủi ro khác; một frontend bị hack có thể đánh lừa bạn phê duyệt một smart contract độc hại được ngụy trang như hợp đồng hợp pháp. Các hoạt động đáng ngờ trong ví của bạn, chẳng hạn như giao dịch không rõ nguồn gốc hoặc những thay đổi bất thường, có thể là dấu hiệu của phishing hoặc phần mềm độc hại. Trong những trường hợp như vậy, thu hồi token approval có thể ngăn chặn thiệt hại tiếp tục xảy ra trong khi bạn tiến hành điều tra.

Cuối cùng, sau các sự cố bảo mật quy mô lớn, chẳng hạn như một vụ hack bridge hoặc giao thức DeFi lớn, việc chủ động thu hồi token approvals trên các dApp, kể cả những dApp không trực tiếp bị ảnh hưởng, vẫn có thể giúp bảo vệ tài sản của bạn trước các rủi ro dây chuyền (cascading risks) vốn không phải lúc nào cũng dễ nhận thấy ngay lập tức.

Tự nghiên cứu (DYOR – Do Your Own Research)

Việc thực hiện thẩm định kỹ lưỡng (due diligence) trước khi bạn phê duyệt token là vô cùng quan trọng. Nhiều dApp giả mạo thường có những dấu hiệu bất thường như lỗi chính tả, hình ảnh hoặc logo chất lượng thấp, và nhiều sai sót khác. Vì vậy, hãy kiểm tra thật kỹ lưỡng trước khi cấp token approval.

Bạn cũng nên tìm kiếm các đánh giá hoặc thảo luận từ cộng đồng về những dApp mà bạn cảm thấy nghi ngờ.

Phân tách tài sản: Giữ tài sản giá trị ở ví lạnh

Ngay cả khi bạn đã áp dụng mọi biện pháp phòng ngừa, vẫn tồn tại khả năng mất tài sản do các lỗ hổng smart contract ngoài dự đoán. Để tránh việc mất toàn bộ tài sản cùng lúc, bạn nên phân tách tài sản crypto của mình vào nhiều tài khoản khác nhau.

Ví dụ, bạn có thể sử dụng ba tài khoản riêng biệt. Bạn có thể sử dụng tài khoản thứ nhất như một “kho lưu trữ” (vault) để bảo vệ các khoản nắm giữ crypto dài hạn. Tài khoản này không nên kết nối với bất kỳ smart contract nào.

Tiếp theo, bạn có thể sử dụng tài khoản thứ hai để mua và bán tài sản trên các nền tảng đáng tin cậy. Cuối cùng, ví thứ ba có thể đóng vai trò như burner wallet – một ví tạm thời chỉ dùng để kết nối với những nền tảng có mức độ tin cậy chưa cao.

Với cách thiết lập này, các khoản nắm giữ dài hạn của bạn vẫn được bảo vệ, ngay cả khi bạn thực hiện token approval từ những tài khoản khác.

Hãy nhớ thu hồi Token Approvals

Bạn cần kiểm soát hoàn toàn token của mình và thu hồi bất kỳ quyền truy cập nào đang hoạt động nhưng không còn cần thiết. Các dịch vụ như Revoke.cash và Coinbrain cho phép người dùng quét địa chỉ ví và thu hồi quyền truy cập của các dApp mà họ không còn sử dụng.

Tuy nhiên, việc phê duyệt và thu hồi token cho từng giao dịch có thể tốn nhiều thời gian và chi phí. Vì vậy, nhiều người dùng không thực hiện thu hồi approvals, mặc dù điều này có thể ảnh hưởng tiêu cực đến bảo mật tài sản.

Thực tế, trong nhiều trường hợp, việc không thu hồi token approval có thể khiến bạn phải trả giá đắt hơn về sau.

Việc thu hồi Approval có tốn phí không?

Việc cấp và thu hồi token approval đều là quy trình on-chain, do đó có phát sinh phí gas.

Tuy nhiên, các cập nhật blockchain mới hơn như đã đề cập trước đó, đã cung cấp cơ chế token approval và thu hồi approval không tốn gas, cũng như khả năng thu hồi nhiều approval cùng lúc (batch revoke).

Cách thu hồi Ethereum Token Approvals

Bạn có thể thu hồi token approval trên Ethereum một cách dễ dàng bằng Revoke.cash hoặc công cụ Ethereum Token Approval trên Etherscan.

Cách thu hồi Token Approvals bằng Revoke.cash

Thực hiện theo các bước dưới đây để thu hồi token thông qua Revoke.cash:

  • Bước 1: Nhấn vào “Connect Wallet” ở góc trên bên phải. Bạn cũng có thể nhập địa chỉ ví vào thanh tìm kiếm ở phía trên của trang.
  • Bước 2: Xem lại các approval đang hoạt động bằng cách chọn mạng blockchain và các tùy chọn lọc khác.
  • Bước 3: Sau đó, bạn có thể thu hồi token approvals của các dApp mà bạn không còn sử dụng.

Cách thu hồi Token Approvals trên Etherscan

Thực hiện theo các bước dưới đây để thu hồi token thông qua trang Ethereum Token Approval trên Etherscan:

  • Bước 1: Nhập địa chỉ ví của bạn vào thanh tìm kiếm và nhấn nút tìm kiếm. Hệ thống sẽ hiển thị danh sách các smart contract đang được kết nối với địa chỉ đó.
  • Bước 2: Nhấn “Connect to Web3” để kết nối ví web3 của bạn.
  • Bước 3: Nhấn nút “Revoke” đối với smart contract mà bạn không còn muốn tương tác.

Lưu ý rằng mỗi smart contract sẽ có nút “Revoke” riêng, vì vậy bạn sẽ phải thu hồi quyền truy cập cho từng contract một cách riêng lẻ.

Tổng kết về Token Approvals

Token approvals cho thấy rằng người dùng web3 thực sự sở hữu tài sản của mình và có thể đưa ra các quyết định mang tính chủ quyền về cách những tài sản này tương tác với các dApp. Tuy nhiên, cơ chế này cũng đi kèm những rủi ro nhất định, và người dùng chỉ có thể giảm thiểu rủi ro nếu hiểu rõ khái niệm và sử dụng nó một cách thận trọng.

Mặc dù ví cứng rất hữu ích vì giúp bảo vệ private key tốt hơn, chúng không thể ngăn bạn ký nhầm các smart contract độc hại. Vì vậy, việc phân tách tài sản crypto một cách hợp lý là một trong những cách tốt nhất để tự bảo vệ trước các rủi ro liên quan đến token approvals.

May mắn thay, chỉ với một thiết bị Ledger, bạn có thể quản lý số lượng tài khoản gần như không giới hạn. Điều này có nghĩa là bạn có thể thiết lập các tài khoản riêng biệt cho đào, giao dịch và lưu trữ (vault) trong cùng một ví, đồng thời gắn nhãn chúng trên ứng dụng Ledger Wallet, giúp bạn theo dõi các tài khoản dễ dàng và bảo vệ tài sản giá trị của mình.

Hiện tại, các thiết bị ví lạnh Ledger luôn có mặt sẵn tại DigiBit – đại lý uỷ quyền của Ledger tại Việt Nam. Nếu có bất kỳ thắc mắc nào, bạn luôn có thể liên hệ với Team DigiBit để được hỗ trợ.

Giỏ hàng0
Không có sản phẩm nào trong giỏ hàng!
Tiếp tục mua hàng