RateLimited°C
09-17-2024
BSV
$46.21
Vol 11.21m
0.44%
BTC
$57938
Vol 30934.73m
-0.94%
BCH
$311.44
Vol 185.86m
-0.97%
LTC
$62.29
Vol 287.6m
-0.69%
DOGE
$0.09
Vol 539.69m
-1.79%

This post was first published on Medium.

OP_CODESEPARATOR is arguably the most mysterious opcode in Bitcoin Script. We give an introduction to it and demonstrate its usage in a practical application: optimizing preimage size in OP_PUSH_TX.

OP_CODESEPARATOR

Sighash preimage is what gets signed in a Bitcoin signature, whose format is as follows:

github
scriptCode in Sighash Preimage

Part 5, scriptCode, usually contains the entire locking script. The only exception is when there is OP_CODESEPARATOR (OCS) in it. In this case, the scriptCode is the locking script but removing everything up to and including the last executed OCS before OP_CHECKSIG is executed.

OCS in sCrypt

We have added OCS support in sCrypt. Three or more * in a line inserts an OCS. We have shown two OCSs in the example below: first represented by 3 asterisks, second 5.

P2PKH Contract with OCSs

We have also added support in our SDK and IDE since v1.4.1.

Use Case: Optimizing OP_PUSH_TX

In many cases, scriptCode, or portion of it, is not needed when using OP_PUSH_TX. OCS can be used to cut its size. For example, in the following contract, only part 9, nLocktime, of the whole preimage is needed. We use Tx.checkPreimageOCS(), a variant of the conventional Tx.checkPreimage(). The only difference is that an OCS is inserted right before OP_CHECKSIG within the former. Also note we put Tx.checkPreimageOCS() as the last statement for maximal optimization.

CheckLockTimeVerifyOCS Contract

After the change, the preimage size is cut from 915 to 201 bytes, a significant savings of ~80%.

Summary

We have demonstrated the first widely applicable usage of OCS. Other potential usages include in-script functions and signing different execution paths in off-chain transactions.

Watch: CoinGeek New York presentation, Secure & Compliant Document Workflow using Blockchain

Recommended for you

WhatsOnChain gets own UTXO endpoints for BSV blockchain services
With ElectrumX set to retire in October, WhatsOnChain is gearing up to implement a new UTXO set of API endpoints,...
September 16, 2024
Russia allows block reward miners have surplus electricity
Russian Energy Minister Sergei Tsivilev said that while fostering the mining industry is not a priority, it would be “beneficial”...
September 13, 2024
Advertisement