Model-Based Static and Runtime Verification for Ethereum Smart Contracts. Azzopardi, S., Colombo, C., & Pace, G. In Hammoudi, S., Pires, L., & Selić, B., editors, Model-Driven Engineering and Software Development, pages 323–348, Cham, 2021. Springer International Publishing.
abstract   bibtex   1 download  
Distributed ledger technologies, e.g. blockchains, are an innovative solution to the problem of trust between different parties. Smart contracts, programs executing on these ledgers present new challenges given their non-traditional execution context – blockchains. The immutability of smart contracts once they are deployed makes their pre-deployment correctness essential. This can be achieved through verification methods, which attempt to answer conclusively whether the code respects some specification. Another approach is model-driven development, where the specification is used directly to create a correct-by-const-ruction implementation. A specification may however still need to be verified to ensure it satisfies some properties. Verifying properties pre-deployment is ideal, however it may not always be possible to do completely, depending on the complexity of the smart contract. Traditionally upon failure of a verification attempt the only option is to attempt a different verification method. Recent approaches instead enable the transformation of the verification problem into a smaller problem, reducing the load of subsequent verification attempts. We have previously proposed an automata-theoretic approach to reason systematically about this kind of residual analysis for (co-)safety properties, while we have implemented an intraprocedural data-flow approach for Java programs. In this paper we extend our approach for Solidity smart contracts, present a corresponding tool, evaluate the approach with several new case studies, and compare it with existing approaches.
@InProceedings{10.1007/978-3-030-67445-8_14,
	author="Azzopardi, Shaun
	and Colombo, Christian
	and Pace, Gordon",
	editor="Hammoudi, Slimane
	and Pires, Lu{\'i}s Ferreira
	and Seli{\'{c}}, Bran",
	title="Model-Based Static and Runtime Verification for Ethereum Smart Contracts",
	booktitle="Model-Driven Engineering and Software Development",
	year="2021",
	publisher="Springer International Publishing",
	address="Cham",
	pages="323--348",
	abstract="Distributed ledger technologies, e.g. blockchains, are an innovative solution to the problem of trust between different parties. Smart contracts, programs executing on these ledgers present new challenges given their non-traditional execution context -- blockchains. The immutability of smart contracts once they are deployed makes their pre-deployment correctness essential. This can be achieved through verification methods, which attempt to answer conclusively whether the code respects some specification. Another approach is model-driven development, where the specification is used directly to create a correct-by-const-ruction implementation. A specification may however still need to be verified to ensure it satisfies some properties. Verifying properties pre-deployment is ideal, however it may not always be possible to do completely, depending on the complexity of the smart contract. Traditionally upon failure of a verification attempt the only option is to attempt a different verification method. Recent approaches instead enable the transformation of the verification problem into a smaller problem, reducing the load of subsequent verification attempts. We have previously proposed an automata-theoretic approach to reason systematically about this kind of residual analysis for (co-)safety properties, while we have implemented an intraprocedural data-flow approach for Java programs. In this paper we extend our approach for Solidity smart contracts, present a corresponding tool, evaluate the approach with several new case studies, and compare it with existing approaches.",
	isbn="978-3-030-67445-8"
}

Downloads: 1