風險提示:防範以"虛擬貨幣""區塊鏈"名義進行非法集資的風險。——銀保監會等五部門
資訊
發現
搜索
登錄
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
查看行情
支付商大厂放大招:Alchemy新发布的模块化账户会为Web3引流吗?
jk
Odaily资深作者
2024-02-23 08:54
本文約6425字,閱讀全文需要約10分鐘
内含在链上玩猜词游戏Wordle的入口。

原文來自Alchemy 的《Hello, Modular Account》,由Odaily jk 編輯。

Alchemy 宣布推出模組化帳戶,這是一個全新的、從零開始的合約帳戶實現,為ERC-4337 和ERC-6900 相容性而設計。模塊化帳戶為在以太坊L2上建立的開發者提供企業級安全性、業內最佳成本以及強大的帳戶可擴展性。

立即開始使用模組化帳戶,並繼續閱讀以了解更多資訊。

為什麼選擇合約帳戶

過去幾年,Web3生態系統經歷了前所未有的成長,但我們的生態系統擴展仍存在著一個最頑固的障礙:

糟糕的使用者體驗。

想像一下,試著讓一個沒有任何區塊鏈經驗的普通人了解熱錢包或冷錢包、私鑰、Gas、授權、隨機數等各種細節。

現在,為了真正理解問題,讓我們更進一步,描繪出加密貨幣原住民已經習以為常的用戶體驗,如果應用到現實生活場景中會是什麼樣子:

imagine-a-world

想像這樣的世界,你必須為你在商店購買的每個物品簽名,失去你的銀行卡密碼意味著你失去所有的賬戶資金,以及你購買任何東西以後都永久無法撤銷。

幸運的是,我們有一個解決方案來解開行業內糟糕用戶體驗所造成的困惑——帳戶抽象化。賬戶抽象化著重於使用智慧合約賬戶(或通俗地稱為智慧賬戶),而不是外部擁有的賬戶(EOA),將交易和活動管理在區塊鏈上轉移到一個更適應性強的地方。

eoa-vs-ca

外部擁有的帳戶與智慧合約帳戶的差異簡介

通過使用智慧賬戶而不是EOA,你正在「抽象化」到一個更具多功能性的參與者來處理區塊鏈上的交易和活動。

智慧賬戶在其功能上比EOA 擁有無限的靈活性。每個智慧帳戶都可以在其代碼中定義不同的規則和配置。

我們透過網路的成熟過程中出現的抽象化看到,越來越複雜的原語被層疊到基礎設施堆疊中,導致了今天的現代網絡應用。這種將技術複雜功能打包成良好定義的模組的做法,大大簡化了世界各地網民的最終用戶體驗。

為了進一步說明抽象化,我們在下面提供了一個簡單的例子:

email example of abstraction

電子郵件抽象化範例,動態郵件讓你可以定時發送、客製化訊息、使用共同帳戶和MFA 等

顯然,我們在Web3的關鍵十字路口,建立更好的用戶體驗對於吸引下一波大量用戶至關重要。

從單點故障和資產託管問題到簡單地減少一個全新用戶開始的巨大阻力,我們必須朝著抽象化這些複雜性並推動所有用戶體驗更加流暢的未來前進。

為什麼選擇模組化合約帳戶

顯然,智慧帳戶是必需的,並且可以在其中建立無限的改進。不同的帳戶實現將不可避免地共享許多邏輯元件,如帳戶恢復、多重簽名支援和密鑰權限。這些組件的每一次新實施都會為實施它們的帳戶引入新的安全風險。

相反,正如今天流行的加密庫所做的那樣,可以對模塊化組件進行加固並最大限度地重複使用,以避免許多團隊獨立編寫複雜的帳戶代碼。正如安全格言所說:不要自己實現加密——這也適用於賬戶邏輯。這些組件可以被設計為插件,帳戶可以互換地安裝和互動這些插件,以添加所需的功能。

一旦多個帳戶開始使用多個外掛程式—如ERC-6900 所定義-就減少了對鏈上帳戶實現的供應商鎖定。用戶被保護免受單點故障的影響,如果需要或希望,可以將他們的帳戶更新到不同的實現,同時透過安裝在帳戶上的插件,保持他們現有功能的大部分。

在這兩大支柱——在可重複使用性和互通性上,開發者可以利用模組化帳戶和插件的開放生態系統,透過在帳戶功能和鏈上使用者體驗上的累積進展,加速開發。

介紹模塊化帳戶

modular-account

模組化帳戶

Alchemy 的模組化帳戶是一種企業級帳戶,旨在隨著用戶規模擴大而擴展,並且透過帳戶抽象化生態系統的持續發展保持未來的兼容性。

它具有可擴展性和強大的安全模型,以確保無需信任的、流暢的用戶體驗。我們在發布模塊化帳戶時附帶了兩個插件,這兩個插件促進了顯著的用戶體驗和安全性提升:多所有者插件和會話密鑰插件,以及提供了SDK 支持,以簡化整合和開發。模組化帳戶v1.0 與ERC-4337 v 0.6 和ERC-6900 v 0.7 相容。

我們很高興以寬鬆的開源許可證發布模塊化帳戶,並且在建構和推廣有助於發展帳戶抽像生態系統的公共產品方面保持積極態度。

模塊化帳戶示範:言之有物(Worth of Words)

worth of words onchain zk wordle game

鏈上零知識證明字詞遊戲

一個突出展示模組化帳戶提供的強大用戶體驗和安全特性的例子是我們構建的遊戲——言之有物。言之有物(Worth of Words)是一款「Wordle Battle Royale」風格的字詞遊戲,玩家互相競爭,猜測他們的秘密字眼。這款遊戲利用以下特點,提供類似Web2的遊戲體驗:

  • 使用會話密鑰插件的模組化帳戶,用戶只需簽名一次即可啟動新遊戲,然後在遊戲過程中安全地允許瀏覽器代表他們簽名交易,以實現無交易體驗。

  • ERC-4337 Gas 管理器,從使用者體驗中抽象化Gas

  • Alchemy 的Rundler,將UserOperations 中繼到底層網路。

  • 零知識證明,隱藏鏈上的字詞。

在這裡了解更多關於言之有物的資訊。

註:言之有物是Odaily 編者的翻譯,並非官方譯名。

技術深入解析

modular account technical deep dive diagram

模塊化帳戶技術深度探討圖表

模組化帳戶使用UUPSUpgradeable 代理模式,插件是單例合約。

模塊化帳戶的初次發布包括多個組件:

核心帳戶

基礎帳戶支援核心帳戶抽象化功能,包括Gas 抽象化和批次執行。其特性包括支援:

- ERC-4337 ,用於抗審查的帳戶抽象化。

- ERC-165 ,用於標準介面檢測。

- UUPSUpgradeable,用於帳戶可升級性,配合ERC-7201 實現安全儲存衝突抗性升級。

- 由插件觸發執行,當呼叫源自允許的插件時,按照帳戶的上下文執行邏輯。

- 安裝和卸載任何相容ERC-6900 的插件,不僅限於Alchemy 的。

- 查看函數,以取得帳戶的插件配置,包括已安裝的執行函數、驗證函數和鉤子。

- 插件執行的強順序保證。

- 接收ERC-721、ERC-777 和ERC-1155 代幣。如果沒有代幣接收器實現,合約帳戶不能透過OpenZeppelin 標準化的`safeTransfer`方法接收數字資產。

帳戶工廠

產生新模組化帳戶實例的帳戶工廠合約。這些參數可以由使用者指定,並用於提供一個確定性地址。使用CREATE 2 透過組合提供的鹽和帳戶指定的擁有者,為使用者產生反事實地址。

在生產中,我們預計某些用戶將被分配用於在反事實部署到其分配位址之前接收資產的位址。

帳戶插件

初始發布包括兩個相容ERC-6900 的外掛

多所有者插件

多所有者插件支援一個或多個EOA 帳戶或符合ERC-1271 標準的合約作為帳戶的所有者。該插件:

- 支援ECDSA 簽名驗證(標準EOA 簽名驗證)。

- 支援ERC-1271 簽名驗證(標準合約所有者簽署驗證)。

- 支援多個平等所有者,這些所有者對帳戶有相同的根訪問權。

- 實施EIP-712 ,允許客戶端以結構化和可讀的格式簽署提示。

- 為模組化帳戶的原生函數新增使用者操作和執行時間驗證功能,包括:

- installPlugin 和uninstallPlugin

  - upgradeToAndCall

- execute 和executeBatch

會話密鑰插件

會話密鑰插件允許新增會話密鑰,代表帳戶在預設規則下進行各種有限的操作。它們在提供鏈上安全防護的同時,改善使用者體驗,實現如無交易體驗和帳戶自動化等行為。會話密鑰僅在UserOperation 上下文中使用。該插件支援:

- 密鑰輪換,可以在保持權限不變的情況下更新密鑰。

- 有效期限/時間範圍規則,限制會話金鑰存取的指定時間範圍。

- 外部合約地址限制,限制會話密鑰能夠呼叫的外部合約地址。這種限制可能是允許清單、拒絕清單或兩者都不是。

- 外部合約方法限制,限制會話金鑰能夠呼叫的外部合約方法。

- ERC-20 支出限制(對於一個金鑰的總額,或以間隔刷新)。

- ETH/原生代幣支出限制(對於一個密鑰的總額,或按間隔刷新)。

- Gas 支出限制(對於一個密鑰的總額,或按間隔刷新)。預設情況下,不設定限制,有權限進行任何操作的會話密鑰可以消耗無限量的Gas。

- ERC-721 權限,可以透過合約方法限制(例如,允許safeTransferFrom(address, address, uint 256))以及地址限制來實現。

- 預設內部呼叫僅限定位。如果會話密鑰權限插件安裝時沒有初始指定外部呼叫限制,則所有外部呼叫將預設為禁止。

- 需要支付主規則,會話密鑰只能在使用特定支付主地址時用於驗證使用者操作。這是防止會話密鑰在Gas 上消費您的原生代幣的另一種方式,而不是Gas 限制。

帳戶庫

帳戶庫支援透過實現特定功能的可重複使用代碼來實現模組化帳戶和插件。

資料結構

  • LinkedListSetLib 實現了一個“鍊錶集合”,其中元素通過一個元素到下一個元素的映射來保存。這允許進行O( 1) 的新增、移除和包含操作,同時保持鏈上集合的可枚舉性。這種設定要求集合防止添加重複值,防止添加零值,並維護一個特殊值作為“哨兵”,用來標識清單的開始和結束。為了實現這一點,用戶可用的資料大小被減少到最多bytes 30 。

  • 除了支援這些高效操作外,庫還支援一種不需要前驅知識的較不高效的移除操作,該操作遍歷鍊錶以找到要移除的元素。

  • 此外,條目還支援「標誌」—這可以被認為是附加到條目上的額外值,類似於集合內每個元素的子映射。有14 位可用於標誌值,最低的兩位保留給哨兵實作和清單遍歷優化。

  • AssociatedLinkedListSetLib 幾乎與LinkedListSetLib 完全相同,除了它的條目保存在與帳戶關聯的儲存中。這個庫旨在被插件使用,如果插件希望在ERC-4337 驗證期間訪問或更新這些值,它們必須將值保存在與帳戶關聯的儲存中。

  • CountableLinkedListSetLib 擴充了LinkedListSetLib,允許多次加一個值。它使用14 個可用標誌位中的上字節(8 位)來追蹤這一點,並支援多達256 次地新增一個條目。這個庫不存在保存在關聯儲存中的版本。

  • 這些函式庫使用的通用類型和常量在Constants.sol 中定義。

  • PluginStorageLib 是一個更低級的函式庫,提供了使用不同數量的輸入資料作為鍵在地址關聯儲存中取得儲存槽的實用程式。

類型和轉換工具

  • FunctionReferenceLib 提供了一個使用者定義的值類型,旨在保存插件地址和函數id,用於呼叫插件函數。

  • CastLib 提供了用於在各種資料類型之間進行轉換和轉換的實用函數,包括集合值、函數指標和位址。

審計

我們採取了多階段的安全策略,Spearbit 在開發過程早期對模塊化帳戶協議進行了安全審查,隨後Spearbit 和Quantstamp 獨立地對當前版本的協議進行了審計。在任一審計中都未發現重大漏洞。

報告可分別從 Spearbit Quantstamp獲取。我們很高興能與Spearbit 和Quantstamp 合作,為希望在模組化帳戶和更廣泛的ERC-6900 生態系統上開發的團隊提供優惠的費率和服務。

安全與權限模型

讓我們探索四個關鍵領域,突出顯示模塊化帳戶的安全性和權限模型。

插件清單

外掛程式清單功能是ERC-6900 和模組化帳戶的關鍵方面,其靈感來自Android OS 權限系統。所有ERC-6900 插件都需要提供一個列表,列出插件運行所需的執行函數、鉤子和權限請求。這可以在帳戶安裝插件並授予這些請求的權限之前顯示給使用者。這在安裝時確定權限,防止任何意外的運行時行為。

Call 與DelegateCall

模組化帳戶只執行對外掛程式的呼叫(call),而不是代理呼叫(delegatecall)。代理程式呼叫在帳戶上下文中執行,沒有審計外掛程式碼,很難​​限制惡意外掛程式可能造成的損害。

模塊化帳戶呼叫流程

下面的圖表展示了透過模組化帳戶的呼叫路徑。左側的流程是來自ERC-4337 入口點的呼叫的UserOperation 路徑,右側的流程是來自所有其他來源的呼叫的運行時路徑,包括其他合約。

modular account call flow diagram

可升級性

模塊化帳戶在升級和儲存衝突方面被設計為具有未來的兼容性。具體來說:

  • 感謝EIP-7201 初始化儲存模式的使用,在升級到模組化帳戶以及從模組化帳戶升級時,不存在儲存衝突的風險。

  • 模塊化帳戶的次要版本變更將使用繼承的儲存模式來防止儲存衝突,而模組化帳戶的主要版本發布將使用不同的儲存槽。

基準測試

模組化帳戶在以太坊卷積(Rollups)上為最終用戶提供了業界最佳的成本,包括Arbitrum、Base 和Optimism。隨著我們繼續推動引導主流用戶上鍊所需的三個核心轉變,模塊化帳戶旨在為以rollup 為中心的未來提供一個經過優化的基礎原語。

vitalik three transitions diagram

具體來說,它經常犧牲調用數據使用量以增加執行成本,以便為最終用戶提供更便宜的體驗。此外,作為一個持久的使用者帳戶,模組化帳戶包含了無需許可的互通使用的安全措施,超越了當今流行的每個應用程式內嵌帳戶範式,以幫助推動一個無形和互通的未來。該帳戶針對日常使用進行了大量優化,某些安全特性在部署時增加了一些執行開銷。

為了測量成本,我們為智慧合約帳戶建立了一個全面的測試套件,用於準確的基於交易的費用測量和費用計算。您可以在這裡找到倉庫、完整方法論和完整結果。以下結果是在2024 年2 月18 日在Optimism 上進行的基準測試。

*LightAccount 不是模組化帳戶,添加它是為了參考業界最佳的智慧帳戶。

**ERC-6900 會話密鑰插件比其他產品提供了更強大的安全控制。

請注意,在針對rollup 的優化與針對第一層以太坊和側鏈的優化之間存在反向權衡。這些基準測試捕捉了在rollup 生態系統中測量的性能。

漏洞賞金計劃

隨著模組化帳戶的發布,我們也宣佈公開啟動Alchemy 的付費漏洞賞金計畫。漏洞賞金是安全工具箱的關鍵組成部分,我們很高興與生態系統安全研究人員合作並獎勵他們發現加固整體協議的機會。

從今天起,任何人都可以透過我們的HackerOne 託管漏洞賞金平台,報告模組化帳戶發布中任何套件的漏洞。要了解有關漏洞賞金計劃的更多信息,請參見HackerOne 上的概覽。

模塊化帳戶SDK PluginGen

Alchemy 的AccountKit,包含aa-sdk,是最廣泛使用的智慧帳戶開發開發者SDK,它抽象化了在智慧帳戶上建構的開銷和復雜性。從今天起,AccountKit 將為模組化帳戶提供一流的支持,包括多個所有者和會話密鑰插件。SDK 的3.0 版本大幅簡化了建置和提交UserOperations、管理反事實地址、升級到模組化帳戶以及使用高級功能如使用者會話的開銷。

此外,此次發布還包括PluginGen,它可以自動產生用於使用和利用插件的客戶端類,從插件清單中獲取任何ERC-6900 插件的信息。這使得基於使用者帳戶狀態的客戶端程式設計使用者體驗成為可能。

使用PluginGen 工具就像在 aa-sdk 中加入描述你的插件的PluginGenConfig,然後運行`yarn generate`一樣簡單:

展望未來

模塊化帳戶生態系統迭代

我們期待繼續與ERC-6900 社群合作,開發一個健壯的無需許可的插件和帳戶生態系統。我們很興奮地追求一些更廣泛的想法,包括:

- 基於安全模型建構,創建應用級權限概念作為插件級權限的組合。類比到web2,當安裝像WhatsApp 這樣的應用程式時,操作系統會請求一組權限,這組權限是應用程序,如WhatsApp,為了正確執行所需的特權,例如位置、相機、麥克風、聯絡人等。

鑑於現有圍繞插件基的權限的安全模型,我們想探索這如何擴展到應用級權限集。

- 繼續迭代,朝著最大程度硬化、最大程度優化的帳戶實現前進。我們興奮地探索簡化和優化操作的技術,並迭代數據模型以提高理解並降低最終用戶成本。

- 與團隊合作開發一個加速的互通插件生態系統。我們已經看到幾個開發團隊開始工作,我們期待看到生態系統能夠提出什麼用例。

通過設計良好的插件,可以在用戶體驗和用戶安全性上實現巨大的解鎖,這些都可以添加到現有帳戶上。

- 為下一波挑戰貢獻研發力量。需要落實許多匯聚的線索,以便能夠安全地將10 億用戶引入鏈上。我們期待看到的帳戶空間的兩個方面是跨鏈互通性和用戶隱私。這些進步很大程度上是基於推動零知識工程的極限,並將這些原語納入解決方案,如密鑰存儲鏈,以協助管理跨多個鏈部署的帳戶配置。

利用智慧賬戶和L2降低用戶成本

我們聽到的關於智慧帳戶最常見的批評之一是成本。隨著智慧賬戶生態系統的發展,我們很高興能夠與社區合作,證明實際上,智慧賬戶比今天的EOA 為最終用戶提供了更便宜的交易。

已經有幾種研究方法來降低這些成本,但我們在2024 年密切關注的一些方法包括:

資料呼叫壓縮(Calldata compression)

如上所述,L2的交易成本主要是L1資料可用性成本,而不是L2執行成本。因此,如果能透過增加執行成本來減少資料呼叫大小,通常可以降低總體成本。以太坊基金會的WAX 小組研究並原型化了UserOperation 壓縮,並取得了一些相當引人注目的結果,我們很高興看到這種技術被採納以提高操作效率。

簽名聚合(Signature aggregation)

實踐中,簽名聚合是一種透過將一束簽名聚合為單一固定開銷來降低資料可用性成本的類似技術。這裡的大多數討論都集中在BLS 簽名上,但實際上,這可以通過零知識證明擴展到其他簽名方案。我們很高興看到一些ERC-6900 插件支援BLS 簽名以及像zk-R 1 或zk-K 1 聚合的功能,以在非聚合橢圓曲線上獲得類似的結果。

Proto-Danksharding

隨著備受期待的EIP-4844 作為Dencun 硬叉的一部分落地,L2網路將能夠使用blob 空間發布L2資料調用,而不是將其儲存為L1資料調用。儘管估計各不相同,proto-Danksharding預計將大幅降低L2s上的交易成本。

致謝

模塊化帳戶的工作遠遠超出了Alchemy 的範疇。首先,我們要感謝數十位在ERC-6900 上工作和貢獻的開發者,他們推動了迭代,使開發者能夠安全地將10 億用戶引入鏈上。

特別感謝以太坊基金會帳戶抽象化團隊的Yoav Weiss 和Dror Tirosh,Circle 的可編程錢包團隊的Huawei Gu、Daniel Lim、Zhiyu Zhang 和Alokik Bhasin,以及Decipher Global 的Seungmin Jeon、Sangyeup Kim、Brynn Park 以及其他人員,他們在推動規範方面做出了非常有意義的努力。

此外,我們要感謝我們優秀的審計團隊。安全是處理合約帳戶時的基本條件。Spearbit 的Gerard Persoon、Riley Holterhus、Blockdev 和Christos Pap 以及Quantstamp 的Nikita Belenkov、Alejandro Padilla、Shih-Hung Wang 和Ruben Koch 在評估和改進模組化帳戶的實施和架構方面非常勤奮。

我們也要感謝a16z crypto 的工程團隊,特別是Daejun Park 和Matt Gleason,對智慧帳戶的早期形式驗證會議以及使用模塊化帳戶迭代作為Halmos 測試標準——進一步改善了安全姿態和圍繞安全智慧帳戶的開發思維。

最後,我們要感謝整個模組化帳戶生態系統支援討論和討論,推動空間的發展。在與更廣泛社群合作時,經歷了許多早期迭代和架構提案,我們想特別提及Safe、Biconomy、ZeroDev 和Rhinestone 的人們,他們經常提出極好的觀點和建議。

安全
技術
賬戶抽象