
解讀 CKB 賬戶抽象生態:BTC Mass Adoption 的鋪路石
TechFlow Selected深潮精選

解讀 CKB 賬戶抽象生態:BTC Mass Adoption 的鋪路石
一文了解 Nervos (CKB) 的原生 AA 方案實現方式與相關生態建設。
撰文:霧月,極客 web3
編輯:Faust
自 2022 年 AA 敘事在以太坊社區火熱以來,賬戶抽象概念便流行於 Web3 社區。它實際上是一種關於賬戶體系的設計理念,旨在更高層次上建立標準,增強賬戶的功能性。而在以太坊等主流區塊鏈中,由於存在固定規則的限制,賬戶體系的靈活性和通用性非常差,比如說:
-
你的賬戶中要事先有 ETH 等 Gas Token,不然無法發起交易,顯然這對新賬戶非常不友好;
-
以 EVM 係為代表的公鏈僅支持單一的賬戶體系,其他公鏈或 Web2 用戶需要使用新的賬戶工具和入口。
此前在以太坊社區風靡一時的 EIP-4337 提案被認為可以解決上述問題,但受制於其技術模型、歷史包袱與生態發展、開發者認知等因素,EIP-4337 的修補方案更像是在打補丁,而不是從根本上解決問題;嘗試為 EVM 添加新操作碼的 EIP-3074,則被認為存在安全隱患,在解決舊問題的同時帶來了新問題,可行性備受爭議。
礙於各種原因,以太坊創始團隊在主網啟動之初,沒有對賬戶體系進行周全考慮,留下了大量的包袱,如:EOA 賬戶與合約賬戶分野、不支持無 gas 交易、不支持多種加密原語等。這些歷史包袱對以太坊 AA 路線圖的實施造成了明顯阻礙,甚至可以說,以太坊的 AA 方案並不能讓其賬戶體系超越後來的新公鏈,而只是在彌補兩者間的差距。如果一條公鏈在最初設計時就充分考慮賬戶設計,就不用像以太坊一樣走彎路了。
與 EVM 系公鏈所不同,Nervos 在設計之初就深入考慮了賬戶體系的問題,在進行了調研後,我們認為,Nervos 的賬戶體系更偏向 AA 的底層和本質,其 UTXO 賬戶模型及支持多種驗證方式的 OmniLock,從始至終都與 AA 的目標深度契合,且沒有歷史包袱,天生支持 BTC、ETH 乃至 Solana 等其他公鏈的賬戶體系。

此外,對於近期火熱的 BTCFi 而言,由於其本身就是為原生比特幣資產引入 Defi 等場景,要讓比特幣持有者獲得無縫的產品體驗,有必要兼容主流的比特幣錢包等周邊設施,而 CKB 的原生 AA 方案天然實現了這一點,為 BTCFi 的大規模採用創造了必要條件。
下面我們將從設計理念、系統架構、應用、生態等多個角度解讀 Nervos 的賬戶抽象體系。
比特幣 UTXO 與 Nervos 的 Cell 模型
大多數人都知道,基於 UTXO 模型的公鏈,其數據存儲結構並不基於「賬戶—餘額」體系,而採用了一種獨特的形式。具體而言,UTXO 像黃金一樣可以被熔化或鑄造,每次交易都會有舊的 UTXO 銷燬,新的 UTXO 誕生。此外,UTXO 數據並不存儲在某個集中式地址下,而是分散存儲在生成 UTXO 的那筆交易裡,要讀取過往區塊的記錄才能找到。
推薦閱讀:《走近 BTC:理解 BitVM 所需的背景知識(1)》

毫不誇張的說,比特幣開創了一種區別於傳統 Web2 平臺「賬戶 - 信息」體系的存儲範式,這可以解決狀態爆炸、數據讀寫效率低下、所有權模糊化的問題。在 UTXO 模型下,不同人的資產數據存儲位置與所有權劃分十分清晰,對並行 / 併發比較友好,也便於支持存儲租賃等功能,可以避開傳統賬戶體系的很多坑。
Nervos 公鏈的賬戶體系在設計之初,便充分吸收了比特幣 UTXO 的優點,其 Cell 模型實際上是比特幣 UTXO 的升級版,提供了圖靈完備的可編程性。此外,無論是 CKB 還是其他資產都是一等資產,並不像 EVM 公鏈一樣把原生資產與 ERC-20 區別對待。
CKB 的 Cell 在運作機理上與比特幣 UTXO 大致相同:都是被「鎖定腳本」和「解鎖腳本」驅動的,每個 UTXO/Cell 在產生時,都會有一個「鎖定腳本」,就像一道密碼鎖;而「解鎖腳本」是對應的密鑰,可以解開「鎖定腳本」。只要你能提交「鎖」對應的「密鑰」,其關聯的 UTXO 就會任你差遣。

但與比特幣 UTXO 不同的是,Cell 在鎖定腳本之上增設了「TypeScript」字段。如果說LockScript 是身份驗證器,決定你是否有資格改寫這個 Cell,那麼 TypeScript 就是附著在 Cell 中的智能合約,DEX、借貸協議的代碼都可以部署在 TypeScript 內。

如果開發者要在 CKB 上實現類似於 AMM 的流動性池,只需要在一個專用 Cell 的 TypeScript 中寫好合約代碼,然後在這個 Cell 的 Data 字段中,存放流動性池的狀態信息(比如池子裡各類資產餘額),之後用戶和 TypeScript 中的代碼交互就行了。
CKB 的這種設計在比特幣 UTXO 模型之上拓展出了更豐富的場景,可編程性強得多,且由於 CKB 本身採用 RISC-V 虛擬機,支持多種編程語言寫的程序,能夠支持的各種邏輯要遠比比特幣強大。
至於Cell 的鎖定腳本 LockScript,則與我們今天的核心話題 AA 正相關。因為 AA 所主張的一大特性,在於讓鏈上賬戶支持靈活多樣的身份驗證方式。對於 UTXO 而言,要實現這一功能,就要在充當身份驗證器的 LockScript 上下功夫,CKB 為此推出了專門支持多種身份驗證方案的 OmniLock 腳本。
下面讓我們來了解下 OmniLock 的具體設計。
OmniLock 與賬戶抽象
在前面我們曾提到,CKB 的 Cell 與比特幣 UTXO,其使用權限都是由鎖定腳本來定義的,LockScript 中會確定哪些人可以改寫這個 Cell,起到身份驗證的作用。為了支持多種認證方法,CKB 提供了名為OmniLock 的通用型鎖定腳本,可以兼容多種簽名算法和驗證機制。

OmniLock 將不同的驗證邏輯進行了模塊化處理,只要設置不同的參數,就可以靈活配置不同的驗證算法。用戶可以分別使用 BTC、ETH 甚至 WebAuthn 等賬戶、錢包 / 鑑權方式,直接操縱 CKB 鏈上的資產。
那麼 OmniLock 具體是怎麼實現和使用的?其實要通俗的解釋,OmniLock 是 Nervos 官方直接在 CKB 鏈上佈置好的一段代碼,這段代碼寫在了某個特定的 Cell 上,可以被其他 Cell 使用,就好像 EVM 公鏈中的「系統合約」一樣。如果某個 Cell 要使用 OmniLock,可以在自己的鎖定腳本中聲明引用 OmniLock。
下面我們可以通過一段偽代碼理解鎖定腳本和 OmniLock 的工作原理。
CKB 的鎖定腳本包含 Code hash、hash type 和 Args 三個字段,由於 Code hash 和 hash type 與本節內容關聯性不大,這裡不作解釋。下面我們著重介紹 Args 字段,通過對 Args 進行靈活配置,就可以使用 OmniLock 中定義好的不同驗證算法。

Args 字段對應的內容可以分為兩部分,一部分是 auth,專門用於身份驗證,其長度為 21 字節,包含 1 字節的 flag 標識符,以及 20 字節的鑑權數據。auth 的鑑權數據中包含一段預設好的公鑰哈希,只有公鑰哈希對應的公鑰主人才能通過身份驗證,有資格改寫 Cell 中的數據。
Auth 中的 flag 則是一個標識符,用於選擇不同的鑑權方式,此處說的鑑權方式不僅指密碼學驗籤,還包括信息處理等綜合流程:如 flag 為 0x01 時,代表以太坊外部消息的鑑權方式。除了以太坊,OmniLock 還支持 Bitcoin、Dogecoin、Tron、多籤等豐富的消息驗證形式。
Args 中的另一部分叫 Omnilock args,它就像一個按鈕,可以在 OmniLock 預設好的功能模式中進行選擇,如用管理員模式(如 USDT 的管理員凍結功能)、用於小額支付的 anyone-can-pay 模式(小額捐贈使用)、時間鎖模式等。Anyway,只要對 Omnilock args 進行調整,就可以使用 OmniLock 中預先寫好的不同功能。
綜上,我們可以在 Cell 鎖定腳本的 Auth 和 Omnilock args 字段輸入不同的參數,來選擇不同公鏈或平臺的身份驗證方法,為 CKB 引入多種多樣的身份驗證方式。當然,除了 OmniLock 中預先定義的幾種鑑權方式外,開發者也可以自行定義身份驗證方案。

Nervos 賬戶抽象生態:CCC、Mobit 和 JoyID
上面我們已經知道,OmniLock 是 Nervos 實現賬戶抽象的基礎,而基於 OmniLock 的錢包如 Mobit、.bit、Omiga 和中間件 CCC(Common Chains Connector)等則構成了 Nervos 豐富的 BTCFi 賬戶抽象生態,此外還包括提供安全隱私保護和身份管理服務的 DID 平臺 Did.id,以及去中心化 Dobs 資產交易平臺 Dobby 等。
AA 的良好特性給 BTCFi 生態應用也帶來了極大的便捷性,使得 CKB 生態內的項目可以直接支持 BTC 錢包交互,降低了使用門檻。在下文中,讓我們以具體的案例切入,來考察 CKB 的 AA 生態。

Common Chains Connector(CCC)
首先我們以 CCC 為例,這是一個錢包連接中間件,專門為錢包和 dApp 提供各種公鏈對 CKB 的可操作性。
下圖是 CCC 的連接窗口。這裡我們以 MetaMask 為例,如果你擁有一個以太坊賬戶,如何操作 CKB 鏈上的對應賬戶。

當使用 CCC 進行 CKB 鏈上交易時, 該 demo 會調起 MetaMask 錢包的personal_sign 方法來進行簽名,這種方法用於簽名一段不直接上鍊的文字消息。
我們可以看出該信息包含的內容是 CKB transaction 的一系列十六進制碼。通過 MetaMask 簽名後的消息,將被提交至 Nervos CKB 鏈上,並通過 OmniLock 等機制進行驗證。

而前面我們曾提,Nervos 本身就支持驗證以太坊的消息格式,可以說 CKB 從底層就考慮好了對接其他公鏈生態。對用戶而言,你可以通過既有的、熟悉的入口和工具進入 CKB 生態;
而對於開發者,Nervos 在底層定義好了 OmniLock 標準,並通過 CCC 抽象了多鏈錢包的實現細節,極大降低了開發難度,讓上層應用開發者可以更好地專注於上層業務邏輯的開發而不必過度關注於底層細節。
Mobit
Mobit 是基於 Nervos 的 DID 和資產管理平臺,如果用一個比喻,Mobit 就像是外界進入 Nervors 生態的一道大門,而這道大門的門檻很低。藉助 Mobit,用戶幾乎不需要任何前置知識,只需要一些簡單操作,就可以用其他公鏈的賬戶在 Nervos 生態中完成交互。
下圖是 Mobit 的連接窗口。可以看到目前 Mobit 已經支持多個主流公鏈的賬戶體系,且這個列表還在繼續擴張。

仍以 Metamask 錢包為例。連接後的界面同樣可以看到用戶的 EVM 和 CKB 地址,並展示該地址在 CKB 鏈上持有的 Token 和 DOBs 資產。

這裡說下 DOBs,它是 Nervos 生態中特有的,類似於 NFT 的資產,但 DOB 與 NFT 有本質不同。首先,DOBs 的數據完整保存在鏈上,可以看成是「全鏈 NFT」,而很多以太坊 NFT 的數據並未完整存儲在鏈上;
另外,每個 DOBs 都可以設置 Chatbot,可以與持有者進行對話等交互場景,隨著不同持有者各異的養成路徑,相比於傳統的 NFT,每個 DOBs 將具有更顯著的個體差異。
至於 Omiga 是 Nervos 生態中 DOBs 的交易平臺,用戶可以直接在 Mobit 的 Apps 界面一鍵跳轉進入。

Omiga 同樣利用了 Nervos 的賬戶抽象功能。

Mobit 的操作簡單、功能全面,將有助於 BTCFi 的交互。BTCFi 產品本質是為原生的比特幣資產提供多樣性的 Defi 體驗,能否兼容主流比特幣錢包將會是 BTCFi 周邊設施需要考慮的重要因素,而 CKB 目前已經做好了準備。
對 WebAuthn 的採用
WebAuthn是一種由萬維網聯盟(W3C)和 FIDO(Fast IDentity Online)聯盟共同開發的網絡標準,目標是提高用戶身份驗證的安全性、簡化登錄過程,減少對傳統密碼或私鑰的依賴。
一些主流的桌面或移動操作系統如 iOS 和 Android 中內置的密鑰管理軟件,可以使用本地的安全模塊或雲存儲來存儲密鑰並進行簽名。目前 WebAuthn 主流實踐中一般會支持 P-256,P-384,P-521 等,由於 Nervos 的 OmniLock 支持自定義的密碼學原語,所以也可以覆蓋這些。
以下是一些 WebAuthn 支持的客戶端:
-
Apple KeyChain:
-
Security Enclave: 蘋果的設備使用 Secure Enclave 來處理關鍵的加密操作,包括私鑰存儲和簽名。
-
iOS 和 macOS: 蘋果的系統可以使用鑰匙串 API 進行身份驗證和簽名操作,也可以通過 Face ID 或 Touch ID 進行用戶認證。
-
Windows Hello:
-
TPM(Trusted Platform Module): Windows 設備可以通過 Windows Hello 利用 TPM 進行私鑰生成和簽名。
-
生物認證: Windows Hello 支持指紋識別和麵部識別來驗證用戶身份。
-
Android Keystore:Android 設備可以利用硬件安全模塊進行密鑰存儲和簽名,通過生物特徵(如指紋或面部識別)進行認證。
-
Ubisoft Security Keys: 安全密鑰硬件設備,如 YubiKey,支持通過 USB 或 NFC 進行安全認證和簽名操作。
CKB 生態錢包 JoyID 就是利用 WebAuthn 技術所實現的應用。通過 JoyID,用戶可以直接通過生物識別(如指紋或面部識別)方式進行身份驗證,實現無縫且高安全性的登錄和身份管理。

Nervos 生態中的.bit 也是利用 Apple 的 WebAuthn 實現來登錄並使用區塊鏈的一個場景。

從上面的案例我們可以看出,CKB 的 AA 方案天生就支持其他公鏈和 Web2 用戶。對於廣大 Web2 用戶而言,支持 WebAuthn 是至關重要的,它擺脫了私鑰和助記詞管理的包袱,極大降低了使用門檻。越早在這個方向上發力的公鏈生態,在日後就越有優勢。
總結
以太坊受限於其歷史包袱問題,現有的 AA 解決方案基本治標不治本,無法從根源上解決問題;而Nervos 在啟動主網之初就充分顧及了賬戶體系的設計,提供了 OmniLock 功能,可以支持任意形式的身份驗證方式。
Nervos 的 Cell 模型實質上是對比特幣 UTXO 的功能拓展,其鎖定腳本可以支持多種驗籤算法,OmniLock 則以類似於系統合約的方式,支持任意 Cell 在鎖定腳本中直接調用,為廣大開發者和用戶提供了 Web2 級別的體驗;
目前 Nervos 賬戶抽象生態內已經有 CCC、Mobit、Joyid 等產品,基本比較完備;
BTCFi 本質是為原生的比特幣資產提供多樣性的 Defi 體驗,能否兼容主流比特幣錢包將會是 BTCFi 周邊設施需要考慮的重要因素,而 CKB 作為 BTCFi 生態中的重要設施,採取了包容並蓄的做法,儘可能在開發者側和用戶側都為 BTCFi 的 mass adoption 創造必要條件。
歡迎加入深潮 TechFlow 官方社群
Telegram 訂閱群:https://t.me/TechFlowDaily
Twitter 官方帳號:https://x.com/TechFlowPost
Twitter 英文帳號:https://x.com/BlockFlow_News














