HashKey Capital:以太坊、Solana、Cosmos帳戶抽象解決方案異同研究

作者:Zeqing Guo & Jinming Neo,HashKey Capital;翻譯:金色財經xiaozou

1.為什麼我們需要帳戶抽象(AA)?

目前區塊鏈領域還存在著許多未解決的問題。其中,使用區塊鏈的難度,也就是與區塊鏈互動的使用者體驗(UX),肯定是公眾吐槽最多的領域。

例如,很多人認為使用金鑰比使用電子郵件管理帳戶更複雜,金鑰管理困難而且並不安全,每次轉帳(例如USDC)還需要使用原生代幣(例如Ether和Sol),這是反直覺的。

在此背景下,越來越多的人將注意力轉向帳戶抽象領域,以改善鏈上互動的使用者體驗,促進大規模採用。

在探索過程中,以太坊提出了ERC-4337、EIP-3074、EIP-7702等帳戶抽象解決方案。其他L1(如Solana)具有支援協定級帳戶抽象的功能(如程式派生位址PDA), Cosmos也有類似的設計(如x/authz和費用抽像模組Fee Abstraction Module)。本文,我們將介紹並比較上述解決方案,以了解不同解決方案設計的微妙之處,並示範不同解決方案的優缺點權衡和注意事項。

2、背景介紹

(1)EOA和合約帳戶

外部帳戶(EOS)和合約帳戶是以太坊白皮書中定義的兩種帳戶類型。 EOA帳戶由私鑰控制,用戶可以透過私鑰簽署各種交易,控制帳戶中的資產。合約帳戶由合約帳戶本身的程式碼控制,其他帳戶可以透過呼叫合約帳戶的程式碼讓合約帳戶執行特定邏輯。

(2)帳戶抽象

抽象帳戶的概念可以追溯到2016年。帳戶抽象化是基於以太坊的當前兩類帳戶構建,即EOA帳戶和合約帳戶。這將透過以下方式改善以太坊用戶的互動體驗:

· 允許使用者使用多重簽名,如Schnorr、BLS、後量子簽名等;

· 允許用戶使用ERC20代幣或自訂支付邏輯支付gas費;

· 允許使用者使用電子郵件、社群媒體等檢索他們的帳號;

· 允許使用者以細粒度的權限管理其帳戶中的資金,例如設定每日提款限額;

· 允許在一個原子交易中執行多個鏈上操作。例如,使用者可以使用一個簽名完成DEX交易中的批准和兌換操作。

(3)以太坊路線圖

以太坊路線圖強調了以太坊未來的升級路線。目前,以太坊社群的大多數研究都圍繞著以太坊路線圖。帳戶抽像是其中必不可少的一部分:

以太坊社群希望以ERC-4337為基礎,透過EIP-3074或EIP-7702等提案,在協議內實現帳戶抽象解決方案,最終實現Endgame帳戶抽象化。

儘管增強了用戶體驗,但帳戶抽象終局對以太坊的反量子計算也至關重要,因為當前EOA帳戶使用的ECDSA演算法在量子計算時代並不安全。採用帳戶抽象化來支援後量子簽名,保護使用者帳戶免受量子運算帶來的不斷演變的威脅。

3、EIP-3074和ERC-4337

要理解帳戶抽象帳戶,我們需要理解EOA是如何運作的。下圖展示了鏈上最常見的代幣買賣過程:

一般來說,用戶在買賣代幣時需要發出兩個交易:首先授權Uniswap轉移他們的USDC進行交換,然後發送另一個交易請求Uniswap執行該操作。 Uniswap轉移用戶帳戶的USDC,並根據當前價格向用戶發送相應數量的ETH。

ERC-4337將上述兩個交易合併為一個交易:

從上圖可以看出,使用者需要兩次簽名才能授權bundler操作使用者在4337帳戶中的資產,而該帳戶與使用者的EOA帳戶不同。在bundler獲得授權後,將授權的內容合併到一個交易包中,並發布該交易包完成交易。同時,如果用戶沒有用於支付gas費的以太坊代幣,也可以引入paymaster角色,讓paymaster來支付gas費,並從用戶那裡獲得等值的ERC20代幣。

EIP-3074和ERC-4337有一些相似之處,但EIP-3074的實現是在以太坊協議內:

在ERC-4337中,我們授權bundler透過簽名來處理我們鏈上智慧合約錢包中的資產。在EIP-3074中,則授權bundler透過簽名直接處理我們EOA錢包中的資產。為了做到這一點,以太坊社群需要向以太坊協議添加兩個新的操作碼:AUTH和AUTHCALL。

AUTH用於驗證bundler處理使用者EOA帳戶資產的行為是否已授權,AUTHCALL用於「欺騙」使用者互動的智慧合約(在我們的範例中為USDC和Uniswap),使智慧合約認為交易來自使用者的EOA帳戶。這樣做的好處是,Uniswap和USDC的維護人員不需要升級部署的智慧合約,同時EOA帳戶還可以擁有帳戶抽象的功能。

(1)EIP-3074與ERC-4337的比較

在以太坊社群中,EIP通常指的是需要以太坊升級來支援的提案,而ERC指的是不需要以太坊升級就可以支援的規格。

因此,從兩種帳戶抽象方案的命名可以看出,ERC-4337比EIP-3074更容易實現,因為ERC-4337不需要以太坊網路進行硬分叉。這也是ERC-4337已經發布並越來越多地應用於polygon和base的原因之一,但EIP-3074剛剛被第183屆以太坊全核心開發者執行會議(ACDE)接受。

此外,ERC-4337要求用戶將其目前帳戶移轉到新的合約帳戶,並要求DApp支援EIP-1271的功能。 EIP-3074則不需要這些額外的支援。這是ERC-4337採用率低的主要原因。同時,ERC-4337不能在不引入一個中間多呼叫合約的情況下支援一個簽章授權多個鏈上操作,而EIP-3074卻可以,這也導致了ERC-4337的限制。

然而,EIP-3074也有自己的問題。最重要的問題就是操作碼AUTH的權限太高,可能會讓攻擊者完全控制使用者的EOA帳號。畢竟,只要駭客欺騙了你進行AUTH簽名,就可以處理你的EOA錢包中的資產。考慮到目前網路釣魚攻擊十分猖獗,而且大多數攻擊都是透過欺騙用戶簽名,一旦實施了EIP-3074,這將成為一個更加嚴重的問題。

對此,EIP-3074的作者之一lightclient提出了一種在錢包層級攔截惡意簽名的緩解方法。 ERC-4337沒有這個問題,雖然駭客仍然可以欺騙使用者簽署惡意UserOps。這是因為UserOp很難取得使用者帳戶中所有資產的處置權限。在撰寫本文時,ACDE的開發人員已一致同意從Pectra Devnet 0中刪除EIP-3704,並在接下來的Pectra Devnet 1中包含EIP-7702。

(2)EIP-7702有什麼變化?

EIP-7702試圖整合EIP-3074和ERC-4337的優點,走一條中間道路。使用者將所簽署的操作傳送給bundler。當bundler將交易發送到鏈上時,用戶的EOA帳戶將暫時成為像4337帳戶一樣的智能合約帳戶。接下來,類似於EIP-3074中的AUTH進程,智慧合約帳戶將驗證使用者授權的bundler操作。然後,像AUTHCALL一樣,執行使用者授權的操作。執行交易後,使用者帳戶將回溯到普通的EOA帳戶。

EIP-7702的優點如下:

· 繼承了EIP-3074的所有優點:不要求使用者從EOA帳戶切換到有新位址的智慧合約帳戶,可以在一個原子交易中執行多個操作;

· ERC-4337的智慧合約帳戶代碼和基礎架構可以再次使用;

· 以ERC-4337為代表的智慧合約帳戶抽象化和以EIP-3074為代表的EOA帳戶抽象解決方案可以合併,防止以太坊分裂為兩個不同的帳戶抽象系統,為以太坊路線圖中的抽象帳戶終局鋪路;

· AUTH和AUTHCALL這兩個操作碼不會被添加到以太坊的EVM中:鑑於以太坊路線圖,未來EOA帳戶將轉換為帳戶抽象帳戶,屆時這兩個操作碼將變為冗餘。

除此之外,EIP-7702也繼承了EIP-3074的所有安全風險。

社群決定在2025年的Pectra升級中包含EIP-7702。如果實現,將大幅改變以太坊生態系統,並逐漸改善目前的ERC-4337版本的帳戶抽象基礎設施。

4、Solana的程序派生地址(PDA)

(1)Solana的帳戶抽象

Solana的帳戶抽象化類似於以太坊的ERC-4337。它們是從原始帳戶派生的帳戶(類似於EOA帳戶),類似於4337合約帳戶。在理解Solana的帳戶抽象化之前,有必要先來了解Solana所使用的帳戶模型。

從廣義上講,帳戶可以分為可以執行程式碼的可執行帳戶和不能執行程式碼的不可執行帳戶。進一步來看,Solana上有三種類型的帳戶:原生程式(Native Program)、程式帳戶(Program Account)和資料帳戶(Data Account)。

原生程式是驗證器實作的一部分,為Solana網路提供核心功能,例如建立新的資料帳戶和自訂程式。程式帳戶是包含可執行程式碼的自訂程式。資料帳戶可以按照其所有者程式帳戶的定義儲存資料並管理程式狀態。

這個帳戶模型使程式帳戶能夠建立並管理特定的帳戶,為開發人員提供了定義自訂規則和邏輯來管理帳戶的能力。在此帳戶模型的支援下,程式派生位址(PDA)(一種資料帳戶)擴展了Solana上帳戶抽像功能的可能性,從透過多重簽署錢包和雙因素認證增強用戶安全性到啟用社交恢復機制等。

(2)程序派生地址

對於上下文,所有帳戶都位於Ed25519曲線上,並具有公私密鑰對。 PDA位於Ed25519曲線之外,是一個確定性派生的32位元組字串,看起來像公鑰,但沒有對應的私鑰。 PDA允許開發人員創建自訂規則和交易簽名機制,允許PDA的程式帳戶所有者代表PDA自主執行交易,完全由Solana網路認可和支援。

(3)PDA與帳戶抽象

現在我們了解了PDA是如何派生的,你可能還想知道這些概念是如何與帳戶抽象聯繫在一起的。帳戶抽像是透過一個名為跨程式呼叫(CPI)的函數的效能在底層實現的。

CPI是一種函數,它使一個程式能夠呼叫另一個程式的指令,從而實現Solana程式的可組合性。當程式透過invoke_signed啟動CPI時,程式就能夠代表派生PDA進行簽章。

為了驗證PDA相關交易的合法性,Solana runtime(執行時間)在內部使用呼叫程式的signers_seeds和program_id呼叫create_program_address。如果發現有效的PDA,runtime將把PDA與呼叫程式關聯起來,並將該程式識別為授權的簽署者。

目前,Squads正在開發一個基於PDA的Solana帳戶抽象解決方案。然而,Squads提供的產品目前更類似於Gnosis Safe的智慧合約帳戶解決方案,尚未完全開發其帳戶抽像功能。

(4)PDA的優點

· 自動執行智慧合約:PDA支援更複雜的智慧合約設計,可透過跨程式呼叫代表使用者自主執行多個操作。

· 增強的使用者體驗:使用者不需要管理多個交易或面對技術複雜性。

· 增強的安全性和靈活性:沒有私鑰,這降低了金鑰外洩的風險。 PDA可以用於多簽錢包或其他靈活的治理模型,這些模型可以減少單點風險,並且對於管理大型共享資源的組織尤其好用。

(5)PDA的局限性

PDA雖然有助於為帳戶抽像功能奠定基礎,但與金鑰對帳戶相比,實作起來可能比較複雜。

與ERC-4337一樣,它要求使用者執行帳戶遷移到新帳戶,這可能會抑製Solana帳戶抽象化的採用率。

5.Cosmos上的帳戶抽象化(Authz和Fee Grant)

(1)Cosmos x/authz

隨著帳戶抽象越來越多地佔據了開發人員的注意力,authz(核心Cosmos SDK的一部分)推出,允許一個帳戶通過授權來代表另一個帳戶執行某些操作,這與EIP-3074和EIP- 7702類似。

Authz有幾種預定義授權類型,這些授權類型將某些操作(如質押)的效能委託給被授權者,從而增強了使用者體驗。

透過authz,可以給予3種類型的授權:

· GenericAuthorization:此授權給予被授權者代表授權者執行訊息的無限制權限。

· SendAuthorization:與ERC20中的批准一樣,該授權旨在為被授權者提供一個積極的支出限制,該限制定義可以代表授權者花費的最大金額。

· StakeAuthorization:此授權允許被授權者管理質押操作,例如代表授權者委託質押、撤銷委託或重新委託。

授權由授權者的位址位元組、被授權者的位址位元組和授權類型組成。也可以定義時間段,限制特定時間段內的權限。在每個區塊末端,該網路將透過一個名為pruning的過程刪除過期授權。

了解營運框架

Authz可用於為各種操作提供授權,但為了簡單起見,我們將研究Authz如何運作以啟用通用一般的投票交易。

· 在執行任何授權之前實作授權介面。這個階段也會定義訊息類型,在本例中為MsgVote。在這裡,我們看到了Alice對治理投票操作的授予。

· Bob產生一個未簽名的投票交易。

· Bob產生一個已簽署且已執行的來自被授權人的投票交易。交易完成,過期交易將被刪除。

authz帶來的好處有什麼?

· 操作安全性:驗證者和其他使用者可以向獨立帳戶授權,以便對治理建議進行投票或執行某些操作,從而增強帳戶安全性並減少安全負擔。

· 簡化操作:交易可以在需要存取驗證者金鑰的情況下執行,多簽錢包交易也可以透過使用單一交易為被授權帳戶進行Authz授權來簡化操作。

· 無需遷移:與EIP-3074和EIP-7702類似,授權操作在使用者的原始帳戶中進行。使用者不需要將其資產從原始帳戶轉移到新帳戶來啟用帳戶抽象化。

· DAO操作效率與彈性:可以將一部分執行權賦予各DAO成員以執行特定操作。

· 質押獎勵合成:Authz促進了再質押和同等服務的使用,以自動合成質押獎勵。

Authz的限制與風險:

若要注意透過Authz授權的交易類型。惡意授權可以執行可能對使用者有害的各種類型的授權。

· GenericAuthorization:授予不受限制的權限,以代表授權者執行所多重簽名。除非完全了解要簽署的內容,否則強烈建議避免簽署此類授權類型。有些錢包在簽署Authz交易時也可能不提供警告。

· SendAuthorization:允許被授權者發送被授權者可以花費的最大數量代幣,如果授權者沒有指定具體額度的話。驗證AllowList也很重要,它指定了可以接收被授權者所發送代幣的具體地址。

(2)Fee Grant Module(費用授權模組)

使用者體驗存在的另一個障礙是,區塊鏈使用者需要持有各種原生代幣,才能與不同的生態系統互動。這損害了整體用戶體驗,特別是對於那些第一次接觸到Cosmos生態系統中存在的無數鏈的非加密原生用戶來說更是如此。

然而,隨著Fee Grant模組的整合,這個問題已經有所突破。與在以太坊上實現帳戶抽象的paymaster合約類似,Cosmos上的Fee Grant模組允許授權者向被授權者授予費用津貼,支付部分或全部交易費。資金仍在授權者的控制之下,可以隨時撤銷授權津貼。

費用授權分類

費用津貼可分為兩類:BasicAllowance(基本津貼)和PeriodicAllowance(定期津貼)。

BasicAllowance允許被授權者使用授權者帳戶中的費用,直到達到支出限額或到期時間,然後授權在狀態中終止。要注意的是,BasicAllowance實行的是一次性費用授權。如果支出限額和時間設定為空,則費用津貼沒有有效期限和消費上限。

PeriodicAllowance允許在每個指定的時間段後定期更新費用授權。 Period_spend_limit指定在某個時間段內可以花費的最大代幣數量。 Period_reset追蹤下一個時段的時間,period_can_spend追蹤新時段開始前剩餘的代幣數量。

了解營運框架

使用AllowedMsgAllowance為指定的訊息類型建立一個Allowance津貼。津貼可以是BasicAllowance基本津貼或PeriodicAllowance定期津貼。如果設定了expiration到期時間,FeeAllowance將以expiration前綴在狀態中排隊,Endblocker將查驗FeeAllowanceQueue狀態檢查到期授權,並刪除任何發現的到期授權。除了MsgGrantAllowance之外,還可以使用MsgRevokeAllowance來撤銷費用津貼。

總而言之,Authz和Fee Grant模組解鎖了各種各樣的創新用例,這些用例最終將在Cosmos生態系統上建立更好的用戶體驗。

6、結語

截至2024年5月27日的帳戶抽象預估資料如下:

隨著現貨BTC ETF和ETH ETF獲得批准,機構和零售需求大幅增加,預計將迎來新一波希望接觸加密產業的用戶的加入。隨著各協議和dApp尋求創建無縫體驗來擴展其社群規模,帳號抽象將成為今年的重要敘事。

Total
0
Shares
Related Posts