Rumour has it that you, a PL researcher, is interested in joint research with the Ethereum Foundation in developing new programming languages for writing Ethereum programs. Ever felt annoyed when industry doesn't listen to your hard-won PL wisdom? Ethereum aims to be the exception and, whenever possible, follow best practices in step with modern academic PL theory.
When it comes to PLT, we at Ethereum have convinced ourselves that, luckily, our desire for better smart-contract language(s) has substantial overlap with what PLT people already think about. So instead of growing our own PLT specialists, we prefer to collaborate with existing PLT people–-maybe you? Possible outputs from our collaboration are: peer-reviewed academic papers, technical reports, and/or implementations (prototypes as well as production-ready).
Ethereum is a suitable domain for implementing theoretically modern languages because:
Ethereum is a blockchain-based platform where users upload programs (called "smart contracts", "autonomous contracts", or "Dapps") to be executed by a globally viewable, bullet-proof, transparent, world computer. Unfortunately, dapp developers sometimes upload dapps with bugs. Then due to the transparent globally-readable nature of blockchains, this makes their dapps easy pickings for attackers to drain their stored ether (currency). We are seeking DSLs that permit extensive compile-time checks against common dapp bugs.
Goal: We wish to create a DSL that helps devs write short, simple, safe dapps, with the expectation that these techniques can later be scaled to more complex applications. Proposed properties for an improved dapp DSL are:
When designing a DSL, there's always a question of what capabilities to make front and center. Although dapps are rather diverse, there are common Ethereum design patterns, often in the financial (e.g., receiving and sending ether, multi-signature transactions) and cryptographic domains (e.g., verifying signatures).
To get a broader view of the Dapp ecosystem, see these listings:
Related languages
Ethereum has several handy developer tools. Most notably, these are:
If your language becomes popular, we would probably extend one of these existing IDEs to support your language and its various safety-checking.
Relative to other areas, the Foundation is weaker in PLT. But if you want to talk to people, we suggest:
Some of the cryptoeconomic community think it is immensely unwise for the EVM to be Turing complete. We disagree, and we prefer to give developers the full capabilities of Turing-Completeness. Then each developer can decide for zerself how much safety ze needs. If a developer wants more safety, ze can compile from an arbitrary Turing-incomplete language into the Turing-complete EVM.
As-is, the Ethereum Foundation is more interested in verifying properties of dapps than verifying compiler to EVM. We feel this way because the current EVM will eventually be replaced and we don't want you to spend your labor verifying something that will later be discarded. However, all future versions of the EVM will be Turing Complete.
However, if verified compilers are your thing, these will get you started:
Moon-lang is designed so that imported libraries cannot do harm (like accessing a private key that's accessible in the main program). It would be nice to have a proof (at least on paper) around this requirement.