With the current implementation that this commit is based on,
CHECKDATASIG(VERIFY) takes the message bytes from the stack
and serializes them using the SER_HASH serialization option in the Bitcoin
object serialization protocol. It then hashes the result twice using
SHA256.
This creates a problem insofar as it makes the opcode a lot less flexible
than it needs to be. A lot of messages from other systems - or even Bitcoin
itself, such as signed transactions cannot be checked for having a valid
signature using CHECKDATASIG(VERIFY) any longer.
This changes the implementation of CHECKDATASIG(VERIFY) to take the
raw, single SHA256 hash of the message bytes on the stack instead.
See also the discussion on the github pull-request page regarding the
CHECKDATASIG(VERIFY) specification at: