Resources: A Safe Language Abstraction for Money

04/10/2020
by   Sam Blackshear, et al.
0

Smart contracts are programs that implement potentially sophisticated transactions on modern blockchain platforms. In the rapidly evolving blockchain environment, smart contract programming languages must allow users to write expressive programs that manage and transfer assets, yet provide strong protection against sophisticated attacks. Addressing this need, we present flexible and reliable abstractions for programming with digital currency in the Move language [Blackshear et al. 2019]. Move uses novel linear [Girard 1987] resource types with semantics drawing on C++11 [Stroustrup 2013] and Rust [Matsakis and Klock 2014]: when a resource value is assigned to a new memory location, the location previously holding it must be invalidated. In addition, a resource type can only be created or destroyed by procedures inside its declaring module. We present an executable bytecode language with resources and prove that it enjoys resource safety, a conservation property for program values that is analogous to conservation of mass in the physical world.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/08/2023

Capturing Smart Contract Design with DCR Graphs

Smart contracts manage blockchain assets. While smart contracts embody b...
research
07/20/2018

Specification Mining for Smart Contracts with Automatic Abstraction Tuning

Smart contracts are programs that manage digital assets according to a c...
research
01/02/2018

Scilla: a Smart Contract Intermediate-Level LAnguage

This paper outlines key design principles of Scilla---an intermediate-le...
research
03/27/2020

An Empirical Study of Ownership, Typestate, and Assets in the Obsidian Smart Contract Language

Some blockchain programs (smart contracts) have included serious securit...
research
03/07/2018

Resource Polymorphism

We present a resource-management model for ML-style programming language...
research
07/19/2021

Compositional Verification of Smart Contracts Through Communication Abstraction (Extended)

Solidity smart contracts are programs that manage up to 2^160 users on a...
research
08/26/2019

Kindly Bent to Free Us

Systems programming often requires the manipulation of resources like fi...

Please sign up or login with your details

Forgot password? Click here to reset