Short Paper: Blockcheck the Typechain
Paper in 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

Author

Sergio Benitez

Stanford University

Jonathan Cogan

Stanford University

Alejandro Russo

Chalmers, Computer Science and Engineering (Chalmers), Information Security

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,

Subject Categories

Language Technology (Computational Linguistics)

Embedded Systems

Computer Systems

DOI

10.1145/3411506.3417600

More information

Latest update

1/5/2021 1