
撰寫:Gal Ron,stanford blockchain review
編譯:深潮 TechFlow
*注:此文來自於斯坦福區塊鏈評論,深潮 TechFlow 為斯坦福區塊鏈評論合作伙伴,獨家獲授權編譯轉載。
“無私鑰,無代幣!”這是區塊鏈的口號。但是,“私鑰”究竟是什麼?
現實世界中的鑰匙根據其所起的作用而發生變化。自行車鎖的鑰匙與 Brinks 貨車高安全性鑰匙不屬於同一類型。
然而,在以太坊上,所有的鑰匙具有相同的結構。以太坊上的任何操作——不論其價值或目的如何——都需要使用助記詞對交易進行簽名。並且,助記詞內容應只由賬戶所有者掌握。這是一個重大的 UX 障礙和阻礙加密貨幣主流採用的障礙。
賬戶抽象幫助區塊鏈應用程序擺脫這種範式。賬戶抽象的概念最初由 Vitalik 在 2015 年的一篇文章中介紹,現在通過 Layer-2 區塊鏈(例如 Starknet 和 zkSync)以及通過 EIP-4337 在以太坊本身上得以實現。賬戶抽象將 Web3 的強大功能與 Web2 的簡單性和舒適性結合起來,是邁向擴展自我保管的重要里程碑。
以太坊上的 EOA 及其侷限性
首先,讓我們回顧一下以太坊上的加密賬戶是如何工作的。以太坊有兩個基本實體:智能合約和 EOAs(外部擁有的賬戶)。
EOA 是一個實體,具有以下特點:
(1)通過私鑰派生的賬戶地址,
(2)用於支付費用或向他人發送以太幣的 ETH 餘額,
(3)稱為“nonce”的標識符,用於記錄從該 EOA 發送的交易序列號,以進行重放保護。
在以太坊上,只有 EOAs 可以發送交易。為了使交易有效,必須使用從賬戶地址派生的私鑰對其進行簽名。這意味著“擁有”一個 EOA 實際上意味著擁有用於派生賬戶地址的私鑰。
儘管以太坊上的智能合約是完全可編程的,但用於驗證交易有效性的邏輯並非可編程,而是硬編碼在 EVM(以太坊虛擬機)中。有效的交易必須嚴格遵循一組規則,例如:
-
簽名方案。交易必須使用 ECDSA 簽名方案,在橢圓曲線 secp256k1 上進行簽名。
-
交易費。交易費的來源必須是發起交易的同一個 EOA。此外,交易費必須以 ETH 的形式計價。
-
重放保護。交易必須按其“nonce”標識符的序列號進行順序發送。
-
私鑰是不可變的。由於賬戶地址是從私鑰派生的,因此不可能更改用於簽名交易的“秘密”。
這些規則嵌入到以太坊協議中,無法更改。它們源於設計決策,旨在優化協議安全性和以太坊節點的運行效率。然而,它們限制了 dApp 開發人員的許多用例。例如,在使用 EOA 時,不可能讓另一個賬戶支付您的交易費用。這對於可能希望資助每個玩家的前幾步“動作”的去中心化遊戲來說是一個有價值的功能。
在其他情況下,區塊鏈用戶可能希望授權其他用戶代表他們發送交易,或許對交易價值或頻率設置一些限制。這也是使用 EOAs 不可能實現的。
此外,在 Web2 中,密碼輪換是一種基本原語,但是不可能更改 EOA 的密碼,或者指望其他實體幫助您恢復密碼而不會給他們完全訪問您的賬戶。
帳戶抽象
賬戶抽象是一種將上述硬編碼邏輯與 EOA 解耦的思路,將所有賬戶轉變為完全可編程的智能合約。這將為賬戶所有者、錢包和 dApp 提供靈活性,以確定交易應如何簽名和接受,以及交易費用的來源。換句話說,賬戶抽象是實現智能合約錢包的技術基礎設施。
賬戶抽象的概念可以分為三類,對應於當前 EOAs 存在的三個主要限制:
(1) 簽名者抽象。給予智能合約靈活性,以確定有效簽名的交易是什麼,而不是強制使用 ECDSA 方案和固定私鑰作為唯一可接受的簽名。這意味著智能合約可以自行決定接受其他簽名方案,例如更適合共享秘密的方案。合約還可以要求不同入口函數使用不同的簽名方案,甚至根本不需要任何簽名。
(2) 費用抽象。在以太坊上,賬戶所有者需要做的第一件事就是用一些 ETH 填充賬戶,以便支付交易費用並開始使用賬戶。想象一下一個區塊鏈架構,dApp 可以資助其用戶的交易費用,或者讓用戶以他們希望的任何代幣貨幣支付費用(並在飛行中進行 ETH 交換);這將解決以太坊今天面臨的重大 UX 挑戰。
(3) Nonce 抽象。這是賬戶抽象中鮮有討論但更為微妙的領域,卻同樣具有趣味性。EOAs 上的“nonce”標識符提供了防止交易重放的保護,但它也強制實施了一種本質上是順序的交易模型。如果一個智能合約想要接受來自同一 EOA 的兩個並行交易,而不考慮它們的順序怎麼辦?當“nonce”機制可以被智能合約控制而不是硬編碼到通用交易處理邏輯中時,就變得可能了。
擴展自託管
在比特幣白皮書發表 15 年後,今天的加密錢包仍然需要高維護,而不是我們期望的流暢產品。去年 CEX 崩潰教給了我們自我保管才是正確的方式,但管理自己的私鑰仍然是一個重大負擔和安全風險。即使是核心的加密開發人員偶爾也會丟失他們的私鑰或被竊取(推文)。通過賬戶抽象操作的智能合約錢包可能成為消除這些風險並推動自我保管錢包的大規模採用的催化劑。賬戶抽象通過兩種機制使賬戶管理變得更輕鬆:更智能的交易簽名和更好的恢復流程。
首先,簽名者抽象功能允許錢包將 Web2 的功能嵌入其產品中。例如,Braavos 錢包利用 iOS 和 Android 設備的安全隔離區域,允許用戶使用指紋或面部 ID 簽署交易,而根本不需要輸入任何助記詞。類似的簽名者抽象功能允許開發人員逐個案例地控制批准單個交易所需的安全級別。這為 Web3 錢包的真正多因素身份驗證鋪平了道路。與您的在線銀行賬戶類似,每天的交易可以從單個設備執行,但是向新收件人執行交易或執行特別有價值的交易可能會提示用戶在多個設備上簽名。
賬戶抽象還改善了賬戶恢復的 UX。簽名者抽象允許為一個賬戶擁有多個簽名者,每個簽名者都有個人權力和特權。例如,賬戶的主要所有者可以與朋友分享一些較低權限的密鑰,以一種朋友可以幫助恢復主密鑰但不能花費賬戶中任何資產的方式。這通常稱為社交恢復,並已在基於智能合約的錢包中實現,例如 ArgentX 錢包。
加密支付的機會
加密貨幣支付被廣泛討論為區塊鏈的主要用例之一。然而,這個承諾尚未實現。歷史上,這是由於昂貴的交易費用,但隨著卷積和可擴展性解決方案的出現,這些費用現在正在下降。然而,在傳統金融領域中成熟的支付解決方案之所以成功,不僅僅是因為低交易成本。它們需要其他功能,例如信用發行、欺詐檢測、爭議處理和定期付款機制。
賬戶抽象允許將這些傳統支付概念轉化為加密貨幣領域。例如,Visa 最近提出了使用賬戶抽象來設計定期付款系統的概念證明。想象一個可編程的自我保管錢包,可以授權 Visa 定期自動劃撥資金(最高限額),而無需在每筆交易上要求用戶簽名。
當遊戲 UX 遇上 Web3
批量交易和費用抽象化使 Web3 遊戲成為另一個容易受到賬戶抽象干擾的領域。
將遊戲活動引入鏈上的主要障礙是每個鏈上活動都需要簽署交易,這可能會超過交易成本。提示用戶在錢包中點擊“簽名”按鈕會打亂遊戲的流程,並使 Web3 遊戲體驗相當繁瑣。
賬戶抽象允許遊戲開發人員創建“會話密鑰”,該密鑰預授權簽署特定時間段的遊戲交易。這些密鑰可以存儲在瀏覽器或智能手機的本地存儲中,並根據需要撤銷。這將使 Web3 遊戲遊戲體驗更接近於 Web2 遊戲。
此外,費用抽象允許遊戲開發人員為他們的用戶資助交易費用。這對於吸引新玩家尤其有效,因為他們可能不熟悉加密貨幣,或者想先嚐試遊戲,瞭解遊戲體驗之後再支付交易費用。
前方道路
賬戶抽象一直是以太坊路線圖上的一部分。以太坊改進提案,如 EIP-86(2017)、EIP-2983(2020)和 EIP-3074(2020),為 EIP-4337(2021)鋪平了道路,該提案引入了一個新的去中心化基礎設施,用於操作智能合約錢包。
除了 EIPs,像 Gnosis 這樣的智能錢包 dApp 在以太坊上出現了。然而,所有這些都是以太坊原生賬戶模型的二等公民,即 EOA。
解決以太坊的限制並將智能合約錢包帶給用戶的機會可能通過 Layer 2 擴展網絡實現。像 Starknet 和 zkSync 這樣的 Layer2 在協議層面上嵌入了賬戶抽象,通過本地工具和基礎設施輕鬆讓開發人員訪問。





