免責(zé)聲明:本文旨在傳遞更多市場信息,不構(gòu)成任何投資建議。文章僅代表作者觀點(diǎn),不代表火星財(cái)經(jīng)官方立場。
小編:記得關(guān)注哦
來源:以太坊愛好者
如果你是 DeFi 深度用戶,你肯定被這個(gè)繁瑣的流程折磨過無數(shù)次了。每當(dāng)你使用一個(gè)新的 dApp,你都需要授權(quán)這個(gè) dApp 花費(fèi)你的代幣。
- Metamask 上的授權(quán)界面 -
跟傳統(tǒng)金融行業(yè)類比一下,這個(gè)流程有點(diǎn)類似于辦理直接借記,授權(quán)你的供電商每月從你的銀行賬戶上扣除電費(fèi)。
但是,與密碼學(xué)貨幣行業(yè)不同的是,傳統(tǒng)金融行業(yè)的直接借記業(yè)務(wù)只面向少數(shù)可信公司。這類公司不太會(huì)欺騙消費(fèi)者,即使偶爾發(fā)生欺騙消費(fèi)者的行為,消費(fèi)者也可以提出異議,由銀行充當(dāng)調(diào)停者。密碼學(xué)貨幣行業(yè)沒有這類工具。一些 dApp 是由匿名開發(fā)者構(gòu)建的,沒有為受騙用戶設(shè)立的爭議機(jī)制。一旦在區(qū)塊鏈上完成付款,就無法撤銷。
以太坊區(qū)塊鏈上的大多數(shù)代幣,如 USDC 和 DAI,都采用 ERC20 標(biāo)準(zhǔn)。ERC20 代幣實(shí)際上是智能合約,包含不同的方法,如transferFrom和burn。用戶調(diào)用這些方法,應(yīng)用就會(huì)對代幣做相應(yīng)的操作。
其中一種方法是approve。任何你想要使用的 dApp 都需要訪問你的 ERC20 代幣才能對其進(jìn)行操作。例如,如果你想要在 Aave 中存入 USDC,你首先需要授予 Aave dApp 的智能合約訪問 USDC 的權(quán)限,然后才能通過第二筆交易將 USDC 存入 Aave。你可以在你的以太坊錢包用戶界面上看到該授權(quán)。雖然授權(quán)可用量從理論上來說是靈活的,但是大多數(shù) dApp 會(huì)默認(rèn)要求無限量授權(quán),以此簡化用戶體驗(yàn),并盡可能減少用戶使用該應(yīng)用所需進(jìn)行的交易次數(shù)。
這里存在的一個(gè)安全問題是,大多數(shù)用戶認(rèn)為他們的授權(quán)是針對某個(gè)交易,而且是限量的,但是在大多數(shù)情況下,用戶實(shí)際上授予了 dApp 永久訪問他們持有的某種代幣的權(quán)限,而且是不限量的。因此,如果 dApp 出現(xiàn)安全問題或從一開始就是惡意的,攻擊者就可以將濫用這種授權(quán)來盜取 dApp 用戶持有的全部已授權(quán)代幣,而無需經(jīng)過用戶同意。這種攻擊可以在將來的任意時(shí)刻發(fā)起,即使是在用戶使用過 dApp 的若干年后。
如何保護(hù)自己?好消息是,你可以保護(hù)自己免受這類威脅。在下一節(jié)中,我們將探討的是,當(dāng)你使用 Metamask 等標(biāo)準(zhǔn)以太坊錢包時(shí),如何保障你的代幣的安全性,并介紹了一些可以通過定制方法與 dApp 交互的錢包。
如果你想手動(dòng)撤銷授權(quán),你需要使用 Token Allowance Checker 之類的工具。這類工具可以連接到你的錢包,并掃描整個(gè)區(qū)塊鏈來尋找所有與你的以太坊地址有關(guān)的 dApp 授權(quán)。然后,你就可以編輯授權(quán):將授權(quán)可用量設(shè)定為 0 從而取消授權(quán),或者設(shè)定為你能接受的量。授權(quán)修改是通過與各個(gè) ERC20 代幣合約交互來實(shí)現(xiàn)的。
最好能夠定期執(zhí)行這一流程,取消你不打算再使用的 dApp 的授權(quán)。雖然這會(huì)花費(fèi)你一點(diǎn)成本,因?yàn)槊抗P交易都需要在鏈上結(jié)算,但是從長期來看,你的錢包會(huì)給你應(yīng)有的回報(bào)。
建議:如果你想要節(jié)省 gas 成本,可以下載 Gas Station Network 擴(kuò)展程序插件來在你的瀏覽器上追蹤 gas 價(jià)格。你可以等到 gas 成本較低時(shí)再編輯你的授權(quán)可用量。
一些已經(jīng)推出的智能合約錢包也具備防護(hù)功能。智能合約錢包具有很強(qiáng)的靈活性,可以為用戶提供定制化的智能合約交互方式。因此,許多智能合約錢包已實(shí)現(xiàn)定制化的授權(quán)方式,提高了用戶體驗(yàn)和安全性。
例如,Argent 是移動(dòng)端以太坊錢包,已經(jīng)將一些核心 DeFi 應(yīng)用原生整合到應(yīng)用中,以便用戶進(jìn)行借貸、賺取收益和交易。
這類錢包從智能合約層面整合了這些 dApp,并確保用戶在與這些 dApp 進(jìn)行交互時(shí),這些 dApp 只能得到實(shí)際請求量的授權(quán)。這一切都是在后臺(tái)自動(dòng)進(jìn)行的,因此 Argent 用戶甚至不知道授權(quán)交易的存在。
原生整合的一個(gè)缺點(diǎn)是不具備可擴(kuò)展性,就像 Argent 一樣。應(yīng)用程序不可能原生整合每一個(gè) DeFi 協(xié)議。對于大多數(shù)用戶來說,Argent 目前已經(jīng)集成的應(yīng)用可能足夠了,但是重度 DeFi 用戶使用每天都要使用十幾個(gè)不同的 dApp,不想局限于少數(shù)幾個(gè) dApp。
一個(gè)名為 WalletConnect 的標(biāo)準(zhǔn)可以解決這個(gè)問題。WalletConnect 可以讓用戶將他們的移動(dòng)錢包連接到 web 端應(yīng)用,并通過移動(dòng)錢包安全地簽署交易。Argent 實(shí)現(xiàn)了 WalletConnect 整合定制化,讓用戶能夠輕松設(shè)置授權(quán)可用量(從此告別無限量授權(quán))。此外,如果 Argent 用戶改變了想法,可以在 Argent 應(yīng)用中一鍵取消對某個(gè) dApp 應(yīng)用的授權(quán)。由于大多數(shù) dApp 都支持 WalletConnect,該功能可以讓 Argent 用戶在盡情探索整個(gè) DeFi 領(lǐng)域時(shí)享受極高的安全性。
另一個(gè)能夠優(yōu)雅處理授權(quán)的智能合約錢包是 Authereum。Authereum 基于 web 端,而且大多數(shù)以太坊 dApp 應(yīng)用都支持。另外,Authereum 采用傳統(tǒng)的電子郵件和密碼登錄,因此可以在幾秒內(nèi)將你的錢包連接到 dApp,用戶體驗(yàn)類似傳統(tǒng)應(yīng)用,而且不需要犧牲安全性。
當(dāng)用戶需要與 dApp 交互時(shí),Authereum 會(huì)生成一個(gè)新的臨時(shí) dApp 密鑰,用來簽署特定 dApp 的交易。該 dApp 密鑰只能執(zhí)行有限的功能,另外 Authereum 會(huì)執(zhí)行一些完整性檢查。如果發(fā)起請求的域不是創(chuàng)建 dApp 密鑰的域,Authereum 可以攔截該交易或通知用戶。最后,這些 dApp 密鑰可以隨時(shí)從 Authereum 錢包中刪除。
將多個(gè)交易打包到一個(gè)交易內(nèi)還有很多其它優(yōu)點(diǎn)。其中一個(gè)優(yōu)點(diǎn)是高效 —— 批處理交易可以節(jié)約成本和時(shí)間。以太坊上的每個(gè)普通轉(zhuǎn)賬交易都需要消耗 21,000 gas。如果用戶一次性打包 10 個(gè)交易,總共可以節(jié)省 189,000 gas。另外,用戶可以嘗試通過發(fā)送連續(xù)交易來節(jié)省時(shí)間。
批處理交易的唯一問題是,dApp 需要增加一些定制化的邏輯和 UI 流程來適當(dāng)?shù)靥幚斫灰?。目前為止,只?1inch 和 Erasure 等少數(shù) dApp 支持這種交易模式,但是我們預(yù)期后續(xù)將有更多 dApp 支持該交易模式。
代幣授權(quán)存在很大的安全隱患。如果我們想要改善密碼學(xué)貨幣應(yīng)用的用戶體驗(yàn)和安全性,我們顯然需要改進(jìn)代幣授權(quán)功能。Authereum 和 Argent 之類的錢包可以通過創(chuàng)新的方式讓 dApp 交互更加安全。遺憾的是,在很多情況下,這類交易模式需要 dApp 開發(fā)者進(jìn)行額外的工作,因此用戶需要耐心等待一段時(shí)間。
無法采用上述解決方案的標(biāo)準(zhǔn)以太坊錢包至少應(yīng)該讓用戶可以查看并編輯其 dApp 代幣授權(quán)可用額。代幣授權(quán)檢查程序等工具很方便,但不是每個(gè)用戶都知道它們。
原文鏈接:
https://cryptotesters.com/blog/token-allowances
作者: Emanuel Coen
翻譯&校對: