50 research outputs found
Short Paper: Blockcheck the Typechain
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
Securing Smart Contract On The Fly
We present Solythesis, a source to source Solidity compiler which takes a
smart contract code and a user specified invariant as the input and produces an
instrumented contract that rejects all transactions that violate the invariant.
The design of Solythesis is driven by our observation that the consensus
protocol and the storage layer are the primary and the secondary performance
bottlenecks of Ethereum, respectively. Solythesis operates with our novel delta
update and delta check techniques to minimize the overhead caused by the
instrumented storage access statements. Our experimental results validate our
hypothesis that the overhead of runtime validation, which is often too
expensive for other domains, is in fact negligible for smart contracts. The CPU
overhead of Solythesis is only 0.12% on average for our 23 benchmark contracts
Using Objects of Measurement to Detect Spreadsheet Errors
There are many common spreadsheet errors that traditional spreadsheet systems do not help users find. This paper presents a statically-typed spreadsheet language that adds additional information about the objects that the spreadsheet values represent. By annotating values with both units and labels, users denote both the system of measurement in which the values are expressed as well as the properties of the objects to which the values refer. This information is used during computation to detect some invalid computations and allow users to identify properties o