作者:霧月,極客web3
編輯:Faust
自2022年AA敘事在以太坊社區火熱以來,賬戶抽象概念便流行于Web3社區。它實際上是一種關于賬戶體系的設計理念,旨在更高層次上建立標准,增強賬戶的功能性。而在以太坊等主流區塊鏈中,由于存在固定規則的限制,賬戶體系的靈活性和通用性非常差,比如說:
此前在以太坊社區風靡一時的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模型的公鏈,其數據存儲結構並不基于「賬戶—余額」體系,而采用了一種獨特的形式。具體而言,UTXO像黃金一樣可以被熔化或鑄造,每次交易都會有舊的UTXO銷毀,新的UTXO誕生。此外,UTXO數據並不存儲在某個集中式地址下,而是分散存儲在生成UTXO的那筆交易里,要讀取過往區塊的記錄才能找到。

毫不誇張的說,比特幣開創了一種區別于傳統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的具體設計。
在前面我們曾提到,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中預先定義的幾種鑒權方式外,開發者也可以自行定義身份驗證方案。

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

首先我們以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是基于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是一種由萬維網聯盟(W3C)和FIDO(Fast IDentity Online)聯盟共同開發的網絡標准,目標是提高用戶身份驗證的安全性、簡化登錄過程,減少對傳統密碼或私鑰的依賴。
一些主流的桌面或移動操作系統如iOS和Android中内置的密鑰管理軟件,可以使用本地的安全模塊或雲存儲來存儲密鑰並進行簽名。目前WebAuthn主流實踐中一般會支持P-256,P-384,P-521等,由于Nervos的OmniLock支持自定義的密碼學原語,所以也可以覆蓋這些。
以下是一些WebAuthn支持的客戶端:
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創造必要條件。
内容来源:PANews
財華網所刊載內容之知識產權為財華網及相關權利人專屬所有或持有。未經許可,禁止進行轉載、摘編、複製及建立鏡像等任何使用。
如有意願轉載,請發郵件至content@finet.com.hk,獲得書面確認及授權後,方可轉載。
下載財華財經APP,把握投資先機
https://www.finet.com.cn/app
更多精彩内容,請點擊:
財華網(https://www.finet.hk/)
財華智庫網(https://www.finet.com.cn)
現代電視FINTV(https://www.fintv.hk)