The present programming languages used to code Blockchain are incapable of programming sophisticated smart contracts. There is always a trade-off between reliability and expressiveness, forcing programmers to go in for either a complex but unreliable or a basic but reliable smart contract.
Why does the crypto world feel the need for a language simpler than the existing Blockchain Script?
Blockchain technology in itself is a disruption that does not abide by the traditional programming codes. There are several unique assertions posed by blockchains:
- For every specific environment, all the users must agree on the conclusion of a computation. This blockchain consensus applies to all possible results for every possible input to a program upfront.
- All the users must be careful about service attacks consuming excessive energy and must be able to understand the costs involved in the program execution for all possible inputs.
Other existing challenges, such as:
- Programming languages designed explicitly for Blockchain, such as EVM, still face these challenges. Events such as an EVM upgrade failure during testing, unrecoverable or stolen funds due to contract logic errors prove the incapabilities of current languages.
- Bitcoin’s Script language isn’t expressive enough for smart contracts that are more complex and is limited to combinations of timelocks, hashlocks, and digital signature checks.
What is Simplicity?
“Only once in my life have I encountered a programming language that was too simple to use. That was Lispkit Lisp. I can now add a second system to the list of those that are too simple, the appropriately-titled Simplicity, developed by Russell O’Connor of Blockstream.”
~(Philip Wadler, A Review of Simplicity
What if we tell you there is an answer to the problem and you could get the best of both worlds with it? Simplicity, a typed combinator-based functional language with no loops or recursion, has been explicitly designed for cryptocurrencies and Blockchain applications. Developers can code sophisticated smart contracts such as side chains or independent blockchains using Simplicity’s features.
It is a low-level programming language and machine model for smart contracts based on Blockchain. It consists of simple semantics that lend themselves to static analysis and reasoning by formal methods. The core of the language is so simple that it can fit on a T-shirt though this doesn’t mean simplicity of development. The language is defined by its implementation in the Coq proof assistant.
What implications does it hold for Bitcoin and Blockchain?
Simplicity was proposed by Russell O’Connor in a paper for a possible replacement of Bitcoin Script called Simplicity. Here’s what he had got to say:
“[Simplicity] aims to improve upon existing crypto-currency languages, such as Bitcoin Script and Ethereum’s EVM, while avoiding some of the problems they face. Simplicity comes with formal denotational semantics defined in Coq, a popular, general-purpose software proof assistant.”
Simplicity can prove to be a turning point for Bitcoin and Blockchain in the distant future. Experts call it a ‘major step in the right direction for smart contracting languages.’
- A Blockchain programming model is fundamentally different from an ordinary programming model. In Blockchain, computations are verified rather than performed. As such, there is no requirement for Turing-completeness as even arbitrary codes can be verified using Simplicity. This can have powerful implications for Blockchain. Russell says, ‘Owing to its Turing incompleteness, Simplicity is amenable to static analysis that can be used to derive upper bounds on the computational resources needed, prior to execution. While Turing incomplete, Simplicity can express any finitary function, which we believe is enough to build useful “smart contracts” for blockchain applications.’
- After a smart contract has been deployed, there is no room for correcting mistakes. The language has addressed this problem. Simplicity empowers its users to create formal proofs of correctness for their smart contracts.
- Being an extremely low-level language to be used for direct execution, it can be expected that the users might write their contracts in high-level language/s to be compiled later to Simplicity.
- Simplicity can be a valuable approach to serve more than just a replacement for bitcoin script. Simplicity could also be used as a means to implement and prove runtime bounds over new modular consensus code. It could also be used for signing oracles or other such applications.
- Simplicity can assure higher security guarantees valuable for crypto trading platforms like WazirX (that show Bitcoin price in INR) as users can give proofs about their contracts to avoid logical errors in the program. It can also let the users reason about the correctness along with the performance of their contracts.
- Simplicity can open interesting applications such as vaults, trust-minimized escrow, and other complex smart contracts that can be valuable for any cryptocurrency and Bitcoin exchange in India and worldwide.
- It can help maintain the self-contained Bitcoin transactions of Bitcoin, which would help secure the nodes as programs will not have any access to information outside the transaction.
In many ways, Simplicity is best characterized by what features it leaves out rather than what features it contains. There can be innumerable fronts for Simplicity development in the future that could transform Blockchain coding. Simplicity, as a programming language, can provide the required flexibility and expressiveness for any kind of computations while simultaneously allowing the verification of safety, security, and cost of the smart contracts.
Also you can download the app and Start Trading Now!
Android App – Bitcoin Exchange
iOS App – Cryptocurrency Exchange