Bitcoin Scripting and How It Can Be Improved
Fueling every Bitcoin transaction is a script that is providing the instructions that are a recording with each transaction. This simple scripting system describes how the next person who is receiving those Bitcoins can access and spend them as well as ensures the transaction is completed in a specified amount of time.
In order to take ownership of the Bitcoins, the spender must give a public key (ScriptPubKey) that provides the correct destination address (‘D’) that has been embedded in the script that accompanies that currency. They must also provide a signature (ScriptSig) that shows evidence that the private and public key correspond.
The stack-based, left-to-right processed scripting system was enacted by Bitcoin as a way to direct any changes to the framework for spending the cryptocurrency. In this simplistic system, each script operation modifies the global stack of operations and either becomes valid (with the presence of a ‘1’ on the top of the stack or invalid (anything else on the top of the stack) after which the script terminates. It is not Turing-complete, which means that there are no loops, and has a limited instruction set of stack manipulation, arithmetic, and cryptography.
Using five script types, this flexible tool offers a good strategy for what has become an evolving transaction process with more applications being developed as the system attracts more developers, researchers, and business minds. The opportunities incude all types of transactions and access to the assets connected to those transactions, including a mortgage, will, and fundraising campaign.
Improving Upon Existing Bitcoin Scripts
Before exploiting all the transaction opportunities that are on the horizon, there are Bitcoin scripting limitations to address. However, the limitation is not in the actual simplicity of the scripting as this is what keeps miners willing to put the effort into validating the transactions. If the scripting was complex, it would be expensive and time-consuming – therefore, demotivating to miners to validate.
So, if the limitation is not in its simplicity, what needs improving? Because, with any scripting, there are always bugs that seem to pop up that need to be fixed. This includes the fact that, in its incompleteness as a scripting language, there are many opcodes that cannot be used. Some believe the Bitcoin’s developer, Satoshi Nakamoto, only added the scripting language as an afterthought to his original design when he looked ahead to potential transaction types. In previous versions of Bitcoin, hackers found a way to steal other people’s Bitcoins through these bugs.
While Bitcoin has addressed these bugs and the ability to steal coins as well as opened up a collaborative online environment for improving its script system, there are other reasons to keep working toward improving the existing scripting language. Since then, others have looked at Bitcoin’s scripting language as the foundation for creating something much more powerful with significant application capability. From there, Ethereum was born and has been illustrating just where this scripting language can go when the best and brightest are unleashed.
Just two years ago, Ethereum was just a project in process looking for funding. Today, it has shown just what it can do with Bitcoin’s simple scripting system. The team behind Ethereum built their blockchain with the scripting system as a model. Except Ethereum’s blockchain supports multiple programming language that lets you do all types of things, creating new applications for games, smart contracts, online storage devices and more.
Essentially, it has taken the original idea of validating transactions and elevated it to attract the masses across numerous industries. The intent at improving upon the Bitcoin scripting system has also been to drive the development of consumer-directed solutions through facilitating decentralized applications. To do so, however, has required that the original Bitcoin scripting system be transformed into a Turing-complete programming language that adds complexity but that allows for the creation of contracts. According to a white paper on Ethereum, these contracts “can be used to encode arbitrary state transition functions, allowing users to create any of the systems described above, as well as many others that we have not yet imagined, simply by writing up the logic in a few lines of code.”
Bitcoin: Stepping Stone or Still Relevant?
With such a dynamic and disruptive change to the framework and number of potential applications, many still wonder if Bitcoin and its simplistic scripting system are still relevant to where the transaction environment is now heading. In fact, some are referring to Ethereum as Bitcoin 2.0, suggesting that it will eventually replace Bitcoin.
For now, though, there are many who are still willingly using Bitcoin as it gains more acceptance among online retailers, big brands, and businesses that recognize it as a secure way to transact for goods and services all over the world. There very well may be room for both Bitcoin to continue revolutionizing the concept of money and payments while Ethereum leads the way with revolutionary application opportunities. Either way, Bitcoin’s scripting system has been the impetus for so many new exciting changes in all types of industries and businesses, proving that complexity is not always a necessary ingredient for disruptive change.