Chainspace: A Sharded Smart Contracts Platform 論文閱讀
- Chainspace: A Sharded Smart Contracts Platform
- Contributions
- Data Model
- 運作邏輯
- 系統共識
- 結論
Chainspace: A Sharded Smart Contracts Platform
??Chainspace是一個去中心化的基礎設施,被稱為分布式賬本,它支持用戶定義的智能合約,并在其物件上執行用戶提供的交易,所有人都可以驗證智能合約交易的正確執行,該系統可擴展,通過分片狀態和事務執行,并使用分布式提交協議S-BAC來保證一致性,通過拜占庭容錯(BFT),以及極高的可擴展性、不可抵賴性和“區塊鏈”技術,Chainspace可以安全抵御試圖破壞其完整性或可用性屬性的節點子集,即使BFT失敗,也會有跟蹤惡意參與者的審計機制,我們介紹了Chainspace的設計、基本原理和細節;我們通過對系統的可擴展性和其他特征的評價來論證;我們演示了許多隱私友好型智能合約,用于智能計量、輪詢和銀行業務,并測量它們的性能,
Contributions
- 它提出了Chainspace,一個可以隨節點數量增加任意擴展的系統,可以容忍拜占庭式故障,并可以完全公開審計,
- 它提出了一種新的分布式原子提交協議,稱為S-BAC,用于跨多個拜占庭節點分片通用智能合約交易,并正確協調這些節點以確保安全性、活動性和安全性屬性,
- 本文介紹了執行計算的智能合約部分和檢查計算部分之間的區別,并討論了這種區別對支持隱私友好型智能合約的關鍵,
- 它提供了一個完整的實作和評估拜占庭分布式提交協議,S-BAC的性能,在一個真實的分布式節點集和在不同的事務負載下,
- 介紹了一些關鍵的系統和應用智能合約,并評估其性能,隱私友好型智能計量和隱私友好型投票的合同說明并驗證了對高完整性和高隱私性應用程式的支持,
??論文的貢獻,簡要說起來就是:作者自己定義了一套分片機制,提出了一套分布式原子提交協議: S-BAC:Sharded Byzantine Atomic Commit,作者把智能合約中執行計算的部分和驗證計算部分分開了,由用戶來執行計算,chainspace負責驗證,
個人覺得論文主要貢獻應該看兩個,一個是S-BAC,一個是將計算跟驗證分開,
Data Model
-
Objects
物件是Chainspace系統中保存狀態的原子結構,用 o 來表示一個物件,對 o 有如下操作:
? id(o): 通過加密生成的唯一識別符號,
? type(o): 標識物件的型別,
物件有active跟inactive兩種狀態
id之所以會提到加密,是為了利用加密之后碰撞的概率很小的特點,給每個object分配一個唯一的id, -
Contracts
智能合約,可以視為一種特殊的物件,包含如何操作智能合約定義的其他object的資訊,智能合約初始化了一組物件, -
Procedure
處理物件的邏輯,物件作為引數,可以有input和reference兩種身份,
? procedure會使input物件變無效,reference物件是只讀的,
? 邏輯會輸出output物件,
理解:可以當做是一個函式,輸入引數是object,允許只讀的參考(object),有輸出,本質上跟演算法的定義很接近,有輸入一定有輸出,有輸出不一定需要輸入, -
checker
每個智能合約都有一個checker,記為v,checker是單純的函式,回傳布林值, -
Transaction
交易,由一個或更多個procedure構成,是原子性的,
輸入必須是 active 的 objects,與一些參考object
輸出一系列 active 的output objects,
理解: 作者對transaction進行了邏輯上的拆分,通過子程序的執行,保證最終原子性,
資料結構在chainspace系統上的位置如下:

運作邏輯
-
首先,作者對交易進行了一個劃分,在資料結構層面上,將一個transaction劃分成了一系列 traces:

可以看到,一個Transaction由一系列trace組成,trace之間又具有依賴性, -
計算作業與驗證作業的劃分

- 第一個式子是表示:trace之間是串行的,下一個trace執行之前要更新objects的狀態,
- 第二個式子是表示:trace的合法性,依賴于dep的合法性 與 智能合約的checker 結果,
(這里作者把問題抽象了,實際上真的可以這么驗證嗎,而且 checker(v)作為一個函式,它的有效性和準確性存疑)
簡單來說,第一個sequence就是計算作業部分,第二個check就是驗證部分,實際上,計算部分跟驗證部分分開是有實體的,比如:位元幣,位元幣中的Proof of work共識所設計的puzzle,具備“Difficult to solve, easy to verify”的性質,它就將計算程序跟驗證程序分開了,但是論文所描述的場景,是基于智能合約的,而一般來說,要驗證一個智能合約的執行結果,除了完整的執行一遍,似乎沒有捷徑?此處存疑,
系統共識
論文所采用的共識系統如下:

??作者給這個共識起名叫做 Sharded Byzantine Atomic Commit (S-BAC),實際上,S-BAC就是一個BFT共識+兩階段提交(2PC)的程序,中間套了一層分片,
??這里要再次明確,chainspace 把交易計算和部分處理交易沖突的作業交給客戶端來干,系統的作業變成了驗證客戶端的執行是否合法,以及處理沖突,
object 到 分片的映射,一開始是用一個函式
?
(
o
)
\phi(o)
?(o)來表示的,后面chainspace又引入了系統智能合約來進行管理

結論
??論文最大的亮點,個人覺得是 objects 只能用一次的設定,通過這種存盤狀態的 objects 的一次性使用,能夠將智能合約并行的沖突判斷轉化為,判斷兩個智能合約是否用到了同一個 objects 作為輸入,其次chainspace將交易的計算與驗證一分為二,將計算交給用戶來執行,確實某種程度上能夠減少系統的開銷,
??但是論文也有一些缺點,首先是,論文對transaction的假設,是基于樂觀并發控制(資料庫名詞,optimistic concurrency control),簡單來說,事務在提交之前會檢查在事務讀取資料后,有沒有其他事務修改了該資料,如果有,正在提交的事務會進行回滾,然而此處論文僅提到了樂觀并發,對于回滾和悲觀并發沒有討論,
另外,將分片的 objects 看成資源的話,在chainspace系統中應該會存在死鎖的可能性,
??本文介紹的是分片中的一種:智能合約分片,除了對智能合約分片,區塊鏈系統中的分片還有基于UTXO模型的分片:Elastico(交易分片),Omniledger和rapidchain,基于Account/Balance模型的分片:Monoxide,Pyramid等,后續有時間再將學習程序放上來,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/272052.html
標籤:區塊鏈
