Key Problems in Tooling and Languages

CTA: In these threads we attempt to inventory key areas of exploration that may exist in a particular discipline. These posts are living documents and it is our hope that the community will contribute to the list.

CTA: We need help identifying Key Problems in the Tooling and Languages space. Please help us! Here’s what we think a Key Problem looks like:

  • Provides direction for individual research efforts and projects
  • Is a broadly applicable question or problem statement
  • Requires many coordinated research efforts to answer or solve

How can we ease development in the blockchain space?

A recent survey with blockchain developers [1] shows that appropriate tool support is a real need, especially for testing. Other needs include: interactive debugging of smart contracts, easier ways to simulate network topologies as well as hostile environments, and the use of automatic verification tools to assess overall security.

Here are some avenues that the research community could begin exploring:

  • How to aid testing in the face of DeFi composability?
  • How to leverage formal methods in smart contract development?
  • How to ease launching tunable test nets?

What language abstractions do we need?

As programming languages evolve over time, different abstractions are proposed, leading to new programming paradigms. Programming languages for smart contract development, however, are heavily based on imperative general purpose languages and generally lack an identity of their own (exceptions exist; e.g., see Scilla). Solidity, for instance, is largely influenced by Javascript and C++; however, its semantics is very different from the other two. In such a setting, bugs are likely to occur (e.g. the DAO hack). To prevent them, languages in the blockchain space need an identity of their own, i.e., a characteristic syntax and semantics that closely model the execution environment of a blockchain, potentially hiding much of the underlying complexity.

Here are some avenues that the research community could begin exploring:

  • How can we make smart contract programming languages safe by design?
  • What blockchain-specific abstractions yield higher productivity, while not compromising on safety?

References
[1] Bosu, A, Iqbal A., Shahriyar R., and Chakraborty P.: Understanding the Motivations, Challenges and Needs of Blockchain Software Developers: A Survey, in Empirical Software Engineering (2019), 24:2636-2673.

4 Likes