2020
DOI: 10.48550/arxiv.2002.02710
|View full text |Cite
Preprint
|
Sign up to set email alerts
|

Formalising and verifying smart contracts with Solidifier: a bounded model checker for Solidity

Pedro Antonino,
A. W. Roscoe

Abstract: The exploitation of smart-contract vulnerabilities can have catastrophic consequences such as the loss of millions of pounds worth of crypto assets. Formal verification can be a useful tool in identifying vulnerabilities and proving that they have been fixed. In this paper, we present a formalisation of Solidity and the Ethereum blockchain using the Solid language and its blockchain; a Solid program is obtained by explicating/desugaring a Solidity program. We make some abstractions that over-approximate the wa… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1

Citation Types

0
3
0

Year Published

2022
2022
2023
2023

Publication Types

Select...
2

Relationship

0
2

Authors

Journals

citations
Cited by 2 publications
(3 citation statements)
references
References 25 publications
0
3
0
Order By: Relevance
“…To formally verify smart contracts, such framing conditions are provided with formal specifications of contracts. D Functional Annotations are functional pre-and post-conditions that specify what conditions must hold before and after a function executes [17,89,177]. Such annotations are defined with each function according to its specific functionality.…”
Section: User-specified Propertiesmentioning
confidence: 99%
See 1 more Smart Citation
“…To formally verify smart contracts, such framing conditions are provided with formal specifications of contracts. D Functional Annotations are functional pre-and post-conditions that specify what conditions must hold before and after a function executes [17,89,177]. Such annotations are defined with each function according to its specific functionality.…”
Section: User-specified Propertiesmentioning
confidence: 99%
“…In exchange for this expressive power, more work is typically needed to address useability issues, such as error messages that may come up if a property is not satisfied or the method is unable to establish the property even though it holds. bound π‘˜ where π‘˜ is the number of transitions taken from some initial state for violations of a given property [17]. If a certain property holds for the model within that bound, that is reported; if not, a counterexample is reported to help the user identify the mistake and correct bugs.…”
Section: Theoremmentioning
confidence: 99%
“…However, when it comes to contract-level properties, where an invariant needs to hold across an infinite sequence of transactions, these approaches suffer from low efficiency due to state explosion issues. Some solutions [21,16] trade soundness for efficiency, verifying properties up to a certain number of transactions.…”
Section: Introductionmentioning
confidence: 99%