代幣授權:密碼學貨幣行業使用者體驗的最大障礙

買賣虛擬貨幣

如果你是 DeFi 深度使用者,你肯定被這個繁瑣的流程折磨過無數次了。每當你使用一個新的 dApp,你都需要授權這個 dApp 花費你的代幣。

- Metamask 上的授權介面 -

跟傳統金融行業類比一下,這個流程有點類似於辦理直接借記,授權你的供電商每月從你的銀行賬戶上扣除電費。

但是,與密碼學貨幣行業不同的是,傳統金融行業的直接借記業務只面向少數可信公司。這類公司不太會欺騙消費者,即使偶爾發生欺騙消費者的行為,消費者也可以提出異議,由銀行充當調停者。密碼學貨幣行業沒有這類工具。一些 dApp 是由匿名開發者構建的,沒有為受騙使用者設立的爭議機制。一旦在區塊鏈上完成付款,就無法撤銷。

代幣授權是什麼?它是如何運作的?

以太坊區塊鏈上的大多數代幣,如 USDC 和 DAI,都採用 ERC20 標準。ERC20 代幣實際上是智慧合約,包含不同的方法,如transferFrom和burn。使用者呼叫這些方法,應用就會對代幣做相應的操作。

其中一種方法是approve。任何你想要使用的 dApp 都需要訪問你的 ERC20 代幣才能對其進行操作。例如,如果你想要在 Aave 中存入 USDC,你首先需要授予 Aave dApp 的智慧合約訪問 USDC 的許可權,然後才能透過第二筆交易將 USDC 存入 Aave。你可以在你的以太坊錢包使用者介面上看到該授權。雖然授權可用量從理論上來說是靈活的,但是大多數 dApp 會預設要求無限量授權,以此簡化使用者體驗,並儘可能減少使用者使用該應用所需進行的交易次數。

這裡存在的一個安全問題是,大多數使用者認為他們的授權是針對某個交易,而且是限量的,但是在大多數情況下,使用者實際上授予了 dApp 永久訪問他們持有的某種代幣的許可權,而且是不限量的。因此,如果 dApp 出現安全問題或從一開始就是惡意的,攻擊者就可以將濫用這種授權來盜取 dApp 使用者持有的全部已授權代幣,而無需經過使用者同意。這種攻擊可以在將來的任意時刻發起,即使是在使用者使用過 dApp 的若干年後。

如何保護自己?好訊息是,你可以保護自己免受這類威脅。在下一節中,我們將探討的是,當你使用 Metamask 等標準以太坊錢包時,如何保障你的代幣的安全性,並介紹了一些可以透過定製方法與 dApp 互動的錢包。

1. 如何手動撤銷代幣授權

如果你想手動撤銷授權,你需要使用 Token Allowance Checker 之類的工具。這類工具可以連線到你的錢包,並掃描整個區塊鏈來尋找所有與你的以太坊地址有關的 dApp 授權。然後,你就可以編輯授權:將授權可用量設定為 0 從而取消授權,或者設定為你能接受的量。授權修改是透過與各個 ERC20 代幣合約互動來實現的。

最好能夠定期執行這一流程,取消你不打算再使用的 dApp 的授權。雖然這會花費你一點成本,因為每筆交易都需要在鏈上結算,但是從長期來看,你的錢包會給你應有的回報。

建議:如果你想要節省 gas 成本,可以下載 Gas Station Network 擴充套件程式外掛來在你的瀏覽器上追蹤 gas 價格。你可以等到 gas 成本較低時再編輯你的授權可用量。

2. 下一代以太坊錢包如何保護使用者資金

一些已經推出的智慧合約錢包也具備防護功能。智慧合約錢包具有很強的靈活性,可以為使用者提供定製化的智慧合約互動方式。因此,許多智慧合約錢包已實現定製化的授權方式,提高了使用者體驗和安全性。

原生整合:以 Argent 為例

例如,Argent 是移動端以太坊錢包,已經將一些核心 DeFi 應用原生整合到應用中,以便使用者進行借貸、賺取收益和交易。

這類錢包從智慧合約層面整合了這些 dApp,並確保使用者在與這些 dApp 進行互動時,這些 dApp 只能得到實際請求量的授權。這一切都是在後臺自動進行的,因此 Argent 使用者甚至不知道授權交易的存在。

Argent x Wallet Connect

原生整合的一個缺點是不具備可擴充套件性,就像 Argent 一樣。應用程式不可能原生整合每一個 DeFi 協議。對於大多數使用者來說,Argent 目前已經整合的應用可能足夠了,但是重度 DeFi 使用者使用每天都要使用十幾個不同的 dApp,不想侷限於少數幾個 dApp。

一個名為 WalletConnect 的標準可以解決這個問題。WalletConnect 可以讓使用者將他們的移動錢包連線到 web 端應用,並透過移動錢包安全地簽署交易。Argent 實現了 WalletConnect 整合定製化,讓使用者能夠輕鬆設定授權可用量(從此告別無限量授權)。此外,如果 Argent 使用者改變了想法,可以在 Argent 應用中一鍵取消對某個 dApp 應用的授權。由於大多數 dApp 都支援 WalletConnect,該功能可以讓 Argent 使用者在盡情探索整個 DeFi 領域時享受極高的安全性。

批次交易和 dApp 金鑰:以 Authereum 為例

另一個能夠優雅處理授權的智慧合約錢包是 Authereum。Authereum 基於 web 端,而且大多數以太坊 dApp 應用都支援。另外,Authereum 採用傳統的電子郵件和密碼登入,因此可以在幾秒內將你的錢包連線到 dApp,使用者體驗類似傳統應用,而且不需要犧牲安全性。

當使用者需要與 dApp 互動時,Authereum 會生成一個新的臨時 dApp 金鑰,用來簽署特定 dApp 的交易。該 dApp 金鑰只能執行有限的功能,另外 Authereum 會執行一些完整性檢查。如果發起請求的域不是建立 dApp 金鑰的域,Authereum 可以攔截該交易或通知使用者。最後,這些 dApp 金鑰可以隨時從 Authereum 錢包中刪除。

將多個交易打包到一個交易內還有很多其它優點。其中一個優點是高效 —— 批處理交易可以節約成本和時間。以太坊上的每個普通轉賬交易都需要消耗 21,000 gas。如果使用者一次性打包 10 個交易,總共可以節省 189,000 gas。另外,使用者可以嘗試透過傳送連續交易來節省時間。

批處理交易的唯一問題是,dApp 需要增加一些定製化的邏輯和 UI 流程來適當地處理交易。目前為止,只有 1inch 和 Erasure 等少數 dApp 支援這種交易模式,但是我們預期後續將有更多 dApp 支援該交易模式。

結論

代幣授權存在很大的安全隱患。如果我們想要改善密碼學貨幣應用的使用者體驗和安全性,我們顯然需要改進代幣授權功能。Authereum 和 Argent 之類的錢包可以透過創新的方式讓 dApp 互動更加安全。遺憾的是,在很多情況下,這類交易模式需要 dApp 開發者進行額外的工作,因此使用者需要耐心等待一段時間。

無法採用上述解決方案的標準以太坊錢包至少應該讓使用者可以檢視並編輯其 dApp 代幣授權可用額。代幣授權檢查程式等工具很方便,但不是每個使用者都知道它們。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;