設計一條好的底層公鏈,必須從技術角度、經濟角度、以及共識角度進行全方位的考量。咱們花了 4 期(第 16/ 17/ 18/ 19 期)向你們解釋了底層公鏈 CKB 技術實現中的關鍵點之一:Cell 模型。爲了讓你們更好的理解公鏈 CKB 的 Cell 模型,咱們爲你們帶來兩期小白都能讀懂的 Cell 模型文章。(PS:該篇是小白都能讀懂的 Cell 模型系列文章之一)
祕猿科技區塊鏈小課堂第 20 期編程
咱們先從區塊鏈鼻祖 Bitcoin 提及。Bitcoin 是一個點對點的電子支付系統,它的帳戶模型叫 UTXO,也就是未花費交易輸出(Unspent Transaction Output)。segmentfault
咱們能夠把 UTXO 當作一個帶鎖的盒子。是的沒錯,是一個盒子,而不是帳本,不要慌。這個盒子裏存放的是一個數字,用來表示這個盒子的面值。另外,這個盒子上還有一把鎖,只有擁有對應鑰匙的人,才能夠打開這個盒子。在進行轉帳時,全部者使用鑰匙打開鎖,接着從新找到另一個空盒子,將新的面額放進去,並配上一把屬於接收者的新鎖(私鑰)。如此一來,咱們能夠將交易過程簡單理解爲「打開盒子,取出裏面的錢,銷燬原來的盒子,放到另外的盒子裏」。區塊鏈
總結而言,在 Bitcoin 的帳戶模型中,盒子表示 UTXO,數據保存在 UTXO 中,而鎖(私鑰)用來表示全部權。spa
密碼學實在是一項偉大的發明,它把物理世界鎖的概念映射到了虛擬世界。設計
在理解 UTXO 模型後,咱們再來介紹一下 Account 模型,其中最出名的當屬 Account 模型的獨創 Ethereum。在 Ethereum 中 Account 模型存儲的也是數據,不過與 UTXO 不一樣的是,Account 中除了數據還有邏輯。所以,相對於比特幣腳本而言,他能夠執行更豐富的智能合約。對象
以 ERC-20 的智能合約爲例,咱們也能夠將它比喻成一個盒子,不過在這個盒子裏存的並非錢,而是一套複雜的邏輯和數字。與 UTXO 不一樣,Account 模型的盒子是一直被重複利用的,而且沒法打開。就像在盒子的出廠設置時,咱們就已經將一套邏輯寫到盒子裏,只留幾個固定的按鈕給外界,外界的用戶只有在特定的狀況下才能觸發這些按鈕。blog
Account 的特性就像一臺 ATM 提款機,當咱們須要轉帳時,就須要一張可以標示身份的銀行卡,以及對應的密碼,而後輸入轉帳金額以及收款方等信息,最後點擊轉帳。盒子在接受到這些信息以後,就會將對應的金額從轉帳發起方的餘額中扣除,在收款方的餘額中增長,並同步更新內部數據,用戶的金額會一直保存在盒子中。熟悉編程的同窗很快就會發現,Account 模型就是現實世界中的面向對象模型,具備圖靈完備的性質。繼承
在 Account 模型中,盒子負責保存邏輯和數據,而且藉此更完備的執行智能合約。出廠設置將邏輯寫入盒子後,就永遠沒法更改。若須要修改數據,只能經過外部的條件去觸發。全部人的錢都會集中記錄在盒子裏,交易過程當中,交易雙方只須要輸入交易信息便可,盒子負責處理和更新數據。圖片
接下來,咱們要有請出本篇文章的主角 Cell 模型,也許如今你對它還很陌生,不過我相信很快你就能熟悉它的設計了。get
Cell 是 CKB 的狀態儲存單位,咱們也能夠把 Cell 當作一個盒子。還記得咱們以前提到的 UTXO 模型麼?咱們把它的概念所有照搬過來,再施加一點小小的魔法,就能變成咱們的 Cell 模型。
UTXO 的盒子裏存放的只是數字,而在 Cell 模型中,咱們爲每一個盒子都帶上了一套邏輯,也就是說,Cell 盒子裏的數據不只能夠表示金額,還能夠承載其餘的信息和資產,好比虛擬貓咪等。
另外,UTXO 用的都是同一類型的普通鎖,而在 Cell 模型中,用戶能夠 DIY 本身的鎖,玩出不一樣的花樣,好比能夠是指紋或者刷臉的形式,是否是特別期待!
總結來講,Cell 模型是更通用的 UTXO 模型,它體如今兩個方面:
因此說 CKB 的 Cell 模型是繼承 Bitcoin 簡潔的 UTXO 模型,同時還吸取了 Ethereum 可編程的優勢。
可能有人會問,Cell 模型這樣的設計會有什麼優勢呢?咱們該怎樣更好的使用 Cell 模型呢?彆着急,接下來的文章中,繼續爲你們講解!