以太坊創辦人 Vitalik 將「帳戶抽象」視為以太坊面向 10 億用戶的關鍵點,那麼帳戶抽象有什麼便利之處?
(前情提要:速覽》以太坊基金會「帳戶抽象」資助輪獲獎的18個ERC-4337潛力項目 )
(背景補充:Visa測試「信用卡付Gas費」!通過帳戶抽象落地加密貨幣支付 )
以太坊帳戶抽象是整個以太坊生態的討論熱點,創辦人 Vitalik 甚至專門發表多篇文字闡述帳戶抽象之於以太坊的重要性,是以太坊面向下一個十億使用者的關鍵之作。那麼,什麼是 「帳戶抽象」(Account Abstraction)?
“帳戶抽象” 是一項旨在改善使用者與以太坊互動的提案,也是加密貨幣社群越來越多討論的主題。不過,你可能會想 ” 帳戶抽象到底是什麼,我為什麼要關心它?
本文旨在通過介紹帳戶抽象的過去、現在和未來,幫助你理解帳戶抽象。我們解答關於該主題的所有問題,特別是關於帳戶抽象的 “誰”、”什麼”、”為什麼”、”如何” 等的問題。
關鍵要點摘要:
- 可程式設計的自託管帳戶(”智慧帳戶”)可以減少新使用者加入 web3 生態系統時的摩擦。然而,以太坊的設計限制了智慧帳戶的廣泛採用和使用。
- 帳戶抽象引入了重大變革,為廣泛採用無信任、抗審查的智慧帳戶鋪平了道路。目前正在考慮採用不同的方法來實現帳戶抽象,每種方法都有其獨特的優勢和權衡。
什麼是帳戶抽象?
與 Web3 中的其他新概念一樣,帳戶抽象也很難定義。不過,我們可以通過首先解讀與討論以太坊帳戶抽象相關的各種術語來更好地理解它:
1. 抽象:電腦科學中的一個(相當複雜的)術語,大致意思是隱藏系統或應用程式的資訊,以便在使用時對後臺執行的程式瞭解較少。也被定義為 「通過提供便於操作的介面來隱藏系統複雜性的過程」。
2. 帳戶:使用者在區塊鏈上的代表,可以傳送或接收交易,並與其他鏈上帳戶互動。以太坊有兩種帳戶:外部擁有帳戶(EOA)和合約帳戶(又稱 “智慧合約”)。
延伸閱讀:進擊的錢包:帶你瞭解加密錢包的新發展
2a. 外部擁有帳戶(EOA):使用錢包軟體(如 MetaMask)生成的以太坊帳戶,由一對公鑰和私鑰加密管理。EOA 是 “活躍” 的(它可以啟動交易併為 EVM 的執行支付網路費用)。不過,它僅限於執行基本操作,如傳送以太幣或與合約互動。
2b. 合約帳戶:以太坊帳戶以智慧合約的形式部署,由寫入程式碼的邏輯(而非私鑰)控制。合約帳戶是 “被動” 的:它只能根據 EOA 的交易傳送交易,不能支付費用。不過,它是可程式設計的,可以根據儲存在地址中的程式碼執行任意邏輯。
3. 錢包:管理以太坊帳戶資金的介面 — 錢包如何執行取決於它與哪種型別的帳戶相連。基於 EOA 的錢包(如 MetaMask)需要私鑰來授權交易。同時,智慧合約錢包與合約帳戶相連,可以使用任意邏輯授權交易(例如使用多重簽名方案)。
有了這些定義,我們現在就可以定義帳戶抽象了。
帳戶抽象定義
帳戶抽象是一項建議,旨在提高以太坊帳戶管理和行為的靈活性。我們通過引入帳戶合約來實現這一目標:定義和管理使用者以太坊帳戶(現在稱為智慧帳戶)的特殊用途智慧合約。
有了帳戶抽象,您就可以通過使用智慧合約錢包,而不是僅僅依賴私鑰來確保安全,從而享受可程式設計的資金訪問。之所以能做到這一點,是因為您的智慧帳戶可以自定義交易和轉移資產的規則。
那麼,「抽象」 是如何融入這一切的呢?
從網路層面來看,「帳戶抽象」 意味著以太坊協議看不到帳戶型別的細節。每個帳戶(包括自監管帳戶)都只是一個智慧合約,使用者可以自由決定如何管理和操作單個帳戶。
從使用者層面來看,「帳戶抽象」 意味著與以太坊帳戶互動的某些技術細節被隱藏在更高層次的介面之後。這改進了錢包設計,大大降低了使用 web3 應用程式的複雜性。
有必要澄清一些概念,因為圍繞帳戶抽象的混淆來自於不知道(a)抽象的是什麼和(b)抽象發生在哪裡。帳戶並不一定是從使用者中抽象出來的(即使是從協議中抽象出來的)。你仍然需要一個錢包地址來接收資金,還需要一個簽名金鑰來確保只有你才能使用這些資金。
從使用者的角度來看,帳戶抽象更像是使用一個智慧帳戶,它抽象了與區塊鏈互動的一些細節。以下是首次使用 dapp 的使用者與 dapp 互動的情況:
有了帳戶抽象,錢包開發人員就可以建立在後臺處理這些流程的系統,並簡化 web3 的使用體驗。一些用例(我們稍後會詳細介紹)包括:無需儲存助記詞 / 私鑰,無需為交易支付網路手續費,甚至無需自己建立鏈上帳戶。
帳戶抽象的好處
如前所述,帳戶抽象消除了使用 web3 錢包和與 dapps 互動時的大部分摩擦。這使 web3 更接近 web2 的使用體驗,即所有使用者,無論是新手還是老手,都能從相同程度的靈活性、安全性和易用性中獲益。
特別是,帳戶抽象化對未來的自我保管具有巨大影響。有了帳戶合約提供的功能,使用 web3 錢包就像使用銀行帳戶或應用程式一樣,無需信任銀行。
在隨後的章節中,我們將介紹帳戶抽象的不同層面,並討論它們如何改善以太坊的使用體驗。具體來說,我們將討論簽名抽象(signature abstraction)、費用抽象(fee abstraction)和 nonce 抽象(nonce abstraction)。
簽名抽象
如今,EOA 的交易必須有帳戶私鑰使用橢圓曲線數位簽名演算法 (ECDSA) 生成的簽名才有效。這為大多數 EOA 提供了一個簡單的安全模型:只要私鑰仍在使用者手中,資金就是安全的。但它也有一些侷限性:
1. 眾所周知,EOA 是很難保證安全的,尤其是惡意行為者一直在開發新的方法來破壞私鑰。我們目睹了諸多網路釣魚、社交工程、欺騙、惡意軟體注入和類似攻擊對 web3 使用者安全帶來的挑戰。
2. 自我保管可能感覺像一項極限運動。與普通銀行帳戶不同,如果助記詞 / 私鑰丟失,您無法 「恢復」EOA 錢包。這就給新使用者帶來了挑戰,他們必須努力應對完全丟失以太坊帳戶中的資產而無法追索的影響。
簽名抽象解決了這些問題,不再將 ECDSA 簽名作為非託管帳戶的預設授權機制。相反,使用者可以定義授權錢包啟動交易的自定義規則。或者換一種說法,你可以決定交易有效的含義。
實施簽名抽象為更高階的授權方案提供了可能性。這樣,使用 web3 錢包的感覺就會與 web2 銀行應用程式相似,甚至更好。下面是一些使用案例:
1. 交易限額:如果金額超過預設限額,與您的智慧帳戶相連的錢包可以拒絕交易(或要求額外授權)。聽起來耳熟嗎?應該是的 — 銀行已經這樣做了,以保護您的帳戶和信用卡免受欺詐、未經授權的使用以及其他與安全相關的原因的影響。
2. 多方審批:您可以將帳戶的部分控制權委託給受信任的人,也就是 「監護人」。監護人可以是朋友、家人、服務提供商,甚至是您自己的獨立裝置(如硬體錢包)。這樣,您就可以通過要求監護人批准從您的智慧帳戶提取資金的交易,為您的錢包啟用 Web2 風格的多因素身份驗證(MFA)。
3. 金鑰輪換和撤銷:有了智慧帳戶,如果前一個金鑰丟失或被盜,你可以生成一個新的簽名金鑰。為了提高安全性,你可以讓監護人在恢復過程中凍結你的帳戶,並要求批准金鑰輪換 / 撤銷流程(即社交恢復)。這類似於在信用卡丟失或被盜的情況下凍結信用卡,而不會失去對銀行帳戶的訪問許可權。
4. 可信會話:您是否不喜歡在瀏覽器中與 dapp 互動時必須批准每項操作?好極了!您可以使用智慧帳戶建立特殊的 「會話金鑰」,讓應用程式在特定時間內自動簽署交易。這意味著您可以與 dapp 進行互動 — 比如玩區塊鏈遊戲 — 而不會被錢包彈出式視窗纏住。
從高層次上講,會話金鑰基於智慧合約,它控制著你的帳戶和 dapp 之間的互動。您始終擁有會話金鑰的控制權,並可以管理 dapp 的簽約許可權,例如它可以從您的餘額中扣除多少金額或呼叫哪些功能。
5. 自動付款:與會話金鑰的想法類似,您可以批准服務提供商從您的智慧帳戶中 “提取” 資金(受預定義規則的限制)。這樣就可以使用 web3 錢包設定定期付款和訂閱。你能想像用以太坊帳戶支付 Netflix 訂閱費或水電費嗎?
費用抽象
目前,每筆以太坊交易都必須有一個 「交易費」,表示傳送 EOA 願意為交易的執行支付多少費用。交易費以以太坊為單位,以太坊是以太坊的原生代幣。這就造成了一些問題,尤其是對於新使用者來說,他們現在需要在傳送交易前獲取以太幣。
帳戶抽象並不能消除支付交易費的需要,但它抽象出了使用者選擇支付交易費的方式和時間的細節(費用抽象)。例如,帳戶抽象可以實現 “贊助交易”,即由另一個帳戶支付使用者交易的 gas 費用。贊助交易的一些好處
1. 不需持有 ETH 支付網路交易費:您是否曾希望用錢包中的 ERC-20 代幣支付交易費用?有了贊助交易,您就可以讓一個 ETH 中繼器為您的交易支付費用,然後再用 DAI 或 USDC 等其他代幣支付。
2. 免手續費交易:Dapp 開發者可以贊助交易,最大限度地減少以太坊新使用者的入門摩擦。您基本上可以使用 web3 應用程式,而無需瞭解 “gas”,並享受 web2 應用程式提供的一鍵式體驗。
3. 社交登入:dapp 可能會代表你部署一個合約錢包,解決了在傳送鏈上交易前設定錢包的痛點。最棒的是什麼?錢包可以使用身份驗證基礎架構(如 Web3Auth 和 WebAuthn),使使用者能夠使用現有憑據(如電子郵件地址或 Facebook/Twitter 帳戶)建立 Web3 帳戶。
Nonce 抽象
以太坊上的智慧帳戶還有一個特殊功能:批量交易。通過批處理交易,您可以將多個操作合併為一個鏈上交易,降低與 dapps 互動的成本和複雜性。以下是交易批處理的重要原因:
您的 EOA 儲存了一個稱為 “nonce” 的值,顯示您傳送了多少筆交易(可以把它想像成交易計數器)。新的交易必須嚴格地將 nonce 值增加 1 才有效 — 這條規則可以防止其他人 “重放” 相同的交易,從而盜取您的資金(這種情況可能會發生)。
但這也有個問題。Nonces 迫使你以先進先出(FIFO)的方式處理交易。假設有兩個交易(A 和 B),nonce 分別為 0 和 1。在這種情況下,您需要傳送事務 A,並在傳送事務 B 之前等待(其執行的)確認。
如果在 A 交易未完成時傳送 B 交易,前者就會被拒絕,因為其 nonce 超過了規定範圍(EOA 當前的 nonce + 1)。事實上,這也是使用錢包時出現 “卡死交易” 的一個重要原因。
Nonce 抽象允許你建立自定義的重放保護機制(而不是以太坊協議對交易執行嚴格的排序)。例如,你可以有一個允許並行處理多個交易的 nonce 方案。這將解決交易堵塞 / 停滯的問題,並顯著改善與 dapp 的互動。
儘管如此,nonce 抽象在實踐中很難實現,而且有可能破壞對安全性和使用者體驗至關重要的某些不變性,如事務 hash 唯一性)。這就是交易批處理的用武之地:
由於智慧帳戶可以同時處理多筆交易,因此對複雜的 nonce 抽象方案的需求在很大程度上消失了。回到前面的例子,我們可以想像交易 A 和交易 B 只是一個假設操作的一部分,比如在 Uniswap 上交換資產:
交易 A:批准 Uniswap 合約以訪問您的代幣
交易 B:完成代幣交換
通過交易批處理,您可以將批准和交換工作流程合併為一個交易。其結果是:在使用 dapp 時,氣體費用更低,等待時間更短。
關於帳戶抽象的未來展望
以太坊創辦人 Vitalik Buterin 首次提出這一概念已有多年,但對於實現帳戶抽象的最佳方式仍存在一些分歧。例如,實施 EIP-3074 和 EIP-5003 可以讓現有的 EOA 升級到智慧帳戶。但這些建議需要以太坊進行硬分叉,而社群正專注於更緊迫的升級,因此目前看來是不可行的。
相比之下,EIP-4337 得到了廣泛的支援,因為它在不需要對以太坊協議進行大規模修改的情況下實現了帳戶抽象。但對於目前使用基於 EOA 的錢包的使用者來說,這意味著必須將資產從 EOA 轉移到新部署的合約帳戶 — 考慮到目前以太坊上高昂的網路交易費用,這個過程可能既複雜又昂貴。
我們相信,帳戶抽象是為 Web3 新使用者提供與 Web2 無差別體驗的關鍵。我們也知道,EOA 無法保證加密貨幣的大規模採用。因此,如何在不影響使用者熟悉的錢包操作的前提下提供帳戶抽象的好處是將來創新的一大方向。
📍相關報導📍
Metamask為你科普:以太坊「帳戶抽象」的過去、現在與未來