文章目錄
Abstract
作者將數據庫中成熟的sharding技術應用於區塊鏈,提高吞吐量。
- 改進了PBFT的性能,提高了單個shard的吞吐量
- 設計了一個高效的shard formation protocol
- 設計了存在惡意節點情況下通用的分佈式事務協議
作者的很多設計依賴於Intel的SGX。
Introduction
區塊鏈系統在分佈式的惡意環境中提供數據透明性、完整性、不可篡改性,爲了支持這些性質,區塊鏈難以擴展(節點數和TPS都比較低)。
目前有兩種擴展方式,一是使用可信任硬件,二是使用sharding技術。Elastico、OmniLedger、RapidChain都使用了sharding技術,不過侷限於加密貨幣,並不支持通用的交易。
作者將sharding應用於permissioned blockchain,使得區塊鏈網路支持更多的節點、支持更高的吞吐量(2000到4000每秒)。
並使區塊鏈應用不再侷限於加密貨幣。
sharding技術需要確保atomicity和isolation,也就是ACID中的原子性和獨立性。
由於傳統數據庫是crash-failure模型,而區塊鏈是Byzantine failure模型,因此不能直接應用,需要先解決三個問題:
- 擴展拜占庭共識算法
- 實現安全高效的shard formation(也就是將節點分到不同的shard的策略)
- 要處理coordinator是惡意節點的情況
第一個問題使用SGX消除拜占庭節點的equivocation行爲,將容錯率從(n-1)/3提高到(n-1)/2。除此之外還做了一些別的優化。
第二個問題,也是使用SGX產生隨機數,保證隨機分配。
第三個問題採用了兩段鎖和兩階段算法(BFT),支持惡意環境下的分佈式事務(cross-shard transacitons)。
Preliminaries
Sharding in Databases
數據庫中將數據庫分割成多個小數據庫,提高數據庫處理事務的能力。使用two-phase commit保證原子性,two-phase locking進行併發控制來隔離事務。
Blockchains Consensus Protocols
與傳統分佈式不同,網絡中可能存在拜佔停節點。
主要有兩種共識算法,一種是公鏈普遍採用的,比如PoW,另一種是PBFT的變體。
共識算法需要保證兩個重要的性質,一是liveness,也就是所有節點最終達成一致,二是safety,所有正常節點達成一致不產生分歧。
PoW共識算法在同步網絡中可以達到50%的容錯能力,而在部分同步網絡情況下迅速下降到33%的容錯能力。吞吐量低,但是很容易擴展到很多節點。
PBFT可以達到(n-1)/3的容錯率。共識速度塊,吞吐量高,但是較難擴展(因爲共識需要的消息是)
Trusted Execution Environment(TEE)
這裏不做介紹,稍後會寫一篇詳細介紹SGX。
Overview
Goals
- 支持大型網絡(像Bitcoin和Ethereum那麼大)
- 支持高吞吐量(像中心化的機構一樣,比如visa)
- 支持通用的應用(不只是加密貨幣的交易)
Challenges and Approach
要想支持高吞吐量,就得建立在permissioned blockchain基礎上,而permissioned blockchain需要BFT共識,無法擴展到大型網絡。
作者採用SGX提高了BFT共識的容錯能力(減小了shard的size),採用sharding技術支持大型網絡(在每一個小的shard內纔可以進行BFT共識),利用SGX將node分配到shard中。
作者通過使用2PC和2PL保證了cross-shard transaction的safety,在BFT shard上運行2PC保證了liveness。
System and Threat Model
…
Scaling Consensus Protocols
作者進行了一番比較之後決定擴展PBFT:
- 改進communication overhead
- 提高容錯能力
Reducing the number of nodes
如果能阻止拜占庭節點的equivocation行爲(也就是給不同的節點發不同的消息),就可以將容錯能力提高到.
作者採用了Attested Append-Only Memory方法(需要SGX)消除equivocation行爲,基於此實現了AHL(Attested HyperLedger)。
Optimizing commications
實驗證明只進行上述優化還是無法進行理想的擴展。作者發現是由於很多共識消息被丟棄了(隊列滿了),又提出兩點優化:
- 將Hyperledger Fabric原始的一個消息隊列分成兩個,一個用來處理交易請求,另一個用來處理共識消息,基於此實現了AHL+
- 當節點收到request時,不再進行廣播,而是隻將request轉發給leader(因爲之後PBFT中leader會進行廣播)
- 採用了Byzcoin中的優化,使用collector,將消息從降到,基於此實現了AHLR(Attested Hyperledger Relay)
Shard Formation
- 真正隨機分配
- 合理選擇shard的size
- 週期更新shard
Distributed Transactions
爲了safety,採用了2PC和2PL
爲了防止惡意的coordinator,使用了BFT reference committee®作爲coordinator,然後就是正常的2PC了。