文章目录
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的容错率。共识速度块,吞吐量高,但是较难扩展(因为共识需要的消息是