Smart contracts — computer protocols that regulate the exchange of crypto- assets in trustless environments — have become popular with the spread of blockchain technologies. A landmark security property of smart contracts is liquidity: in a non-liquid contract, it may happen that some assets remain frozen, i.e. not redeemable by anyone. The relevance of this issue is witnessed by recent liquidity attacks to Ethereum, which have frozen hundreds of USD millions. We address the problem of verifying liquidity on BitML, a DSL for smart contracts with a secure compiler to Bitcoin, featuring primitives for currency transfers, contract renegotiation and consensual recursion. Our main result is a verification technique for liquidity. We first transform the infinite-state semantics of BitML into a finite-state one, which focusses on the behaviour of a chosen set of contracts, abstracting from the moves of the context. With respect to the chosen contracts, this abstraction is sound, i.e. if the abstracted contract is liquid, then also the concrete one is such. We then verify liquidity by model-checking the finite-state abstraction. We implement a toolchain that automatically verifies liquidity of BitML contracts and compiles them to Bitcoin, and we assess it through a benchmark of representative contracts.

Verifying liquidity of recursive Bitcoin contracts / Bartoletti, Massimo; Lande, Stefano; Murgia, Maurizio; Zunino, Roberto. - In: LOGICAL METHODS IN COMPUTER SCIENCE. - ISSN 1860-5974. - 18:1(2022), pp. 2201-2233. [10.46298/lmcs-18(1:22)2022]

Verifying liquidity of recursive Bitcoin contracts

Murgia, Maurizio;Zunino, Roberto
2022-01-01

Abstract

Smart contracts — computer protocols that regulate the exchange of crypto- assets in trustless environments — have become popular with the spread of blockchain technologies. A landmark security property of smart contracts is liquidity: in a non-liquid contract, it may happen that some assets remain frozen, i.e. not redeemable by anyone. The relevance of this issue is witnessed by recent liquidity attacks to Ethereum, which have frozen hundreds of USD millions. We address the problem of verifying liquidity on BitML, a DSL for smart contracts with a secure compiler to Bitcoin, featuring primitives for currency transfers, contract renegotiation and consensual recursion. Our main result is a verification technique for liquidity. We first transform the infinite-state semantics of BitML into a finite-state one, which focusses on the behaviour of a chosen set of contracts, abstracting from the moves of the context. With respect to the chosen contracts, this abstraction is sound, i.e. if the abstracted contract is liquid, then also the concrete one is such. We then verify liquidity by model-checking the finite-state abstraction. We implement a toolchain that automatically verifies liquidity of BitML contracts and compiles them to Bitcoin, and we assess it through a benchmark of representative contracts.
2022
1
Bartoletti, Massimo; Lande, Stefano; Murgia, Maurizio; Zunino, Roberto
Verifying liquidity of recursive Bitcoin contracts / Bartoletti, Massimo; Lande, Stefano; Murgia, Maurizio; Zunino, Roberto. - In: LOGICAL METHODS IN COMPUTER SCIENCE. - ISSN 1860-5974. - 18:1(2022), pp. 2201-2233. [10.46298/lmcs-18(1:22)2022]
File in questo prodotto:
File Dimensione Formato  
verifying liquidity of recursive bitcoin contracts.pdf

accesso aperto

Tipologia: Versione editoriale (Publisher’s layout)
Licenza: Creative commons
Dimensione 630.12 kB
Formato Adobe PDF
630.12 kB Adobe PDF Visualizza/Apri

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/11572/330206
Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus 2
  • ???jsp.display-item.citation.isi??? 2
social impact