Bitcoin developers have been working for the past four years on a “replacement next generation Bitcoin script system which is fully general. You can program generally arbitrary scripts and programs.”
So says Adam Back while presenting Simplicity, a machine level programming language developed by Russell O’Connor with the help of Andrew Poelstra while Gregory Maxwell has been testing it, all four bitcoin protocol developers with Back being the CEO of Blockstream, the bitcoin and blockchain dev studio.
“The very lowest level is Assembly language bit level machine. But from that are built a number of higher level intrinsic functions,” Back says with such higher level functions called jets.
If you’re familiar with ethereum smart contracts, the piece of code you can read on etherscan has to be turned into bytecode for machines to understand it.
Simplicity is basically that bytecode, like 0101101, with a human readable higher level language then running on top of it as pictured above in Haskell.
Jets are sort of templates, or a library, with a demo showing a simple send transaction.
This is intentionally not Turing complete, with it seemingly limited to checking that something is true. Back says:
“If Bitcoin had Simplicity today you would be able to implement Schnorr in Simplicity itself without needing a soft fork. It shows the generality of Simplicity in terms of its expressiveness.
Other examples include there is a particular soft fork extension which would be available for Lightning called SIGHASH_NOINPUT or alternatives.
That would also at some point need a soft fork for Bitcoin for Lightning to work more efficiently, the eltoo version of Lightning. If Bitcoin had Simplicity today you could implement NOINPUT directly inline.”
Schnorr is a signature compression method and you can see above it’s just a jet in Simplicity. Back says:
“The core of Simplicity is complete in terms of the interpreter functionality, the ability to evaluate things.
But there are some things that are missing. Resource estimates of the execution time and memory of features. Some anti denial of service improvements.
There is a binary format but we may want to finalize that we are going to commit to keeping binary compatibility with.
A lot more jets and proofs of equivalence to Simplicity programs of the Simplicity version of the jets.
So more proofs, more jets so that there is a wide library of jets composed of common things that are used at the next level down inside a Bitcoin full node.”
They hope to finish all this by the end of the year when it may go live on Liquid, the permissioned bitcoin sidechain.
Then it may take some time for this to make it into bitcoin, but a lot more programmability is coming to the decentralized currency at a protocol level to extend its capabilities to the point “you can build velocity limits directly into the storage scheme so that you don’t have to have a distinction between a hot and a cold wallet and rebalancing.”