CKB編程模型是帶狀態的圖靈完備的編程模型,它基于自己的虛擬機和獨有的Cell模型。CKB的編程模型主要包含狀態生成、狀態驗證以及狀態的存儲。
在Nervos CKB的設計中,跟其他去中心化應用不同的是,基于CKB的去中心化應用,其狀態的生成和驗證是分離的。也就是說,狀態的生成和驗證在不同的地方執行,且可以采用不同的算法實現。將狀態生成和驗證解藕為系統的擴展性和應用的大規模采用奠定了邏輯的基礎。
首先是狀態在鏈下生成(例如本地客戶端執行),新狀態生成后會被打包到交易并廣播到網絡。CKB的節點在鏈上執行驗證,輸入相同的前置狀態和用戶輸入,驗證結果是否跟交易輸出相同。客戶端生成的新狀態是交易的輸出,也是CKB中提到Cell。Cell是CKB中最基本的狀態存儲單元,這在下文的Cell模型會提及。
CKB的狀態生成和驗證分離的設計有幾個好處:由于交易輸入的是鏈下生成的新狀態(也就是結果),它無須在鏈上進行計算生成新狀態(這跟多數公鏈不同),這樣對應用來說,新狀態是確定的,在鏈上進行的交易只是驗證。此外,它還可以實現并行處理、實現更高效的資源利用(因為應用的邏輯被分離,且在不同地方執行)、更靈活的狀態生成等。
接下來重點介紹Cell模型,這是Nervos獨有的設計。
Cell是Nervos CKB中最基本的狀態存儲單元,用戶可以在其中包含任意的狀態,也是用戶擁有的資產。Cell由容量、數據、類型腳本、鎖定腳本字段組成。容量代表Cell的大小限制。數據主要是狀態數據在Cell中的存儲,它的總字節數不能大于Cell的容量。類型腳本就是驗證狀態的腳本,鎖定腳本則代表了Cell的所有權。
Cell存儲的是狀態,也是不可篡改的,每個Cell不能同時作為兩個不同交易的輸入,一旦用戶提供包含新狀態的Cell,存儲舊狀態的Cell會被標記為歷史數據。也就是說,所有包含新狀態的Cell代表了CKB的最新共同知識。
由于擁有類型腳本和鎖定腳本,Cell模型跟
比特幣的UTXO模型和
以太坊的賬戶模型相比,更加通用。UTXO模型使用鎖定腳本定義資產所有權,賬戶模型則根據余額來定義資產所有權。Nervos CKB通過類型腳本和鎖定腳本的設計,帶來一些好處,例如可以方便創建M-N多簽腳本,實現多重簽名;可以把閑置Cell租借給其他人,同時還擁有對Cell的所有權等。
最后是Nervos CKB的虛擬機。虛擬機是通過軟件模擬的擁有硬件系統功能的完整計算機系統,它運行在完全隔離的環境中。CKB虛擬機用于執行類型腳本和鎖定腳本,它使用的是標準的RISC-V指令集。
Nervos CKB虛擬機有兩個值得關注的特色:一是,它是一個跟密碼學操作無關的虛擬機;二是,它是一個面向硬件的指令集架構。這有什么好處?
跟以太坊不同的是,CKB虛擬機沒有將任何密碼學指令寫死在CKB虛擬機上。比特幣和以太坊都將密碼學原語寫死在協議中,如果需要新增密碼學原語,只能通過軟分叉或硬分叉方式實施。Nervos的CKB虛擬機能像普通腳本一樣部署和使用新密碼學原語。這樣就帶來了靈活性,例如dApp開發者可以在Nervos上使用新的加密技術,例如Schnorr簽名、BLS簽名、zkSNARKs等。
CKB虛擬機使用標準RISC-V指令集,也有利于其獲得更多的產業支持。此外,RISC-V是面向硬件設計的指令集,有穩定的特性,利于在無須硬分叉的情況下實現與生態系統的兼容性。
最后,來看看Nervos的交易過程。交易的本質是狀態的變化。Nervos的每筆交易都會導致Cell的轉移或更新。每筆交易的狀態變化要么全部成功,要么全部失敗。交易包括依賴、輸入以及輸出。依賴是指提供驗證交易所需要的只讀Cell。輸入則包含了Cell引用和證明。Cell引用指向交易中要被轉移或更新的Cell;證明主要用于驗證交易創建者交易權限。輸出就是狀態發生變化所產生的新Cell。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。