作者:霧月,極客web3

編輯:Faust

自2022年AA敘事在以太坊社群火熱以來,帳戶抽象概念便流行於Web3社群。它實際上是一種關於帳戶體系的設計理念,旨在更高層次上建立標準,增強帳戶的功能性。而在以太坊等主流區塊鏈中,由於有固定規則的限制,帳戶體系的彈性和通用性非常差,比如說:

  1. 你的帳戶中要事先有ETH等Gas Token,不然無法發起交易,顯然這對新帳戶非常不友善;
  2. 以EVM系為代表的公鏈僅支援單一的帳戶體系,其他公鍊或Web2用戶需要使用新的帳戶工具和入口。

先前在以太坊社群風靡一時的EIP-4337提案被認為可以解決上述問題,但受制於其技術模型、歷史包袱與生態發展、開發者認知等因素,EIP-4337的修補方案更像是在打補丁,而不是從根本上解決問題;嘗試為EVM添加新操作碼的EIP-3074,則被認為存在安全隱患,在解決舊問題的同時帶來了新問題,可行性備受爭議。

礙於各種原因,以太坊創始團隊在主網啟動之初,沒有對帳戶體系進行周全考慮,留下了大量的包袱,如:EOA帳戶與合約帳戶分野、不支持無gas交易、不支持多種加密原語等。這些歷史包袱對以太坊AA路線圖的實施造成了明顯阻礙,甚至可以說,以太坊的AA方案並不能讓其帳戶體系超越後來的新公鏈,而只是在彌補兩者間的差距。如果一條公鏈在最初設計時就充分考慮帳戶設計,就不用像以太坊一樣走彎路了。

與EVM系公鏈所不同,Nervos在設計初就深入考慮了帳戶體系的問題,在進行了調查後,我們認為,Nervos的帳戶體系更偏向AA的底層和本質,其UTXO帳戶模型及支持多種驗證方式的OmniLock,從始至終都與AA的目標深度契合,且沒有歷史包袱,天生支持BTC、ETH乃至Solana等其他公鏈的帳戶體系。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

此外,對於近期火熱的BTCFi而言,由於其本身就是為原生比特幣資產引入Defi等場景,要讓比特幣持有者獲得無縫的產品體驗,有必要兼容主流的比特幣錢包等周邊設施,而CKB的原生AA方案天然實現了這一點,為BTCFi的大規模採用創造了必要條件。

以下我們將從設計理念、系統架構、應用、生態等多個角度解讀Nervos的帳戶抽象體系。

比特幣UTXO與Nervos的Cell模型

大多數人都知道,基於UTXO模型的公鏈,其資料儲存結構並非基於「帳戶—餘額」體系,而是採用了一種獨特的形式。具體而言,UTXO像黃金一樣可以被熔化或鑄造,每次交易都會有舊的UTXO銷毀,新的UTXO誕生。此外,UTXO資料並未儲存在某個集中式位址下,而是分散儲存在生成UTXO的那筆交易裡,要讀取過往區塊的記錄才能找到。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

毫不誇張的說,比特幣開創了一種區別於傳統Web2平台「帳戶-資訊」體系的儲存範式,這可以解決狀態爆炸、資料讀寫效率低下、所有權模糊化的問題。在UTXO模型下,不同人的資產資料儲存位置與所有權劃分十分清晰,對並行/並發比較友好,也便於支援儲存租賃等功能,可以避開傳統帳戶體系的許多坑。

Nervos公鏈的帳戶體系在設計之初,便充分吸收了比特幣UTXO的優點,其Cell模型實際上是比特幣UTXO的升級版,提供了圖靈完備的可編程性。此外,無論是CKB或其他資產都是一等資產,都不像EVM公鏈一樣把原生資產與ERC-20區別對待。

CKB的Cell在運作機制上與比特幣UTXO大致相同:都是被“鎖定腳本”和“解鎖腳本”驅動的,每個UTXO/Cell在產生時,都會有一個“鎖定腳本”,就像一道密碼鎖;而「解鎖腳本」是對應的密鑰,可以解開「鎖定腳本」。只要你能提交“鎖”對應的“密鑰”,其關聯的UTXO就會任你差遣。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

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

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

如果開發者要在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的通用型鎖定腳本,可以相容於多種簽章演算法和驗證機制。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

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中定義好的不同驗證演算法。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

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中預先定義的幾種鑑權方式外,開發者也可以自行定義身分驗證方案。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

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生態。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

Common Chains Connector(CCC)

首先我們以CCC為例,這是一個錢包連接中間件,專門為錢包和dApp提供各種公鏈對CKB的可操作性。

下圖是CCC的連線視窗。這裡我們以MetaMask為例,如果你擁有一個以太坊帳戶,如何操作CKB鏈上的對應帳戶。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

當使用CCC進行CKB鏈上交易時, 該demo會調起MetaMask錢包的personal_sign 方法來進行簽名,這種方法用於簽名一段不直接上鍊的文字訊息。

我們可以看出該資訊包含的內容是CKB transaction的一系列十六進位碼。透過MetaMask簽署後的訊息,將提交至Nervos CKB鏈上,並透過OmniLock等機制進行驗證。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

而前面我們曾提,Nervos本身就支援驗證以太坊的訊息格式,可以說CKB從底層就考慮好了對接其他公鏈生態。對使用者而言,你可以透過既有的、熟悉的入口和工具進入CKB生態;

而對於開發者,Nervos在底層定義好了OmniLock標準,並透過CCC抽象化了多鏈錢包的實現細節,大大降低了開發難度,讓上層應用程式開發者可以更好地專注於上層業務邏輯的開發而不必過度關注底層細節。

Mobit

Mobit是基於Nervos的DID和資產管理平台,如果用一個比喻,Mobit就像是外界進入Nervors生態的一道大門,而這道大門的門檻很低。借助Mobit,使用者幾乎不需要任何前置知識,只需要一些簡單操作,就可以用其他公鏈的帳戶在Nervos生態中完成互動。

下圖是Mobit的連線視窗。可以看到目前Mobit已經支援多個主流公鏈的帳戶體系,而這個清單仍在持續擴張。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

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

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

這裡說下DOBs,它是Nervos生態特有的,類似NFT的資產,但DOB與NFT有本質不同。首先,DOBs的資料完整地保存在鏈上,可以看成是“全鏈NFT”,而許多以太坊NFT的資料並未完整儲存在鏈上;

另外,每個DOBs都可以設定Chatbot,可以與持有者進行對話等互動場景,隨著不同持有者各異的養成路徑,相比於傳統的NFT,每個DOBs將具有更顯著的個體差異。

至於Omiga是Nervos生態中DOBs的交易平台,使用者可以直接在Mobit的Apps介面一鍵跳轉進入。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

Omiga同樣利用了Nervos的帳戶抽像功能。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

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,使用者可以直接透過生物辨識(如指紋或臉部辨識)方式進行身份驗證,實現無縫且高安全性的登入和身分管理。

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

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

解讀CKB帳號抽像生態: BTC Mass Adoption的鋪路石

從上面的案例我們可以看出,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創造必要條件。