HELMHOLTZ: A Verifier for Tezos Smart Contracts Based on Refinement Types

08/30/2021
by   Yuki Nishida, et al.
0

A smart contract is a program executed on a blockchain, based on which many cryptocurrencies are implemented, and is being used for automating transactions. Due to the large amount of money that smart contracts deal with, there is a surging demand for a method that can statically and formally verify them. This article describes our type-based static verification tool HELMHOLTZ for Michelson, which is a statically typed stack-based language for writing smart contracts that are executed on the blockchain platform Tezos. HELMHOLTZ is designed on top of our extension of Michelson's type system with refinement types. HELMHOLTZ takes a Michelson program annotated with a user-defined specification written in the form of a refinement type as input; it then typechecks the program against the specification based on the refinement type system, discharging the generated verification conditions with the SMT solver Z3. We briefly introduce our refinement type system for the core calculus Mini-Michelson of Michelson, which incorporates the characteristic features such as compound datatypes (e.g., lists and pairs), higher-order functions, and invocation of another contract. successfully verifies several practical Michelson programs, including one that transfers money to an account and that checks a digital signature.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
01/07/2020

Albert, an intermediate smart-contract language for the Tezos blockchain

Tezos is a smart-contract blockchain. Tezos smart contracts are written ...
research
05/29/2020

WhylSon: Proving your Michelson Smart Contracts in Why3

This paper introduces WhylSon, a deductive verification tool for smart c...
research
06/07/2019

Smart Contract Design Meets State Machine Synthesis: Case Studies

Modern blockchain systems support creation of smart contracts -- statefu...
research
09/20/2021

Money grows on (proof-)trees: the formal FA1.2 ledger standard

Once you have invented digital money, you may need a ledger to track who...
research
08/23/2018

Runtime verification in Erlang by using contracts

During its lifetime, a program suffers several changes that seek to impr...
research
10/24/2018

Type-directed Bounding of Collections in Reactive Programs

Our aim is to statically verify that in a given reactive program, the le...
research
06/26/2019

Structural Contracts – Contracts for Type Construction Dependent Types to Ensure Consistency of Extra-Functional Reasoning

Targeting to use contract-based design for the specification and refinem...

Please sign up or login with your details

Forgot password? Click here to reset