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.
翻译:控制链技术正面临一个可伸缩性的挑战, 这一点必须克服, 以保证更广泛地采用技术。 这个可伸缩性问题是由于使用协商一致算法来保证每个区块链链和每个区块内交易的总顺序。 然而, 总体秩序往往并不完全必要, 因为智能合同的重要先进应用并不要求所有操作的全序。 如果能够利用更宽松的秩序, 则可能实现更高得多的可伸缩性。 在本文中, 我们提议了一个新分发的同步数据类型, 叫做Set链, 大大改进了可伸缩性。 设置链中安装了一个只增长型的数据集, 其元素没有订购, 与常规的阻塞链操作不同。 当方便的时候, 设置一个同步障碍, 将一个永久的十倍数分配到经协商一致后增加的一组要素。 因此, 同一地区的两个操作没有被订购, 而不同地方的两种操作可以按其各自的行数排序。 我们提出了不同的Setconventical 执行Settilton, 证明其内部攻击的正确性和报告, 以更迅速的行进的行為, 。