本文旨在通過將帳戶抽象的過去、現在和未來置於上下文中來幫助您理解以太坊的帳戶抽象,包括其含義和重要性。本文源自 MetaMask 的 Emmanuel Awosika 所著文章《Account Abstraction: Past, Present, Future》,由白話區塊鏈整理、編譯及撰稿。
(前情提要:V神再捧「以太坊帳戶抽象」:讓加密錢包像Email一樣簡單)
(背景補充:以太坊ERC-4337被低估了?淺談「帳戶抽象」的4大超棒功能)
即使熊市肆虐,也很少有人懷疑加密貨幣將繼續存在,例如,像 MetaMask 這樣的錢包已經擁有數百萬使用者。但是,問題是:「我們如何才能將下一個 10 億使用者引入 Web3?」
根據你問的人不同,答案也會有所不同。但每個人都同意一些觀點,特別是需要改善使用者與區塊鏈應用程式互動的體驗。如果不讓 Web3 變得更加使用者友好,人們就沒有動力從他們每天使用的 Web2 應用程式切換過來。
「帳戶抽象」 是一項旨在改善使用者與以太坊互動的提案,該提案越來越成為加密社群中許多討論的主題。然而,您可能會想:「帳戶抽象到底是什麼?我為什麼要關心它?」
本文旨在通過將帳戶抽象的過去、現在和未來置於上下文中來幫助您理解帳戶抽象。
本文關鍵要點:
1. 可程式設計的自我託管帳戶(「智慧帳戶」)可以減少新使用者加入 Web3 生態系統的摩擦。然而,以太坊設計所施加的限制阻礙了智慧帳戶的廣泛採用和使用。
2. 帳戶抽象引入了重大變化,為廣泛採用去信任、抗審查的智慧帳戶鋪平了道路。我們正在考慮實施帳戶抽象的不同方法,每種方法都具有獨特的優點和權衡。
3. MetaMask 通過其無需許可的創新平臺: MetaMask Snaps 支援採用帳戶抽象。藉助 MetaMask Snap,開發人員可以擴充 MetaMask,為世界各地的加密使用者帶來帳戶抽象的好處。
一、什麼是帳戶抽象?
與 Web3 中的任何其他新概念一樣,帳戶抽象可能很難定義。儘管如此,我們可以通過首先解開與以太坊中帳戶抽象討論相關的各種術語來更好地理解它:
1. 抽象 (n):電腦科學中的一個(相當複雜的)術語,大致意味著隱藏有關系統或應用程式的資訊,以便在對後臺執行的程式瞭解較少的情況下使用它。也被定義為 「通過提供易於操作的介面來隱藏系統複雜性的過程。」
2. 帳戶 (n):使用者在區塊鏈上的代表,可以傳送或接收交易並與其他鏈上帳戶互動。以太坊有兩種型別的帳戶:外部擁有帳戶(EOA)和合約帳戶(又名 「智能合約」)。
2a. 外部擁有帳戶 (EOA):使用錢包軟體(如 MetaMask)生成的以太坊帳戶,並由一對加密的公鑰和私鑰進行管理。EOA 是 「活躍的」(它可以發起交易併為 EVM 的執行支付 Gas 費)。然而,它僅限於執行基本操作,例如傳送以太幣或與合約互動。
2b. 智能合約帳戶:以太坊帳戶部署為智能合約 ,並由程式碼(而不是私鑰)編寫的邏輯控制。合約帳戶是 「被動」 的:它只能傳送交易來響應來自 EOA 的交易,並且不能支付 Gas 費。然而,它是可程式設計的,並且可以根據儲存在地址處的程式碼執行任意邏輯。
3. 錢包 (n):用於管理以太坊帳戶中資金的介面 – 錢包的運作方式取決於它所連結的帳戶型別。像 MetaMask 這樣基於 EOA 的錢包需要私鑰來授權交易。同時,智慧合約錢包連結到合約帳戶,並且可以使用任意邏輯來授權交易(例如使用多重簽名方案 )。
完成這些定義後,我們現在可以定義帳戶抽象。
二、定義帳戶抽象
帳戶抽象是一項旨在提高以太坊帳戶管理和行為靈活性的提議。我們通過引入帳戶合約來實現這一目標:定義和管理使用者的以太坊帳戶(現在稱為智慧帳戶)的專用智慧合約。
通過帳戶抽象,您可以使用智慧合約錢包享受對資金的可程式設計訪問,而不是僅僅依賴私鑰來保證安全。
那麼,「抽象」 如何融入這一切呢?
從網路層面來看,「帳戶抽象」 意味著帳戶型別的細節對於以太坊協議來說是不可見的。每個帳戶(包括自我託管帳戶)只是一個智慧合約,使用者可以自由決定個人帳戶的管理和運營方式。
從使用者層面來看,「帳戶抽象」 意味著與以太坊帳戶互動的某些技術細節隱藏在更高級別的介面後面。這改進了錢包設計並顯著降低了使用 Web3 應用程式的複雜性。
有必要澄清的是,因為圍繞帳戶抽象的混亂來自於不知道(a)正在抽象什麼以及(b)抽象發生在哪裡。帳戶不一定是從使用者中抽象出來的(即使它們是從協議中抽象出來的),但需要有一個用於接收資金的錢包地址和一個簽名金鑰,以確保只有持有者可以花費這些資金。
從持有者角度來看,帳戶抽象更像是使用智慧帳戶來抽象一些與區塊鏈互動的細節。就上下文而言,從首次使用者的角度來看,與 dapp 互動是這樣的:
通過帳戶抽象,錢包開發人員可以建立在後臺處理這些流程的系統,並簡化使用 Web3 的體驗(簡單說就是錢包變得 「隱形」)。一些用例(我們將在稍後擴充)包括:消除您儲存助記詞 / 私鑰、為交易支付 Gas 費用、甚至自行設定鏈上帳戶的需要。
延伸閱讀:V神大推的「以太坊帳戶抽象」是什麼? ERC-4337 實用案例說明
三、帳戶抽象的好處
如前所述,帳戶抽象消除了與使用 Web3 錢包和與 dapp 互動相關的大部分摩擦。這使得 Web3 更接近 Web2 的理想,即所有使用者(無論是新手還是經驗豐富的使用者)都可以從相同程度的靈活性、安全性和易用性中受益。
特別是,帳戶抽象對自我託管的未來具有巨大影響。借助帳戶合約提供的功能,使用 Web3 錢包就像使用銀行帳戶或應用程式一樣,而無需信任銀行。
在後續部分中,我們將涉及帳戶抽象的不同維度,並討論它們如何改善使用以太坊的體驗。具體來說,我們將討論簽名抽象、費用抽象和隨機數抽象。
四、帳戶抽象的不同維度
1. 簽名抽象
如今,來自 EOA 的交易必須具有由帳戶私鑰使用 curve 曲線數位簽名演算法 (ECDSA) 生成的簽名才有效。這為大多數 EOA 提供了一個簡單的安全模型:如果私鑰仍由使用者持有,資金就是安全的。但它也有幾個侷限性:
1)眾所周知,EOA 很難保護,特別是因為惡意行為者總是在不斷發展新的方式來破壞私鑰。在 MetaMask,我們親眼目睹了網路釣魚、社會工程、欺騙、惡意軟體注入和類似攻擊給 Web3 中的使用者安全帶來的挑戰。
2)自我監護可能感覺像是一項極限運動。與您的常規銀行帳戶不同,如果種子短語 / 私鑰丟失,您將無法 「恢復」 EOA 錢包。這給新使用者帶來了挑戰,他們必須應對在沒有任何追索權的情況下完全失去以太坊帳戶中持有資產的影響。
簽名抽象通過刪除 ECDSA 簽名作為非託管帳戶的預設授權機制來解決這些問題。相反,使用者可以定義自定義規則來授權錢包發起交易。或者,換句話說,您可以決定交易有效意味著什麼。
實現簽名抽象為更高階的授權方案提供了可能性。這樣,使用 Web3 錢包的感覺就會與 Web2 銀行應用程式類似,甚至更好。以下是一些用例:
1)交易限制:如果金額超過預設限制,與您的智慧帳戶關聯的錢包可以拒絕交易(或要求額外授權)。聽起來很熟悉?銀行應該這樣做,以保護您的帳戶和信用卡免受欺詐、未經授權的使用以及其他與安全相關的原因。
2)多方批准:您可以將帳戶的部分控制權委託給受信任的各方(即 「監護人」)。監護人可以是朋友、家人、服務提供商,甚至是您擁有的單獨裝置(例如硬體錢包)。因此,您可以通過要求監護人批准從您的智慧帳戶提取資金的交易來為您的錢包啟用 Web2 風格的多重身份驗證 (MFA)。
3)金鑰輪換和撤銷:使用智慧帳戶,如果之前的金鑰丟失或被盜,您可以生成新的簽名金鑰。為了提高安全性,您可以讓監護人在恢復過程中凍結您的帳戶,並要求批准金鑰輪換 / 撤銷流程(即社交恢復 )。這類似於如果信用卡丟失 / 被盜,您可以凍結信用卡,而不會失去對銀行帳戶的訪問許可權。
4)可信會話:您是否不喜歡在瀏覽器中與 dapp 互動時必須批准每個操作?您可以使用智慧帳戶建立特殊的 「會話金鑰」 ,以便 dapp 自動簽署特定時間段的交易。 這意味著您可以與 dapp 進行互動(例如玩區塊鏈遊戲),而不會被錢包彈出視窗所困擾。
在較高層面上,會話金鑰基於控制您的帳戶和 dapp 之間互動的智慧合約。您始終可以控制會話金鑰,並可以調節 dapp 的簽名許可權,例如它可以從您的餘額中扣除多少或它可以呼叫哪些函式。
5)自動付款:與會話金鑰的概念類似,您可以批准服務提供商從您的智慧帳戶 「提取」 資金(遵守預定義的規則)。這使得您可以使用您的 Web3 錢包 設定定期付款和訂閱。 您能想象使用以太坊帳戶支付 Netflix 訂閱或水電費嗎?
2. 費用提取
目前,每筆以太坊交易都必須有 「gas 費」,表示傳送 EOA 願意為執行支付多少費用。gas 費以 ETH(以太坊的原生代幣)計價。這會產生問題,特別是對於現在需要在傳送交易之前獲取 ETH 的新使用者。
帳戶抽象並不能消除支付 Gas 費的需要,但它抽象了使用者選擇如何以及何時支付 Gas 的詳細資訊(費用抽象)。例如,帳戶抽象支援 「贊助交易」,其中另一個帳戶承擔使用者交易的 gas 成本。
贊助交易的一些好處:
1)非 ETH gas 支付:您是否曾經希望可以使用錢包中的 ERC-20 代幣來支付交易費用?通過贊助交易,您可以使用 ETH 獲得中繼者來支付您的交易費用,並以 DAI 或 USDC 等其他代幣進行償還。
2)無 Gas 交易: Dapp 開發人員可以贊助交易並最大程度地減少新以太坊使用者的入職摩擦。您基本上可以在不瞭解 「gas」 的情況下使用 Web3 應用程式,並享受與 Web2 應用程式提供的相同的一鍵式體驗。
3) 社交登入 :dapp 可能會代表您部署合約錢包,解決在傳送鏈上交易之前設定錢包的痛點。最重要的部分是什麼?錢包可以使用身份驗證基礎設施(例如 Web3Auth 和 WebAuthn )來使使用者能夠使用現有憑據(例如電子郵件地址 或 Facebook/Twitter 帳戶)建立 Web3 帳戶。
3. 隨機數抽象
以太坊上的智慧帳戶還有另一個特殊功能:交易批處理。通過批量交易,您可以將多個操作合併到單個鏈上交易中,並降低與 dapp 互動的成本和複雜性。這就是為什麼事務批處理很重要:
您的 EOA 儲存一個稱為 「 隨機數 」 的值,該值顯示您已傳送的交易數量(可以將其視為交易計數器)。新交易必須嚴格將隨機數增加 1 才能有效 —— 這一規則可以防止其他人 「重播」 同一筆交易來竊取您的資金(是的, 這種情況可能會發生 )。
但有一個問題。設您有兩個事務(A 和 B),隨機數分別為 0 和 1。在這裡,您將傳送交易 A 並等待(其執行的)確認,然後再發送 B。
在 A 仍待處理時傳送 B 只會導致前者被拒絕,因為隨機數將高於規定範圍(EOA 的當前隨機數 + 1)。事實上,這是您在使用錢包時出現 「 交易卡住」 的一個重要原因。
Nonce 抽象允許您建立自定義重播保護機制(而不是以太坊協議對交易強制執行嚴格的排序)。例如,您可以有一個允許並行處理多個事務的隨機數方案。這將解決交易阻塞 / 卡住的問題,並顯著改善與 dapp 的互動。
也就是說,隨機數抽象在實踐中很難實現,並且可能會破壞某些對安全性和使用者體驗至關重要的不變數,例如事務 hash 唯一性。這就是事務批處理的用武之地:
由於智慧帳戶可以同時處理多個交易,因此對複雜隨機數抽象方案的需求很大程度上消失了。回到前面的例子,我們可以想象交易 A 和 B 只是單一假設操作的一部分,例如在 Uniswap 上交換資產:
1)交易 A:批准 Uniswap 合約以訪問您的代幣
2)交易 B:完成代幣互換
通過交易批處理,您可以將批准和交換工作流程合併到一筆交易中。結果是:使用 dapp 時 gas 費降低並減少等待時間。
五、帳戶抽象的 「方式」
此時,您已經知道帳戶抽象允許我們向用戶帳戶新增自定義功能和授權策略。但我們確實還沒有討論過這一切如何實現。本節討論在以太坊上實現抽象的不同方法(如果不感興趣,可以跳到下一節)。
有兩種普遍接受的實現帳戶抽象的方法:(a) 讓 EOA 執行 EVM 程式碼和 (b) 允許智慧合約發起交易。因此,您會發現許多帳戶抽象提案要麼希望 EOA 充當智慧合約,要麼希望合約帳戶充當 EOA。
這自然會帶來一些問題:
1)「這些方法究竟有何不同?」
2)「為什麼我們採用哪種方法很重要?」
1. 帳戶抽象:方法 #1(升級 EOA 以執行程式碼)
通過賦予 EOA 執行程式碼的能力,我們可以向用戶控制的帳戶新增複雜的功能。這增強了 EOA 並將其轉變為智慧帳戶,為本機帳戶抽象奠定了基礎。重要的是,這種方法可以讓您享受可程式設計錢包的好處,而無需承擔部署新合約帳戶的成本。
將 EOA 升級到合約帳戶的一些方法涉及將 EOA 交易的資料有效負載視為 EVM 位元組碼。其他涉及將對 EOA 的控制權委託給代表 EOA 進行交易的特殊帳戶合約。在後一種情況下,相同的帳戶合約可以被不同的 EOA 重用,從而減少了對不同合約錢包實現的需要。
下面的資訊圖顯示了 「使 EOA 可程式設計」 陣營中的不同帳戶抽象提案,包括它們的主要特徵和實施狀態:
2. 帳戶抽象:方法 #2(升級智慧合約)
通過這種方法,我們升級合約帳戶,以便它們可以批准交易並支付 gas 費(就像 EOA 一樣)。這提供了另一種通過引入可以充當 EOA(即帳戶合約)的 「超級合約」 來實現帳戶抽象的途徑。另外,它還解決了以太坊中一個緊迫的問題:在協議層面缺乏對合約錢包的支援。
您會看到,一些智慧合約錢包現在已經存在,並提供了帳戶抽象的許多好處。但使用這些錢包可能非常困難,因為以太坊將智慧合約視為 「二等公民」,並要求所有交易都從 EOA 開始。
這一限制也意味著智能合約錢包缺乏 MetaMask 等 EOA 錢包的免信任和自我託管性質。作為背景,讓我們考慮一下建立和使用智能合約錢包的流程:
1)部署新的合約帳戶
2)傳送交易以呼叫錢包合約上的功能
問題已經很明顯了:你現在需要管理兩個錢包。為什麼?EOA(預先用 ETH 提供資金)需要支付部署錢包和隨後呼叫必要功能的成本。
輸入中繼器:可以支付錢包交易以換取費用的 EOA。智能合約錢包提供商通常會執行中繼器來補貼使用者的交易。也就是說,中繼者從其錢包中支付 ETH 以支付您的交易費用,並通過其他方式(可能是法定貨幣或其他代幣)向您收取費用來收回成本。
該系統在大多數情況下都執行良好:您可以建立和使用合約錢包,而不必過多擔心支付 gas 費用的複雜性。然而,它還需要信任中繼者不會審查或篡改您的交易。但這是加密貨幣,我們喜歡不信任的系統。
通過讓合約帳戶批准交易並支付 Gas 費,帳戶抽象使得建立和使用智慧合約錢包的過程更加不可信。具體來說,它允許任何執行中繼器的人代表您執行交易。您只需簽署一條訊息,批准中繼者在執行交易後從您的錢包餘額中扣除資金:
現在使用智慧合約錢包的流程看起來有些不同:
1)部署錢包合約? 通過 使用反事實部署工作流程,您可以在部署 之前將資金發送到合約帳戶,並從您的錢包餘額中支付中繼者的 EOA 部署費用。
2)與錢包合約互動? 在鏈下籤署一條訊息,並讓中繼者呼叫您的帳戶合約。該訊息將包含帳戶合約退還中繼者 Gas 費用的指令。
這種實現去信任和抗審查的智慧帳戶的想法支撐了該類別中的許多帳戶抽象提案。例如,ERC-4337(迄今為止最流行的帳戶抽象提案)通過引入備用記憶體池來分散中繼器,使用者可以在其中提交合約錢包交易進行處理。
在這種情況下,中繼者(稱為 「捆綁者」)可以競爭執行智慧帳戶交易,從而降低審查或過度依賴錢包提供商的風險。下面的資訊圖顯示了 「賦予智慧合約 EOA 功能」 陣營中的不同帳戶抽象提案,包括它們的主要功能和實施狀態:
六、關於帳戶抽象的未來
在 Vitalik Buterin 首次提出這一概念多年後,對於實現帳戶抽象的最佳方法仍然存在一些分歧。例如,實施 EIP-3074 和 EIP-5003 將使現有 EOA(包括 MetaMask 使用者)能夠升級到智慧帳戶。但這些提議需要硬分叉,考慮到社群專注於更緊迫的升級,目前看來這是不可行的。
相比之下, EIP-4337 獲得了廣泛的支援,因為它實現了帳戶抽象,而不需要對以太坊協議進行大規模更改。但對於目前使用基於 EOA 的錢包的使用者來說,這意味著必須將資產從 EOA 轉移到新部署的合約帳戶 —— 考慮到當今以太坊的高昂 Gas 費用,這可能是一個複雜且成本高昂的過程。
在 MetaMask,我們相信帳戶抽象是為新 Web3 使用者提供無縫入職體驗的關鍵。我們還知道 EOA 不能保證加密貨幣的採用(正如以太坊基金會研究員 Yoav Weiss 生動地指出的那樣,「下一個 10 億使用者不會在紙上寫下 12 個單詞」)。
因此,我們已經開始考慮如何在不損害使用者熟悉和喜愛的 MetaMask 錢包的情況下提供帳戶抽象的好處。這項工作的一部分包括轉向 MetaMask Snaps ,這是一個無需許可的創新平臺,允許開發人員在現有 MetaMask 基礎設施之上構建自定義功能。
使用 Snaps,開發人員可以擴充套件 MetaMask 錢包的功能以支援不同的帳戶抽象用例。從會話金鑰到使用 MetaMask 構建的完整智慧帳戶整合 (所有這些都是使用 Snap 構建的),我們看到開發人員迎接了使用 MetaMask 實現使用者帳戶抽象訪問民主化的挑戰。
延伸閱讀:V神批評的MPC錢包,能成為Web3吸引10億使用者嗎?
「不要讓完美成為美好的敵人。」 — 伏爾泰
經常帳戶抽象提案,即使有些不完美,但是是朝著在以太坊上實現去信任、抗審查的智慧帳戶邁出的一大步,值得大家的支援。引用我們自己的泰勒・莫納漢 (Taylor Monahan) 的話,「已交付的半解決方案仍然比未交付的完美解決方案更好。」
📍相關報導📍
科普 | 以太坊EIP-4337「帳戶抽象(AA)」是什麼?往後錢包無助記詞!