Technology & Security
Lately, there’s been a lot of conversation directed at adding a canonical transaction ordering (CTOR) process to the Bitcoin Cash protocol. Then there’s the topic of whether or not the BCH developers should add the opcode OP_Checkdatasig (CDS) into the codebase. Some believe CDS will be beneficial to Bitcoin scripting applications and allow for all types of smart contracts and decision-based transactions. However, others think adding CDS is unnecessary, and may compromise network security.
Also read: Crypto-Community Debates Bitcoin Core Bug and a ‘Forced Upgrade’
OP_Checkdatasig: The Possibility of Oracles, and Cross-Chain Atomic Contracts
There’s a lot of discussion concerning the Bitcoin Cash (BCH) network hard fork coming this November. One of the topics is an implementation called OP_Checkdatasig (CDS) that’s been added to the Bitcoin ABC clients’ roadmap and codebase. Basically, CDS is an opcode that could theoretically enhance the BCH protocol’s scripting ability. When Satoshi created Bitcoin, the software included a scripting system much like the programmable language Forth. In addition to the scripting, the codebase also included script words otherwise known as ‘opcodes.’ There are quite a few opcodes and all of them do various commands or binary functions but most of them were disabled long ago.
OP_Checkdatasig is referred to as OP_Datasigverify in the same context throughout this article.
Some people believe that certain opcodes could add a ‘programmable money’ feature to the network. OP_Checkdatasig (also referred to as OP_Datasigverify or DSV) could possibly enable the creation of decentralized oracles that check the validation of certain signatures, and return two different outcomes in an autonomous fashion. Essentially the oracle determines a definitive outcome without the need for a third party or custodian’s decision. Oracles are the foundations of a smart contract because the software itself decides when and who to release the funds to based on the completion of meeting or not meeting certain requirements. When Bitcoin ABC announced version 0.18.0, included within the client is the addition of CDS and the development team’s announcement details the feature will be used for oracles and contracts.
“[Checkdatasig] will enable uses such as the use of oracles and cross-chain atomic contracts,” explains the Bitcoin ABC development team.
Pay To Identity
There are multiple posts people can read on the subject of CDS and the theoretical use cases. Mark Lundeberg has written a proposed use case of CDS called “Pay To Identity” which would allow the BCH protocol to determine the validity of a users identification.
“[Pay To Identity] is a mechanism where a Bitcoin Cash payment is made to a personally identifying string (real name, email address, social media handle, etc.) instead of directly to a cryptographic key,” Lundeberg details. “The payment can only be claimed by the recipient if they generate a public key and get it certified by a trusted identity verifier.”
This certification signature is confirmed in script via the new opcode OP_Checkdatasig.
Two posts authored by Bitcoin Unlimited’s lead developer Andrew Stone explain the possible use cases of CDS as well. Stone’s post,“Bitcoin Scripting Applications: Decision Based Spending,” gives a comprehensive look at how data and signatures can be verified in an autonomous manner.
Stone also determines “whether [common use cases] they are expressible in the Bitcoin scripting language and if they are not determined and propose the extensions are needed to support the use case.” In the enable binary contracts BUIP078 Stone gives a lot of color when describing what the opcode could do in the future as well.
“[The opcode] allows a script to validate the signature on arbitrary data using the same ECDSA algorithm (and code) used to validate the signature on Bitcoin transactions,” explains Stone’s BUIP078. “This opcode therefore enables the use of an external ‘oracle’, which is a very important too to enable external information to be imported into a transaction. Once the data is part of a transaction it is useful to be able to manipulate it to check various conditions on that data.”
Bitcoin Unlimiteds’ BUIP078 also states:
To enable the simplest form of programmable money we must have additional opcodes that either access data from prior blockchain transactions, or verify data and signatures pushed onto the script’s stack.
Can Rabid Signatures Work Without Introducing OP_Checkdatasig?
The blockchain firm Nchain and Craig Wright have been against adding…