Short Paper: Blockcheck the Typechain
Paper i proceeding, 2020

Recent efforts have sought to design new smart contract programming languages that make writing blockchain programs safer. But programs on the blockchain are beholden only to the safety properties enforced by the blockchain itself: even the strictest language-only properties can be rendered moot on a language-oblivious blockchain due to inter-contract interactions. Consequently, while safer languages are a necessity, fully realizing their benefits necessitates a language-aware redesign of the blockchain itself. To this end, we propose that the blockchain be viewed as a typechain: a chain of typed programs-not arbitrary blocks-that are included iff they typecheck against the existing chain. Reaching consensus, or blockchecking, validates typechecking in a byzantine fault-tolerant manner. Safety properties traditionally enforced by a runtime are instead enforced by a type system with the aim of statically capturing smart contract correctness. To provide a robust level of safety, we contend that a typechain must minimally guarantee (1) asset linearity and liveness, (2) physical resource availability, including CPU and memory, (3) exceptionless execution, or no early termination, (4) protocol conformance, or adherence to some state machine, and (5) inter-contract safety, including reentrancy safety. Despite their exacting nature, typechains are extensible, allowing for rich libraries that extend the set of verified properties. We expand on typechain properties and present examples of real-world bugs they prevent.

digital currency

compiler

smart contract

programming language

type system

blockchain

typechain

safety

security

Författare

Sergio Benitez

Stanford University

Jonathan Cogan

Stanford University

Alejandro Russo

Chalmers, Data- och informationsteknik, Informationssäkerhet

PLAS 2020 - Proceedings of the 15th Workshop on Programming Languages and Analysis for Security

Vol. 13 November 2020 35-39
9781450380928 (ISBN)

15th ACM SIGSAC Workshop on Programming Languages and Analysis for Security, PLAS 2020
Virtual; online, USA,

Ämneskategorier

Språkteknologi (språkvetenskaplig databehandling)

Inbäddad systemteknik

Datorsystem

DOI

10.1145/3411506.3417600

Mer information

Senast uppdaterat

2021-01-05