Bitcoin to Get Smart Contracts


Bitcoin Simplicity smart contracts

MuSig, Taproot, Threshold Signatures and even scriptless scripts are some of the developments that might come soon-ish to bitcoin, all connected to signatures and getting them to do things or compressing them further.

Then there’s miniscript. “Why not call the subset of script, subscript instead of miniscript?” – someone asked Pieter Wuille, who in a joint effort with Andrew Poelstra, has come up with what he wanted to call descriptors.

“People found it too confusing,” he said, so we’re stuck with miniscript. At a very high level description, Wuille says:

“Bitcoin script is mostly useful for simple policies but there’s a lot more possible than what it is being used for. This is partly because it’s hard to make things interact well.

This sort of interaction could over time mean letting things like lightning client and a multisig client trivially interact without needing to read through all the protocol work…

We can define a subset of script which can be generically signed for, can be constructed easily, and can be analyzed easily, and as long as we don’t have common subexpressions it’s reasonably efficient for many use cases.”

So it is a bit of an improvement and maybe a slight extension of the current very limited bitcoin programming language called a script.

The Bitcoin Wizards?

With peace and quiet returning to bitcoin and old debates now settled and forgotten for the most part, prominent bitcoin developers are moving ahead with what can be described as a focus on bitcoin’s programmability.

Unlike ethereum which has loops, bitcoin has if/then, but not while/else. That was an intentional design choice by Satoshi Nakamoto, the unknown bitcoin inventor.

“Bitcoin Script has conditionals but no loops, thus all programs halt and the language is not Turing complete,” says Russell O’Connor in a paper presenting Simplicity. He says:

“Like Bitcoin Script and the EVM, our language is designed as low-level language for executing smart contracts, not as a language for coding in directly.

As such, we expect it to be a target for other, higher-level, languages to be compiled to. We call our new language Simplicity.”

That’s obviously a rhyme of sorts of Solidity, but it is more akin to an assembler language than to Java or Python. In other words, Simplicity is the ethereum equivalent of bytecode.

The javascript like language running on top of that here might be more like Haskell. It’s not quite on the pipeline yet, but Simplicity might be integrated into Ivy, with Ivy being what can be described at a very high level as Solidity, but for the current bitcoin script language.

They specifically mention smart contracts and it does sound like that’s very much the plan, but here they would be in a non-Turing complete design.

“Steal” All The Things?

Long has been said by bitcoiners that if some other project comes up with some useful innovation, they’ll just copy it and merge it into bitcoin.

The Ethereum Virtual Machine (EVM), here to be called the Bit Machine, is arguably the biggest innovation since bitcoin itself.

It has proved very popular too, with bitcoiners “trembling” at one point as ethereum rose and rose in 2017.

Much has changed since then as ethereum faced the same scalability problems as bitcoin, with eth now falling to about 10% of bitcoin’s market cap while in 2017 it nearly overtook it.

That competitive aspect was still met with respect by both sides. Admired is perhaps a strong word to use, but bitcoin developers appreciated the capabilities and ethos, in general, of ethereum developers.

Hence it appears they’re moving towards implementing that smart contracts invention into bitcoin, with quite a bit of work going on in Simplicity.

The Pipeline

There’s a symbiotic relationship between Liquid – a federated sidechain of bitcoin – and bitcoin itself.

At a very high level, Liquid is pretty much a blockchain, but a very centralized one, certainly when compared to bitcoin.

It’s a permissioned blockchain with “corporate” validators like exchanges and without any GUI for now, but Green Wallet plans to incorporate Liquid.

This federated sidechain allows bitcoins to be locked on one side and then transported to Liquid where its higher level of centralization and trust requirements can then provide things like sort of free and pretty much instant transactions.

As uninteresting as all that might be, what could be interesting is that Liquid can be seen as sort of bitcoin’s playground.

It’s a lot more experimental, and therefore it’s where things like miniscript and Simplicity are to go first.

Eventually then hopefully they’ll make their way to bitcoin if there is general consensus for it.

Simplicity looks open sourced and miniscript will be open sourced, if it isn’t already although very much still in development, so any developer can propose their merger when the time is right which might be quite some time from now.

The Two Years Race

With ethereum launching a completely new chain in a transitional period towards sharding, bitcoin has been “gifted” at least two years of catching up and perhaps even racing ahead.

While sharding could be a game changer if its implementation turns out to actually be decentralized, there are quite a few bitcoin teams working on the Lightning Network (LN) which has been running now for about a year.

LN can best be described as sharding, but vertical. They bundle perhaps even millions of transactions into one on-chain transaction, while sharding is horizontal in bundling nodes, so creating sort of copy clone networks and thus effectively bundling transactions.

Achieving that nodes bundling in a decentralized and trustless way is a bit of rocket science if those qualities are judged by: can a scriptkiddy from his laptop chain-split fork the entire network, with scriptkiddy here used to say someone that doesn’t have resources rather than doesn’t have knowledge.

That remains to be seen, with capacity – while meeting the above scriptkiddy test – likely to be a very important factor in regards to what comes on top eventually once this dial-up phase is over.

Bitcoin is not quite playing there yet because it can’t really. It would be unthinkable for bitcoin to launch a completely new chain without an extremely good reason, such as it being proven to work.

Sidechains like Liquid can be considered one attempt to launch such new chains, but it’s very difficult in bitcoin to connect two different chains in a trustless manner.

Their focus instead is on sort of extending bitcoin, either up through LN or Truebit, or horizontally through sidechains and potentially other methods.

Their focus is also clearly on developing bitcoin’s programmability, with what for now looks like a spur in innovation appearing as coders get to work.



Notify of