• APP內打開
    風險提示:防范以虛擬貨幣/區塊鏈名義進行的非法集資風險。 ——銀保監會等五部門

    Metamask:一文說透賬戶抽象的過去、現在、未來

    白話區塊鏈 2023-07-20 15:45:50
    微信分享

    掃碼分享

    了解以太坊中的賬戶抽象——它的含義及其重要性。<br />

    作者:Emmanuel Awosika / 來源:https://metamask.io/news/latest/account-abstraction-past-pre

    翻譯:火火/白話區塊鏈

    了解以太坊中的賬戶抽象——它的含義及其重要性。

     

    即使熊市肆虐,也很少有人加密貨幣的繼存性。例如,像 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 費用、甚至自行設置鏈上賬戶的需要。

    三、賬戶抽象的好處

    如前所述,帳戶抽象消除了與使用 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 可能會代表您部署合約錢包,解決在發送鏈上交易之前設置錢包的痛點。最重要的部分是什么?錢包可以使用身份驗證基礎設施(例如Web3AuthWebAuthn )來使用戶能夠使用現有憑據(例如電子郵件地址或 Facebook/Twitter 帳戶)創建 web3 帳戶。

    3.隨機數抽象

    以太坊上的智能賬戶還有另一個特殊功能:交易批處理。通過批量交易,您可以將多個操作合并到單個鏈上交易中,并降低與 dapp 交互的成本和復雜性。這就是為什么事務批處理很重要:

    您的 EOA 存儲一個稱為“隨機數”的值,該值顯示您已發送的交易數量(可以將其視為交易計數器)。新交易必須嚴格將隨機數增加 1 才能有效——這一規則可以防止其他人“重播”同一筆交易來竊取您的資金(是的,這種情況可能會發生)。

    但有一個問題。設您有兩個事務(A 和 B),隨機數分別為 0 和 1。在這里,您將發送交易 A 并等待(其執行的)確認,然后再發送 B。

    在 A 仍待處理時發送 B 只會導致前者被拒絕,因為隨機數將高于規定范圍(EOA 的當前隨機數 + 1)。事實上,這是您在使用錢包時出現“交易卡住”的一個重要原因。

    Nonce 抽象允許您創建自定義重播保護機制(而不是以太坊協議對交易強制執行嚴格的排序)。例如,您可以有一個允許并行處理多個事務的隨機數方案。這將解決交易阻塞/卡住的問題,并顯著改善與 dapp 的交互。

    也就是說,隨機數抽象在實踐中很難實現,并且可能會破壞某些對安全性和用戶體驗至關重要的不變量,例如事務哈希唯一性。這就是事務批處理的用武之地:

    由于智能賬戶可以同時處理多個交易,因此對復雜隨機數抽象方案的需求很大程度上消失了。回到前面的例子,我們可以想象交易 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-3074EIP-5003將使現有 EOA(包括 MetaMask 用戶)能夠升級到智能帳戶。但這些提議需要硬分叉,考慮到社區專注于更緊迫的升級,目前看來這是不可行的。

    相比之下,EIP-4337獲得了廣泛的支持,因為它實現了賬戶抽象,而不需要對以太坊協議進行大規模更改。但對于目前使用基于 EOA 的錢包的用戶來說,這意味著必須將資產從 EOA 轉移到新部署的合約賬戶——考慮到當今以太坊的高昂 Gas 費用,這可能是一個復雜且成本高昂的過程。

    在 MetaMask,我們相信帳戶抽象是為新 web3 用戶提供無縫入職體驗的關鍵。我們還知道 EOA 不能保證加密貨幣的采用(正如以太坊基金會研究員 Yoav Weiss 生動地指出的那樣,“下一個 10 億用戶不會在紙上寫下 12 個單詞”)。

    因此,我們已經開始考慮如何在不損害用戶熟悉和喜愛的 MetaMask 錢包的情況下提供賬戶抽象的好處。這項工作的一部分包括轉向MetaMask Snaps,這是一個無需許可的創新平臺,允許開發人員在現有 MetaMask 基礎設施之上構建自定義功能。

    使用 Snaps,開發人員可以擴展 MetaMask 錢包的功能以支持不同的帳戶抽象用例。會話密鑰到使用 MetaMask 構建的完整智能帳戶集成(所有這些都是使用 Snap 構建的),我們看到開發人員迎接了使用 MetaMask 實現用戶帳戶抽象訪問民主化的挑戰。

    “不要讓完美成為美好的敵人。” — 伏爾泰

    經常賬戶抽象提案,即使有些不完美,但是是朝著在以太坊上實現去信任、抗審查的智能賬戶邁出的一大步,值得大家的支持。引用我們自己的泰勒·莫納漢 (Taylor Monahan) 的話,“已交付的半解決方案仍然比未交付的完美解決方案更好。”

     

    下載白話區塊鏈APP

    區塊鏈世界入口第一站,人人都能看懂的區塊鏈;24 小時熱點實時追蹤。

    毛片免费看