Reach: The DApp Language for Everyone

Christopher Swenor
Reach Platform
Published in
3 min readOct 6, 2019

People have been thinking about smart contracts since 1994. Bitcoin was released in 2009. Ethereum launched in 2013. Yet, it is now 2019 and blockchain has not lived up to its promise. Nobody actually uses blockchain. So you have to ask the question, Why? What is stopping blockchain from being mainstream? We believe, the root cause is that while there are tens of million developers in the world; only thousands have decided to attempt building decentralized applications (DApps). We believe blockchain’s success will only follow an increase in the order of magnitude of the number of developers.

Photo by Benjamin Voros on Unsplash

A majority of all transactions on any blockchain are from speculators trading on hype, not users making their lives better with blockchain. The blockchain needs killer apps, but apps aren’t just willed into existence. It requires all the developers of the world to see developing on the blockchain as being practical: this is our mission.

Today, we announce Reach.

Reach will enable tens of millions of developers to participate in the blockchain community, rather than only the thousands that participate today, by drastically lowering the barrier to entry into blockchain and drastically raising the productivity of DApp developers. A Decentralized Application that used to take months to develop will be able to be completed in weeks.

The Reach platform provides three services via a domain-specific language (DSL) for specifying DApps and a specialized compiler that projects the specification into the complete application while performing automatic verification of correctness properties.

High-Level Language

We allow the developer to write and think at the level of business logic, rather than at the level of the intricate details of a blockchain protocol. Our DSL uses a subset of JavaScript to specify the entire DApp: the smart contract, the clients run on the front-end, the servers run on the back-end, and all communication between each of the pieces. Since the entire specification is in a single language, we enable any developer to quickly create, reason about and deploy DApps.

Blockchain Agnostic

We represent the DApp with a generalized backend language, and we then use “connectors” to translate this backend language to the correct bytecode, while remaining faithful to the interfaces offered by actual networks. Our backend supports the ability to specify blockchain-specific functionality, where appropriate.

Safety Guarantees

We ensure that the DApp is free from errors without having to write tests of what the program should do. Instead, developers write down what their program must not do, and we ensure that these bad outcomes never occur. The compiler uses type-checking, A Normal-Form transformation, information-flow security, and end-point projection to derive each component correctly from the single specification. The compiler is integrated with a satisfiability-modulo-theories (SMT) theorem prover (e.g. Z3) to automatically check the correctness of the application via developer-specific predicates, as well as automatically generated properties appropriate for all DApps.

Read more at our website: https://reach.sh

Dig into the code: https://github.com/reach-sh/reach-lang

Please join us to talk about it in our Telegram group: https://t.me/reachsh

We believe that blockchain is the future, and we believe that the Reach platform will help bring blockchain mainstream.

--

--