Blockchain technologies are facing a scalability challenge, which must be overcome to guarantee a wider adoption of the technology. This scalability issue is due to the use of consensus algorithms to guarantee the total order of the chain of blocks and of the transactions within each block. However, total order is often not fully necessary, since important advanced applications of smart-contracts do not require a total order among all operations. A much higher scalability can potentially be achieved if a more relaxed order can be exploited. In this paper, we propose a novel distributed concurrent data type, called Setchain, which improves scalability significantly. A Setchain implements a grow-only set whose elements are not ordered, unlike conventional blockchain operations. When convenient, the Setchain allows forcing a synchronization barrier that assigns permanently an epoch number to a subset of the latest elements added, agreed by consensus. Therefore, two operations in the same epoch are not ordered, while two operations in different epochs are ordered by their respective epoch number. We present different Byzantine-tolerant implementations of Setchain, prove their correctness and report on an empirical evaluation of a prototype implementation. Our results show that Setchain is orders of magnitude faster than consensus-based ledgers, since it implements grow-only sets with epoch synchronization instead of total order. Since Setchain barriers can be synchronized with the underlying blockchain, Setchain objects can be used as a sidechain to implement many decentralized solutions with much faster operations than direct implementations on top of blockchains. Finally, we also present an algorithm that encompasses in a single process the combined behavior of Byzantine servers, which simplifies correctness proofs by encoding the general attacker in a concrete implementation.
翻译:区块链技术面临可扩展性挑战,必须克服这一难题才能确保该技术的更广泛应用。可扩展性问题源于使用共识算法来保证区块链及块内交易的全序。然而,全序往往并非完全必要,因为智能合约的重要高级应用并不要求所有操作之间的全序。如果能够利用更宽松的顺序,则有可能实现更高的可扩展性。本文提出一种新型分布式并发数据类型——Setchain,它显著提升了可扩展性。Setchain实现了一个仅追加集合,其元素不按顺序排列,这与传统区块链操作不同。在方便时,Setchain允许强制同步屏障,该屏障通过共识为最新添加的元素子集永久分配纪元编号。因此,同一纪元内的两个操作无序,而不同纪元中的两个操作则按其各自的纪元编号排序。我们提出了Setchain的不同拜占庭容错实现,证明了其正确性,并报告了原型实现的实证评估结果。结果表明,由于Setchain采用纪元同步而非全序实现仅追加集合,其速度比基于共识的账本快数个数量级。由于Setchain屏障可与底层区块链同步,Setchain对象可用作侧链,实现许多比直接在区块链上实现更快操作的去中心化方案。最后,我们还提出一种算法,该算法在单一进程中涵盖拜占庭服务器的组合行为,通过将通用攻击者编码为具体实现来简化正确性证明。