## 一.帳戶的概念 乙太坊有兩種基本的帳戶類型: 外部帳戶( Externally Owned Accounts - EOA )以及合約帳戶 (Contract Account – CA)。  1.外部EOA賬戶( Externally Owned Accounts ) EOA是乙太坊中用於存儲和管理資產的帳戶類型之一,由用戶掌握私密金鑰來控制。與智慧合約帳戶不同,EOA不與任何代碼關聯,通常使用助記詞生成,並通過錢包進行管理。我們最熟悉的MetaMask生成的地址就是EOA。 目前在乙太坊上簽署交易的方法是使用ECDSA簽名。ECDSA簽名不具有量子對抗性(橢圓曲線Elliptic curve密碼學容易受到用於解決橢圓曲線上離散對數問題的改良型肖爾演算法Shor's algo的影響,而量子電腦可以輕鬆運行肖爾演算法)。這雖然不是直接的影響,但考慮到乙太坊未來的發展,我們需要思考未來可能出現的情況。 2.合約賬戶( Contract Account ) 合約帳戶也曾被稱為內部帳戶,是具備內部邏輯的乙太坊帳戶,裡面既可以是業務邏輯(Token合約用來記帳,質押合約用來放貸和清算),也可以是帳戶邏輯,例如「Scw -智慧合約錢包」概念。我們常見的ERC-20代幣合約、DeFi業務合約等都有一個跟EOA長得很像的位址,這就是CA。 在設定上,CA是乙太坊世界的原住民,EOA和ETH是為CA的業務邏輯準備的觸發器和燃料;實際使用下來,乙太坊上除ETH之外的所有資產都是由CA承載,DeFi等業務邏輯就更是全都由CA來實現。然而CA無法主動進行操作和支付gas的設定也限制了它的能力,早在2016年就有提案希望能讓CA自己支付gas. CA的位址規則是通過計算生成的,有CREATE和CREATE2兩種方式,和公開金鑰沒有必然對應關係。比如 gnosis safe創建的CA裡可以設定任意多把公開金鑰來解鎖它的位址對應的資產;當然CA也可以不設定任何金鑰,而是由其他CA的邏輯決定是否可以解鎖,比如DeFi的借貸合約,只要還了錢就能取回質押的資產。 ### 2.錢包的生態現狀 錢包的主要方向是增強安全性提高用戶體驗,目前有兩種解決方案:   1.使用底層EOA錢包 * MPC (多片計算錢包)類型 **多方計算錢包(MPC)是指EOA 的單一私密金鑰被分散成更小的碎片,並安全地存儲在三個不同的當事方之間**。m/n或n/n當事方可以一起簽署交易,可以是使用者、設備和協力廠商服務。分片的金鑰通常在鏈外存儲和計算,是一種非常安全的管理錢包的方式。我們可以通過減少私密金鑰管理的障礙來提高使用者體驗的服務,如SSO可以建立在 MPC錢包之上。例如 Fireblocks,Anchorage等。 * MultiSig 多簽錢包 **多簽錢包是需要2個或更多的外部帳戶來簽署交易的智慧合約錢**包。多簽錢包對個人來說沒有太多的使用案例,但對組織來說是非常有效的。在預防單個用戶攜帶屬於多人的資金或資產逃跑的情況下,多簽名是目前最好的選擇。 1.賬戶抽象錢包(Abstract Account Wallet) 帳戶抽象是由ERC-4337解鎖的一項新技術,它為Web3的用戶打開了新的視野。它旨在將協議中的兩種帳戶類型(外部擁有帳戶和智慧合約帳戶)的功能合二為一,提升用戶體驗和安全性。 帳戶抽象錢包是一種錢包類型,可以管理和控制帳戶抽象中的外部擁有帳戶和智慧合約帳戶,可以用於發送和接收乙太幣以及其他代幣,進行交易和支付燃料費用等操作,可以實現創新型錢包設計,如社交恢復、定制和可升級性等。 AA這個概念不是乙太坊和EVM專屬的,很多鏈原生已經具備了不同程度的AA特性。比如EOS / Polkadot / Near / Solona / Flow / Aptos ...甚至BTC(單簽/多簽/Taproot),這些鏈在設計時就已經將帳戶做成了有內部結構甚至具備許可權管理能力的狀態,還有StarkNet / CKB等具備更完善的帳戶抽象能力。說到這裡大家不難發現,乙太坊的AA是在解決EOA[意外地流行]帶來的歷史遺留問題,從而在帳戶層面上變得更加先進和靈活。 ### 2.爲什麽不選擇現有的智能合約錢包 從用戶的角度來看,智慧合約錢包可以通過新增EOA的私密金鑰管理,然後增加幫助gas補貼的中繼器來完成這一切。流程如下圖所示。  這個系統的問題是∶EOA也仍然需要私密金鑰管理。雖然這些私密金鑰可以被安全地管理,但仍然需要依賴協力廠商服務MPC/多簽名服務提供者。Web3Auth使用MPC系統,而Safe Wallet使用多簽名模式。對於gas補貼,也有對中繼器的外部依賴(例如Biconomy提供的那樣)。 使用這些內置於區塊鏈本身的執行層總是比依賴協力廠商要好,因為其他的可能會產生故障。 ## 一.ERC-4337和賬戶抽象 乙太坊對抽象賬戶的期望是想改變大多數人使用EOA賬戶的現狀,希望大多數用戶都轉向抽象賬戶錢包,從而把對EOA的依賴抹去。ERC-4337只是賬戶抽象衆多提案的一個,其他提案包括EIP-2337,EIP-3071。 ### 1.爲什麽是ERC-4337 相比於其他提案,<font color="#EAF016">不再追求利用共識層的改變實現AA,而是轉而使用SCW這種用戶層的方案</font>**(An account abstraction proposal which completely avoids consensus-layer protocol changes, instead relying on higher-layer infrastructure.)**。並且為了實現更好的互通性,ERC-4337定義了一些SCW應該實現的介面,以及元交易打包、gas 代付等基礎設施的框架。它的出現讓目前差異極大的各種SCW方案能夠擁有統一的使用者交互介面以及共用一些生態層面搭建的開放基礎設施,有助於各種場景快速實現自己需要的SCW方案。另一方面,ERC-4337的推動有助於促進生態其他參與方提升對 SCW的相容性,比如驗簽需要的EIP-1271和有些DeFi協議裡定義的禁止CA交互的一些規則。 ### 2.ERC-4337的運作 從微觀上來說,4337主要解決「怎麼實現讓合約支付gas 費」﹔從宏觀上來說是為了解決乙太坊的帳戶問題,是智慧合約的一個標準。通過構建新的交易類型Useroperation和對應的交易池 UserOperation Nempool ,添加新的交易角色打包人Bundler、代付人Paymaster、簽名聚合起Signature Aggregator,同時引入兩個新的合約Entry Point Contract和wallet Contract ,實現了帳戶抽象的效果。 #### 2.1 ERC-4337的概念  #### 2.2 ERC-4337的概念  * Entry Point Contract:入口點合約點驗證Bundler裡UserOperation的合法性,調用指定的錢包合約。  * Wallet contract:錢包合約驗證並執行Bundle裡的UserOperations 的具體內容。若不存在對應的Wallet Contract,則調用錢包工 Wallet Factory去創建新的合約。 * Bundler:Bundler本質上是EOA,負責打包UserOperations並發佈到主網上,需要支付主網gas fee,並賺取UX交易差價費用。 * paymaster:可以是代付人,也可以是swap協議,甚至是鏈下法幣或信用卡支付。  ## 三,AA的現狀和未來 ### 1.存在的問題 * AA目前的問題是成本問題,gas比較貴(但是在Layer2上就不再是問題) * 相容性問題:4337不適用於非 EVM鏈。 * 複雜度帶來的潛在風險:Entry Point合約和Wallet合約存在的安全風險 ### 2.1實現支付Gas的多樣性 在UO中指定paymaster代付人合約來進行eth gas fee支付,然後自己以其他erc-20代幣支付代付人。達到可使用帳戶中任何ERC-20代幣來支付費用。 Dapp開發人員也可以贊助交易並最大限度地減少新用戶的入場摩擦。 帳戶抽象並沒有消除支付gas 費用的需要,它只是抽象出了用戶如何以支付gas 的細節。 ### 2.2交易批處理  ### 2.3自定義交易順序/並處理  ### 2.4自動化交易處理 * 可以實現類似自動化跟單、網格交易之類的原本只能在中心化交易所才能實現的功能 * 可以實現免密支付、按期訂閱等。 ### 2.5更多場景  ### 2.4其他錢包專案  參考: ERC4337: https:/www.youtube.com/watch?v=onMm63DkTFY Mitalik: https:/medium.com/infinitism/erc-4337-account-abstraction-without-ethereum-protocol-changes-d75c9d94dc4a MPC錢包:https://www.binance.com/zh-CN/news/top/7248497 Abstract Account:https://cointelegraph.com/magazine/columns/crypto-city-guides-columns/
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.