One of the criticisms often levelled at Bitcoin is its limited scripting capabilities, which restrict the complexity of smart contracts. If you ever speak to a crypto-bro, whether he can write a solidity smart contract or not, they will say that Bitcoin is a boomer coin because it can’t execute some arbitrary function on the base layer.
We’ve heard the superior technology pitch from other blockchains for years, but for some odd reason, the market doesn’t value that additional functionality.
Despite this lack of scripting, Bitcoin has maintained its position as a leading cryptocurrency, often recognised for its security and decentralisation.
Properties that have been Bitcoin sitting at 1 trillion dollars larger than its closest competitor imagine that?
Does that mean Bitcoin shouldn’t have new functionality and can stagnate? No, of course, the network has to improve over time, or it won’t be able to scale and adopt the next cohort of users without baulking under pressure.
The issue with adding more functionality to the base layer is that it comes with a trade-off between expressiveness and reliability; developers could either build a complex but unreliable smart contract or a very basic but reliable one.
To address this limitation, Simplicity, a long-in-the-pipeline project aimed at providing smart contract scripting language on Bitcoin, has started to make moves.
I guess the WEN 2020 was a bit too premature, and we had to tack on another four years only to see it deployed to a side chain testnet, but progress is progress, am I right?
Smart contracts and dumb outcomes
Bitcoin’s Script language is limited to combinations of digital signature checks, timelocks, and hashlocks. Despite these limitations, developers have been able to build protocols on-top of Bitcoin, such as the Lightning Network, State-chains and Ark, who have found ways to build on these primitive Bitcoin Scripts that lack the expressiveness needed for more complex smart contracts.
When you move to more expressive languages like Turing complete smart contract chains, you find unique challenges that make traditional programming languages unsuitable.
- All users must all agree on the result of a computation in all environments.
- Each participant in a smart contract must be aware of all possible results for all possible inputs to a program upfront.
- All users must be able to prevent denial of service attacks that would consume excessive memory or computation time.
- Each participant in a smart contract must be able to understand the costs of their program execution for all possible inputs upfront.
If you want a real-world example of how smart contracts can go array, a quick online search for “smart contract hacks” should return enough results to sober you up on the idea. You only have to look as far as the Ethereum Network and all the failed smart contracts with bugs and exploits to see the end result.
Bitcoin prides itself on being the world’s most secure network, and having smart contracts built that end up in funds being stolen or rendered unrecoverable due to logic errors, exploits and programs exceeding their resource limits wouldn’t be a good look; we’ll leave that honour to the altcoiners.
What is Simplicity?
Simplicity is a low-level programming language designed specifically for writing smart contracts in a way that enhances the security and verifiability of contracts on the Bitcoin network.
Developed as part of the Blockstream initiative, Simplicity is intended to make smart contract development more accessible while allowing for a wider range of contract types than traditional Bitcoin scripts.
The project concept was released in a whitepaper in 2017 to provide greater expressiveness and stronger safety assurances than Bitcoin Script and Ethereum’s EVM.
After seven years of research and development, the team has now transitioned Simplicity into a language that is operational and ready for practical testing on the Liquid testnet.
What is Simfony?
During the process of building Simplicity, a complementary “front-end” language called Simfony, came about to make Simplicity more accessible to developers, featuring a syntax similar to the Rust programming language while maintaining compatibility with Simplicity.
It abstracts some of the more complex aspects of Simplicity’s functional programming approach, aiming to streamline the process of writing contracts.
What Are The Key Features of Simplicity?
- Strong Typing: Unlike Bitcoin’s existing scripting language, which is stack-based and somewhat permissive, Simplicity enforces strict typing rules. This feature helps to eliminate certain classes of bugs and vulnerabilities often found in less strictly typed languages.
- Functional Paradigm: Simplicity is designed around a functional programming paradigm. This means that functions are first-class citizens in the language, making it easier to reason about contracts and their behaviour. Developers familiar with functional programming will find it easier to write, understand, and maintain Simplicity contracts.
- Composability: Contracts written in Simplicity can be composed to create more complex behaviours. This allows developers to build upon existing contracts and create new ones, fostering innovation within the ecosystem.
- Verifiability: One of the standout features of Simplicity is its emphasis on formal verification. Developers can mathematically prove that their contracts will behave as intended, providing a higher level of confidence in their functionality and security.
- Decoupled Execution: Simplicity allows for the separation of contract execution from the Bitcoin protocol itself. This means that while contracts can be executed on the Liquid Network, they can be designed to work with Bitcoin without being constrained by the limitations of Bitcoin’s native scripting language.
- Iterative development: A blockchain-based smart contract is immutable and leaves no room to correct mistakes. Simplicity addresses this problem by empowering users to create formal proofs of correctness for their smart contracts.
According to Samson Mow, CEO of JAN3 and formerly of Blockstream, Simplicity could eliminate the need for incremental protocol changes, such as BIPs for covenants or drivechains, as it natively enables a broad range of functionalities.
The Role of Simplicity in the Liquid Network
The Liquid Network, developed by Blockstream, is a federated sidechain designed to facilitate faster transactions, asset issuance, and more robust privacy features compared to the main Bitcoin chain.
It’s a fork of Bitcoin and has been a testing ground for many of Bitcoin’s previous upgrades as well as some that have never made their way to Bitcoin yet.
On October 9th, Simplicity, a new smart contracting language, was activated on the Liquid testnet.
The deployment of Simplicity to Liquid’s testnet represents a pivotal moment for the network, allowing developers to create more sophisticated financial instruments and decentralised applications (dApps).
Potential Applications
The introduction of Simplicity opens up a myriad of potential applications:
- Multi-Signature Contracts: Simplicity can simplify the development of advanced multi-signature arrangements, where funds can only be moved with the consent of multiple parties, enhancing security for organisations and individuals.
- Escrow Services: With Simplicity, creating smart contracts for escrow services becomes more accessible and more secure, allowing for automated trustless transactions between parties.
- Decentralised Exchanges (DEXs): By allowing for more complex order types and trade mechanisms, Simplicity can power DEXs that function on the Liquid Network, providing users with more options for trading Bitcoin and other assets.
- Custom Financial Products: Simplicity’s flexibility allows for the creation of bespoke financial products that cater to specific market needs, ranging from derivatives to insurance products.
From Simplicity to Simfony
While Simplicity brings a host of advantages, it also faces challenges. The learning curve for developers unfamiliar with functional programming may pose initial hurdles. Moreover, the community needs to be engaged in testing and using Simplicity extensively to uncover potential issues before widespread adoption.
The deployment of Simplicity to the Liquid Network’s testnet signifies a crucial step forward in Bitcoin’s evolution. By enabling more complex and secure smart contracts, Simplicity has the potential to bridge the gap between Bitcoin’s robust security model and the innovative capabilities seen in other blockchain ecosystems.
As developers explore the possibilities offered by Simplicity, we can anticipate a new wave of applications and financial products that could redefine how Bitcoin is utilised.
In the coming years, the synergy between Simplicity, Liquid, and Bitcoin’s established network could lead to a rich ecosystem of decentralised applications, further solidifying Bitcoin’s position not just as a store of value but as a versatile platform for innovation in the blockchain space.
Do your own research.
If you want to learn more about Simplicity, use this article as a starting point. Don’t trust what we say as the final word. Take the time to research other sources, and you can start by checking out the resources below.