在上一篇《 小白都能看懂的 Cell 模型》中,咱們用大白話簡單介紹了 Cell 模型。在這篇文章中,咱們將會從「驗證模型」和「狀態存儲」兩個方面來介紹 Cell 模型——一個適合分層架構的區塊鏈設計
祕猿科技區塊鏈小課堂第 21 期segmentfault
首先咱們來簡單回顧一下區塊鏈的發展歷史:Bitcoin 做爲一種點對點的電子現金系統應運而生,然後出現了更通用的去中心化應用平臺 Ethereum,隨着區塊鏈的發展,各類各樣的新項目也涌現了出來。在分析 Cell 模型設計以前,咱們先了解一下區塊鏈的分層理念。緩存
在區塊鏈的發展過程當中,始終有一座大山橫亙在咱們面前:擴展性問題。區塊鏈若是不能解決擴展性問題,將會嚴重限制鏈上應用的發展。由於安全、擴展性、去中心化這個不可能三角問題的存在,在不犧牲安全和去中心化的前提下,要在 Layer 1 上解決擴展性問題幾乎是不可能完成的任務,所以咱們只能繞道而行,選擇分層方案。安全
隨着區塊鏈慢慢被更多人使用,它必然會面臨狀態爆炸的問題,如果將全部的信息都存儲在區塊鏈上顯然是不合理的。網絡
在經濟學上判斷一項技術可否被大規模使用的標準是:是否節約了全社會的交易成本。在區塊鏈中全部交易和存儲都須要通過全網共識,這就使得交易費用相對昂貴。從這個角度來說,分層架構也是必然的選擇。架構
這裏類比一個計算機的例子:在計算機中有各類存儲設備,包括寄存器、多級緩存、內存、硬盤,運行速度越快的設備價格越高,但正是計算機充分利用了分層設計,才使得它以更低成本被製造並被大衆所接受。區塊鏈
在區塊鏈中一樣如此,安全和去中心化是很是昂貴的,分層能夠下降成本,使其成爲一種更普世的基礎設施。因此當咱們在思考如何去設計區塊鏈時,就須要設想將來的場景,它應該是一個分層的區塊鏈。設計
不知道以上的分析是否會幫助你理解區塊鏈的分層呢?在此基礎之上,咱們來介紹爲何選擇使用 Cell 模型的設計。繼承
Bitcoin 的 UTXO 模型只能做爲數字貨幣,並不是通用的模型,因此這裏咱們主要對比 Account 模型和 Cell 模型。內存
Cell 模型繼承了 UTXO 的衣鉢,是一種驗證模型;而 Account 模型是一種計算模型。關於驗證模型和計算模型的論戰歷來沒有中止過,今天咱們就從另一個角度來審視這個問題。get
現有的 Layer 2 方案,包括閃電網絡,雷電網絡,Plasma 等,在將其 Layer 2 上的資產退回到 Layer 1 時,都採用了提交證實、驗證挑戰的機制。因此 Layer 1 更像是一個法院的角色,經過對用戶提交的證實來進行審判。在這種模式下,Layer 1 更多的是擔任了驗證者的角色,而非計算者。從這一層面來說,Layer 1 更適合採用 Cell 模型,而 Account 模型在計算上更勝一籌。
在 Ethereum 中狀態存儲的問題已經很是嚴重,全節點的數據存儲代價已經很高,且其中保存有大量的殭屍帳號。在 Account 模型中,同一合約的全部用戶的資產都是保存在一個帳號中的,將用戶的狀態拆分很是困難。在 Ethereum 中,交易採用的一次付費永久保存的方式,顯然是不合理的。
區塊鏈做爲一種公共基礎設施,更適合以租用的方式來進行付費,即數據的存儲須要持續付費。
從上面的分析中咱們能夠看出,Cell 模型是適合分層架構的區塊鏈設計,擁有靈活驗證、合理的狀態存儲制度的特性。