以太坊上的帳戶控制傳統上相當僵化。外部擁有帳戶(EOA)簡單且廣泛使用,但功能有限。智能合約帳戶(SCA)提供了更大的靈活性,但直到最近,它們仍無法獨立運作。你仍然需要一個 EOA 來發起並支付每筆交易的費用。
這一切隨著 ERC-4337 的出現而改變,SCA 現在可以原生支援 gas 贊助、交易批次處理(將多筆交易合併為一筆)、session key 以及鏈抽象等功能,從而帶來更好的安全性、靈活性與使用者控制權。
儘管如此,EOA 並未消失,而且有充分的理由:並非每位使用者都需要一個支援任意驗證邏輯的帳戶。現在就切換到 SCA 的意義何在?
但我們要如何確保,當使用者準備好進行切換——或甚至只是暫時使用一個或多個 ERC-4337 帳戶功能時——他們不必被迫從頭建立一種新的帳戶類型?我們要如何讓 EOA 能夠針對特定交易使用 SCA 的功能,同時又不必放棄熟悉的設定?
這正是 EIP-7702(Set-EOA-account-code)發揮作用的地方。
作為即將到來的 Pectra 升級的一部分,EIP-7702 將允許 EOA 透過將控制權委託給直接從其地址執行的智能合約程式碼,暫時表現得像 SCA 一樣。這意味著使用者無需遷移到新帳戶即可享受這些進階功能。它在推動以太坊向前發展的同時,確保了向後相容性。
儘管有這些改進,要完全實現類似 Web2 的體驗,仍有一個重要的使用者體驗環節需要解鎖。那就是細粒度且靈活的權限管理——使用者可以輕鬆地將代表自己執行特定操作的權力分享給其他使用者。這以受控的方式進行,設有嚴格的防護機制,並能在需要時撤銷權限。
這正是 Delegation Toolkit 所要解決的挑戰。但在深入了解它是什麼以及如何運作之前,讓我們先仔細看看推動以太坊帳戶使用者體驗下一階段的兩個 ERC。
ERC 7710:智能合約委託
ERC-7710 是一項旨在標準化智能合約帳戶如何將特定權限委託給其他以太坊帳戶的提案。它引入了一個通用介面,讓委託方能夠以清晰、可執行的規則向受委託方授予權限。
透過 ERC-7710,開發者可以建立系統,讓一個帳戶在特定條件下安全地允許另一個帳戶代表其行動,例如消費限額、時間限制或特定任務的權限。這一切都透過安全且可預測的委託流程來處理。
那麼,在這個脈絡下,「委託」是什麼意思?
從高層次來看,這是關於將帳戶所有權與帳戶執行權分離。委託方仍然擁有資產或邏輯,但可以暫時或永久地將特定權力移交給其他人,而無需放棄完整控制權。
從網路角度來看,ERC-7710 為帳戶之間傳遞權限的方式帶來了清晰性與可組合性。不再需要每個應用程式各自推出自己的委託邏輯,我們現在有了一個合約和工具可以共同建構的共享基礎。
ERC 7715:從錢包授予權限
ERC-7715 是一項旨在簡化 dapp 向使用者錢包請求權限方式的提案。它引入了一種權限模型,允許 dapp 請求對使用者帳戶進行明確範圍限定的預先批准存取,而無需在每次互動時重複確認。
目前,典型的互動流程相當繁瑣:dapp 請求發送交易或與合約互動,錢包每次都會提示使用者進行批准。沒有辦法指定限制、持續時間或縮小 dapp 可以執行的操作範圍,也沒有標準方式讓使用者日後查看或撤銷這些批准。
ERC-7715 改變了這一切。它引入了一個新方法 wallet_grantPermissions,讓 dapp 可以提前請求特定功能。例如,它可能請求在接下來一小時內消費最多 10 USDC 的權限,或在接下來幾個 session 內與單一智能合約互動。使用者可以預先審查並以完全清晰的方式批准或拒絕。
從 dapp 的角度來看,這使得新手引導更加順暢,並允許基於 session 或自動化的體驗,而不會不斷打擾使用者。對於錢包而言,它引入了一個清晰、可稽核的結構來處理權限並管理已授予的內容。對於使用者而言,它提供了更好的可見性、更多的控制權,以及更少惱人的彈出視窗——這一切都不會犧牲安全性。
那麼,開發者可以用這些標準建構什麼?
以下是結合 ERC-7710 和 ERC-7715 可以解鎖的一些功能:
透過使用 ERC-7710 將固定額度委託給更常用的錢包,從安全錢包設定每日消費限額,讓大部分資金安全地保持離線狀態。
透過使用預先範圍限定的委託自動授予有限權限,讓使用者無需事先設定錢包或進行交易批准即可執行鑄造或領取獎勵等操作,從而簡化新手引導流程。
透過 ERC-7710 分配有限的執行權限,讓 AI 代理代表你進行交易,並透過 ERC-7715 讓你輕鬆透過錢包批准這些權限。
透過利用 ERC-7710 委託將贊助權分配給 SCA,讓 dapp 代付使用者的 gas 費用,允許特定交易在使用者無需持有 ETH 的情況下完成。
透過委託權限給一個代表你呼叫 approve(0) 的輔助合約,安全地撤銷代幣授權,使用 ERC-7710 嚴格限定其可執行的操作,並確保與任何標準 ERC-20 代幣的相容性。
以及更多其他功能。
定義 Delegation Toolkit
描述 Delegation Toolkit 最簡單的方式,是將其視為一套包含兩個主要套件的工具組:
Delegation Core SDK — 一個讓開發者能夠建立符合 ERC-4337 規範的智能合約帳戶(委託方帳戶)的套件,可充分受益於 ERC-4337 帳戶抽象所引入的所有功能。
Delegation Framework — 一個允許智能合約帳戶透過 ERC-7710 標準將權限委託給其他以太坊帳戶的系統,並允許網站、dapp 或最終任何事物透過 ERC-7715 向你的帳戶請求權限(即將推出)。
因此,簡單來說,Delegation Toolkit 使建構支援 ERC-4337 智能合約帳戶(SCA)的 dapp 成為可能,可將權限委託給其他 SCA 或 EOA,並讓 dapp 能夠請求這些權限——無論是來自智能帳戶,還是在 Pectra 升級後,甚至是來自 EOA。
如果你熟悉智能合約帳戶的運作方式,你已經知道 Delegation Core VIEM 套件的預期功能。但如果不熟悉,歡迎查閱官方文件以深入了解。在本文的其餘部分,我們將聚焦於 Delegation Framework 本身,並重點介紹使其如此強大的一些關鍵原則。
鏈下委託
委託不需要存在於鏈上才有效。一旦帳戶 A 為帳戶 B 簽署了委託,它可以儲存在任何地方——IPFS、瀏覽器快取、雲端儲存,甚至本地下載——因為它在密碼學上是安全的,且只能由預定的受委託方使用。這使整個系統更具可擴展性和靈活性。
例如,B 可以在需要時取得已簽署的委託,並在交易中使用它,而無需任何鏈上儲存或預付 gas 費用。
可撤銷的權限
委託並非永久有效。原始委託方(例如帳戶 A)可以撤銷其已發出的任何有效委託,即使該委託已透過遞移委託向下傳遞(請參閱下方關於遞移或鏈式委託的章節)。一旦撤銷,委託管理器將拒絕任何兌換它的嘗試,包括依賴它的任何子委託。這對安全性至關重要。
如果帳戶 A 懷疑遭到入侵或想要更新權限,它可以立即切斷存取,使整個信任鏈失效。這就像能夠隨時拔掉插頭,而無需追蹤所有相關人員。
範圍限定的委託
使用 Delegation Toolkit 時,委託通常會限定給特定的受委託方。這意味著如果帳戶 A 向帳戶 B 簽署委託,只有 B 可以兌換它。即使其他人獲得了已簽署的委託,對他們來說也毫無用處,因為它在密碼學上與 B 綁定。
然而,也支援開放委託。這些是不預先指定受委託方的委託,任何帳戶都可以兌換。當你尚不知道受委託方是誰時,開放委託很有用,但應謹慎使用以避免濫用。你可以透過將 delegate 欄位設定為特殊常數 ANY_BENEFICIARY(0x0000000000000000000000000000000000000a11)來建立一個開放委託。
如果帳戶 B 之後想將範圍限定的權限傳遞給帳戶 C,它必須明確地建立一個從 B 到 C 的新委託。這確保了即使在使用開放或遞移流程時,權限邊界仍然清晰且有意為之。
附加條件(Caveats)
Caveat 是定義委託如何被使用的規則。可以將它們視為委託方可以附加到委託上的自訂條件。例如,如果帳戶 A 委託給帳戶 B,它可能包含一個 caveat,規定 B 在接下來 24 小時內只能轉移最多 1 ETH,或只能與特定合約互動。
Caveat 在執行時使用特殊的 caveat enforcer 合約來強制執行,這些合約在任何操作執行之前會檢查規則是否被遵守。因此,即使 B 有權行動,它仍然在 A 設定的明確範圍內運作。請參閱此處了解支援的 caveat 完整列表,或了解如何建立你自己的自訂 caveat。
遞移或鏈式委託
Delegation Framework 更強大的功能之一是委託不必止步於單次移交。透過遞移委託,接收到權限的帳戶(例如帳戶 B)可以將全部或部分權限再委託給另一個帳戶,形成一條源自單一帳戶的委託鏈。
鏈中的每個環節都經過密碼學簽署,並以其自身的 caveat 限定範圍,這意味著權限可以在每個層級被縮小或重新定義。換句話說,這些子委託可以是原始委託的子集,具有更嚴格的限制或有限的功能。
重要的是,原始委託方仍然保持完整控制權,可以隨時撤銷初始委託,這將自動使鏈中所有下游委託失效,形成一個靈活而安全的信任鏈,非常適合 DAO 和共享錢包等複雜的權限設定。
下一步是什麼?
Delegation Toolkit 為你提供了工具,讓你能夠為 dapp 帶來更安全、更智能、更靈活的權限系統。無論你是希望實現委託消費、gas 贊助、自動化工作流程,還是無縫的新手引導,現在都可以實現,而無需重新發明輪子。
在接下來的文章中,我們將進入實作環節,從建構「邀請朋友」功能的教學開始——這是委託實際應用的一個實用範例。請持續關注本系列的後續內容,我們將介紹更多你今天就可以實作的功能。
如果你對進一步探索這些想法感到興奮,請留意即將到來的四月 Gator Hackathon,屆時你將有機會與其他開發者一起使用 Delegation Toolkit 進行建構。