An “ELI5” on OP_CHECKDATASIG
You may have heard of OP_CHECKDATASIG because its a proposed change that is slated for the November protocol upgrade for Bitcoin Cash. Technical stuff can be annoying to try to figure out, so I’ll do my best to explain it in the simplest way possible.
Digital signatures are a crucial part of Bitcoin. When you create a transaction, you need to provide a digital signature that’s generated from your private key. The signature is proof you authorized the transaction, or more generally in cryptography, that you signed a message.
In other words, the message is the “what” you’re signing for.
In a normal Bitcoin transaction, the message is essentially composed of the inputs and outputs that make up the transaction; or if you like -- the “from” and “to” addresses of where the Bitcoins are going (this is a simplified explanation).
The actual Bitcoin script that makes up a standard transaction uses an op code called OP_CHECKSIG. This op code helps to ensure that the signature is in fact correct before the bitcoins are allowed to be spent. It prevents others from stealing your coins if they can’t produce a valid signature.
With OP_CHECKDATASIG, almost the same thing happens. The difference is the message itself. Instead of signing for the transaction inputs/outputs, you’re providing a signature for another piece of data that you include in the transaction (technically a piece of data that you “push on the stack”).
One common misunderstanding is that this allows Bitcoin script to make an external call. It does not. The extra data (the message) that is being signed for must be a part of, and included with each transaction that uses this op code.
How is this useful?
Let's say we want to have a decentralized sports betting application and suppose there is a company called Fyookball Sports Oracle (FSO). Alice and Bob can create a peer to peer wager with a Bitcoin script that unlocks bitcoins by either:
Alice Sig + FSO sig on "Philadelphia wins the game"
Bob Sig + FSO sig on "New York wins the game"
So now you know what OP_CHECKDATASIG is all about ,and hopefully that helps you develop a more informed opinion about the upcoming protocol upgrade in November.
If you’re wondering what my personal opinion is about this, I think the risks of adding this to the protocol are little to none. And I think it will help enrich the ecosystem by enabling a specific class of use cases involving oracles.
If you’re looking for more information on this op code, you might want to check out Mengerian’s article here.
10 of 10 reviewers say it's worth paying for
0 of 10 reviewers say it's not worth paying for