EIP-3074 簽名中的呼叫者欄位非常重要,因為一個不良的呼叫者可能會竊取你的資金。這是真實的!EIP-3074 的聯合作者在這裡!但在事情變得更加失控之前,讓我先暫時平息一下這個擔憂。
首先,目前沒有任何錢包支援簽署無字首資料,也就是說目前沒有任何錢包支援 EIP-3074。無論你瀏覽多少個控制面板或開啟多少個高階功能,現在都無法簽署 EIP-3074 的訊息。
你在簽署「登入」dapp 的訊息時使用的是基於 EIP-191 的完全不同於 EIP-3074 的標準。這會將以下資料新增到你簽名的訊息中:
這就是為什麼不可能欺騙登入 dapp 的人來實際簽署有效的以太坊交易。交易以單位元組值作為字首。更多資訊參見:https://github.com/ethereum/execution-specs/tree/master/lists/signature-types
EIP-3074 計劃使用字首 0x04。這將消除它與以太坊中所有其他型別的可簽名資料的歧義。錢包必須主動選擇允許使用者簽署這些訊息。
基於錢包整合 EIP-3074 的具體方式,可能會造成使用者更容易被利用的情況。要理解這一點,我們需要確保自己理解 EIP-3074 簽名的工作原理。
構建簽名的身份驗證訊息具有以下欄位。重要的是,它包括一個呼叫者地址。這是 AUTH 認為簽名有效的唯一地址。
對於要耗盡餘額的帳戶,必須同時滿足以下兩點:錢包需要允許使用者簽名到任何呼叫者地址(invoker address),使用者必須沒有驗證呼叫者(invoker)是否可信。這意味著,使用者執行了其中任何一條都不會有問題。
我們希望錢包軟體明白:EIP-3074 呼叫者(invoker)更類似於錢包軟體程式碼的擴展套件而不是合約。錢包不允許使用者自由地執行任意程式碼並訪問其私鑰;同樣,他們不應該允許使用者任意委託(delegate)他們的以太坊帳戶。
因此,如果錢包軟體不安全地整合 EIP-3074,並且使用者不驗證他們正在互動的呼叫者,則可能會委託給惡意呼叫者。但是,依然可以通過從 EOA 傳送單個 tx 來撤消。這將撤銷所有「正在進行的」AUTH 簽名。
至少,錢包軟體應該讓簽署 EIP-3074 訊息成為一件大事,就像匯出你的私鑰級別的大事一樣。假設錢包安全地集成了 3074,帳戶仍然有可能被盜。這是批量交易的基本屬性。它允許你輕鬆傳送多個操作,就像它允許攻擊者誘騙你將一批資產傳送到他們控制的地址一樣。
錢包軟體必須清楚地顯示你正在簽名的每個操作。這樣,很容易注意到「我只打算進行一筆交易,但這個簽名請求讓我還進行了十幾次交易」。如果通過盲簽名進行批處理,則無法檢測到這一點。
是的,EIP-3074 非常信任錢包。但是,我們已經用我們的私鑰安全地信任他們了!沒有更高層次的信任。
可以安全地整合和使用 EIP-3074。如果任何錢包對如何執行此操作有疑問,請隨時與我們聯絡。作為 EIP-3074 的作者,我們目前正在考慮如何才能最好地幫助該標準的下一階段發展。
在過去的幾年裡,我們花了很多時間來開發關於如何使用和濫用它的假設場景。我們很高興這些想法開始投入生產。但我們也認識到這是最困難的部分。
總結起來,EIP-3074 之後,單個錯誤簽名會耗盡你的以太坊帳戶餘額的擔憂目前錢包不支援 EIP-3074 型別的簽名,該簽名遵循新的格式。EIP-3074 簽名中的呼叫者欄位非常重要,一個不良的呼叫者可能會竊取你的資金。錢包需要確保呼叫者地址是可信的,這類似於錢包目前如何防止執行任意程式碼。EIP-3074 中的批量交易仍然會開啟一個世界,惡意行為者可以欺騙你簽署轉移資產的交易。錢包需要清楚地顯示當簽署 EIP-3074 訊息時會發生什麼。是的,我們對錢包有很高的信任,但使用者已經將私鑰託付給它們,這是最高級別的信任。
EIP-3074 與 EIP-4337
對於帳戶抽象提供者來說,EIP-3074 是一個非常好的更新,因為它對我們的客戶非常有益。
EIP-4337 是將新使用者引入加密領域的最佳方式。
EIP-3074 是將現有使用者引入智慧帳戶的最佳方式。