The adoption of blockchain based distributed ledgers is growing
fast due to their ability to provide reliability, integrity, and auditability
without trusted entities. One of the key capabilities of these emerging
platforms is the ability to create self-enforcing smart contracts. However,
the development of smart contracts has proven to be error-prone in practice,
and as a result, contracts deployed on public platforms are often
riddled with security vulnerabilities. This issue is exacerbated by the design
of these platforms, which forbids updating contract code and rolling
back malicious transactions. In light of this, it is crucial to ensure that a
smart contract is secure before deploying it and trusting it with significant
amounts of cryptocurrency. To this end, we introduce the VeriSolid
framework for the formal verification of contracts that are specified using
a transition-system based model with rigorous operational semantics.
Our model-based approach allows developers to reason about and verify
contract behavior at a high level of abstraction. VeriSolid allows the
generation of Solidity code from the verified models, which enables the
correct-by-design development of smart contracts
|