Skip to content

Commit

Permalink
Draft problem statement for README
Browse files Browse the repository at this point in the history
  • Loading branch information
gnidan committed Nov 15, 2022
1 parent 6b8136a commit 1ba9c82
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,42 @@

_Because debugging on Ethereum is hard._

## Problem statement

Smart contracts offer the fundamental promise that code execution is verifiably
transparent. Not only is this necessary to ensure network liveness,
but this ability to _directly observe_ the step-by-step operation of the
Ethereum Virtual Machine (EVM) affords a foundation for public trust amongst
software developers, auditors, and end-users at large.

Unfortunately, direct observation of the EVM fails to connect
low-level system behavior with any code authors' original framework of
meaning. Humans usually write programs in high-level languages that they must
compile to a form the machine can execute. It is
_extremely impractical_ to reason about the machine-code that compilers
output and the system behavior that results upon executing this code.

Traditional computing platforms have largely solved this problem through the
design, standardization, and use of **debugging data formats**[^1], which allow
compilers a mechanism to specify precisely how to translate a program as the
machine runs it into a program as the human wrote it. Several such formats
exist in use today, most notably DWARF[^2], and these allow ubiquitous
software integration between compilers, editors, and debuggers. Sadly, no existing
format suffices to cover the intrinsic differences present in smart contract
programming, let alone cover some of the architectural decisions that
high-level languages have made in response to the EVM's constraints.

Although it's straightforward to observe and replay the EVM directly,
understanding the EVM and the smart contracts running on it remains within the
domain of experts. Without a mechanism for machine-to-human translation,
smart contract software quality comes at a higher cost, and any promise of
trust risks erosion.

[^1]: See [Debugging data format -
Wikipedia](https://en.wikipedia.org/wiki/Debugging_data_format)

[^2]: See [DWARF - Wikipedia](https://en.wikipedia.org/wiki/DWARF)

## Purpose of this repository

This repository serves as a home for the working group to design
Expand Down

0 comments on commit 1ba9c82

Please sign in to comment.