TY - GEN
T1 - The consensus number of a cryptocurrency
AU - Guerraoui, Rachid
AU - Kuznetsov, Petr
AU - Monti, Matteo
AU - Pavlovi, Matej
AU - Seredinschi, Dragos Adrian
N1 - Publisher Copyright:
© 2019 ACM.
PY - 2019/7/16
Y1 - 2019/7/16
N2 - Many blockchain-based algorithms, such as Bitcoin, implement a decentralized asset transfer system, often referred to as a cryptocurrency. As stated in the original paper by Nakamoto, at the heart of these systems lies the problem of preventing double-spending ; this is usually solved by achieving consensus on the order of transfers among the participants. By treating the asset transfer problem as a concurrent object and determining its consensus number, we show that consensus is not necessary to prevent double-spending. We first consider the problem as defined by Nakamoto, where only a single process - -the account owner - -can withdraw from each account. Safety and liveness need to be ensured for correct account owners, whereas misbehaving account owners might be unable to perform transfers. We show that the consensus number of an asset transfer object is 1. We then consider a more general k-shared asset transfer object where up to k processes can atomically withdraw from the same account, and show that this object has consensus number k. We first establish these these results in the context of shared memory with benign faults, in order to properly understand the level of difficulty of the asset transfer problem. Then, we translate our result in the more practically relevant message passing setting with Byzantine players. We describe an asynchronous Byzantine fault-tolerant asset transfer implementation that is both simpler and more efficient than state-of-the-art consensus-based solutions. Our results are applicable to both the permissioned (private) and permissionless (public) setting, as normally their differentiation is hidden by the abstractions on top of which our algorithms are based.
AB - Many blockchain-based algorithms, such as Bitcoin, implement a decentralized asset transfer system, often referred to as a cryptocurrency. As stated in the original paper by Nakamoto, at the heart of these systems lies the problem of preventing double-spending ; this is usually solved by achieving consensus on the order of transfers among the participants. By treating the asset transfer problem as a concurrent object and determining its consensus number, we show that consensus is not necessary to prevent double-spending. We first consider the problem as defined by Nakamoto, where only a single process - -the account owner - -can withdraw from each account. Safety and liveness need to be ensured for correct account owners, whereas misbehaving account owners might be unable to perform transfers. We show that the consensus number of an asset transfer object is 1. We then consider a more general k-shared asset transfer object where up to k processes can atomically withdraw from the same account, and show that this object has consensus number k. We first establish these these results in the context of shared memory with benign faults, in order to properly understand the level of difficulty of the asset transfer problem. Then, we translate our result in the more practically relevant message passing setting with Byzantine players. We describe an asynchronous Byzantine fault-tolerant asset transfer implementation that is both simpler and more efficient than state-of-the-art consensus-based solutions. Our results are applicable to both the permissioned (private) and permissionless (public) setting, as normally their differentiation is hidden by the abstractions on top of which our algorithms are based.
KW - Blockchain
KW - Consensus
KW - Consensus number
KW - Distributed asset transfer
KW - Distributed computing
UR - https://www.scopus.com/pages/publications/85071010532
U2 - 10.1145/3293611.3331589
DO - 10.1145/3293611.3331589
M3 - Conference contribution
AN - SCOPUS:85071010532
T3 - Proceedings of the Annual ACM Symposium on Principles of Distributed Computing
SP - 307
EP - 316
BT - PODC 2019 - Proceedings of the 2019 ACM Symposium on Principles of Distributed Computing
PB - Association for Computing Machinery
T2 - 38th ACM Symposium on Principles of Distributed Computing, PODC 2019
Y2 - 29 July 2019 through 2 August 2019
ER -