Skip to content

Radiant Opcodes

The Radiant blockchain introduced a set of opcodes that significantly improves on the capability of the Bitcoin technology it's based on. All these opcodes will be outlined in this article.

Terms

  • Ref: A 36 byte reference, either of normal or singleton type. A reference is created from an input's outpoint and can be propagated with every spend of a UTXO. For a ref to exist in an output there must be a matching input ref of the same type or an input with a matching outpoint. The ref type cannot be changed once it is created.
  • Normal ref: A type of reference that can be propagated to one or more outputs.
  • Singleton ref: A type of reference that can only ever exist in a single UTXO. Cannot be propagated to multiple outputs.
  • State script: The part of the script before and not including an OP_STATESEPARATOR. Useful for storing state data that can be changed by the contract.
  • Code script: The part of the script from and including an OP_STATESEPARATOR. If no state separator is present, the code script is the entire script.
  • codeScriptHash: The double SHA-256 of the code script.

Hash functions

SHA-512/256 is the hash function used by Radiant's proof of work algorithm. It is available in script as single and double hash functions. These can be used to validate Radiant block headers in script.

Word Hex Input Output Description
OP_SHA512_256 ce bytes hash SHA-512/256
OP_HASH512_256 cf bytes hash Double SHA-512/256

Induction opcodes

Word Hex Input Output Description
OP_PUSHINPUTREF d0 ref ref Propagates a ref to an output. A ref of normal type must exist in an input or an input must have an outpoint matching the ref. Ref will be left on the stack.
OP_PUSHINPUTREFSINGLETON d8 ref ref Propagates a singleton ref to an output. A ref of singleton type must exist in an input or an input must have an outpoint matching the ref. Ref will be left on the stack.
OP_REQUIREINPUTREF d1 ref ref A ref of normal type must exist in an input. Ref is not propagated. Ref will be left on the stack.
OP_DISALLOWPUSHINPUTREF d2 ref ref Requires a ref to not exist in any input. Leaves the ref on the stack.
OP_DISALLOWPUSHINPUTREFSIBLING d3 ref ref Requires a ref to not exist in any input sibling. Leaves the ref on the stack.
OP_REFTYPE_UTXO d9 ref type Get the type of a ref from transaction inputs. Returns 0 (not found), 1 (normal type) or 2 (singleton type).
OP_REFTYPE_OUTPUT da ref type Get the type of a ref from transaction outputs. Returns 0 (not found), 1 (normal type) or 2 (singleton type).
OP_REFHASHDATASUMMARY_UTXO d4 inputIndex summary For the input of the given index returns a hash256 of <nValue><hash256(scriptPubKey)><numRefs><hash(sortedMap(pushRefs))>
OP_REFHASHDATASUMMARY_OUTPUT d6 outputIndex summary For the output of the given index returns a hash256 of <nValue><hash256(scriptPubKey)><numRefs><hash(sortedMap(pushRefs))>
OP_REFDATASUMMARY_UTXO e1 inputIndex summary Return refs used within an input. Pushes a vector of the form <ref1><ref2><ref3>.... If an input UTXO does not contain at least one reference, then the 36 byte zeroes are pushed.
OP_REFDATASUMMARY_OUTPUT e2 outputIndex summary Return refs used within an output. Pushes a vector of the form <ref1><ref2><ref3>.... If an input UTXO does not contain at least one reference, then the 36 byte zeroes are pushed.

State/code script opcodes

Word Hex Input Output Description
OP_STATESEPARATOR bd Separates the state script from the code script. Only one can exist in a script and it must not exist within an OP_IF. No OP_RETURN can exist in the script when used.
OP_STATESEPARATORINDEX_UTXO be inputIndex separatorIndex Returns the byte index of the state separator for an input. Returns zero if no separator exists.
OP_STATESEPARATORINDEX_OUTPUT bf outputIndex separatorIndex Returns the byte index of the state separator for an output. Returns zero if no separator exists.
OP_CODESCRIPTBYTECODE_UTXO e9 inputIndex bytecode Returns the code script bytecode for an input.
OP_CODESCRIPTBYTECODE_OUTPUT ea outputIndex bytecode Returns the code script bytecode for an output.
OP_STATESCRIPTBYTECODE_UTXO eb inputIndex bytecode Returns the state script bytecode for an output. Does not include the OP_STATESEPARATOR.
OP_STATESCRIPTBYTECODE_OUTPUT ec outputIndex bytecode Returns the state script bytecode for an output. Does not include the OP_STATESEPARATOR.

Count and sum opcodes

These opcodes provide a set queries on inputs and outputs by ref, ref hash and code script hash. Counts and sums can be performed over many outputs with a single opcode, meaning an unrolled loop in the script is not required.

Word Hex Input Output Description
OP_REFHASHVALUESUM_UTXOS d5 refHash photons Returns the total sum of photons for inputs that match a 32 byte hash of the sorted set of ref asset ids.
OP_REFHASHVALUESUM_OUTPUTS d7 refHash photons Returns the total sum of photons for outputs that match a 32 byte hash of the sorted set of ref asset ids.
OP_REFVALUESUM_UTXOS db ref photons Returns the total sum of photons for inputs that contain a ref.
OP_REFVALUESUM_OUTPUTS dc ref photons Returns the total sum of photons for outputs that contain a ref.
OP_REFOUTPUTCOUNT_UTXOS dd ref count Returns the count of inputs that contain a ref.
OP_REFOUTPUTCOUNT_OUTPUTS de ref count Returns the count of outputs that contain a ref.
OP_REFOUTPUTCOUNTZEROVALUED_UTXOS df ref count Returns the count of inputs that contain a ref and contain zero photons.
OP_REFOUTPUTCOUNTZEROVALUED_OUTPUTS e0 ref count Returns the count of inputs that contain a ref and contain zero photons.
OP_CODESCRIPTHASHVALUESUM_UTXOS e3 codeScriptHash photons Returns the total sum of photons for inputs that have a codeScriptHash.
OP_CODESCRIPTHASHVALUESUM_OUTPUTS e4 codeScriptHash photons Returns the total sum of photons for outputs that have a codeScriptHash.
OP_CODESCRIPTHASHOUTPUTCOUNT_UTXOS e5 codeScriptHash count Returns the count of inputs that have a codeScriptHash.
OP_CODESCRIPTHASHOUTPUTCOUNT_OUTPUTS e6 codeScriptHash count Returns the count of outputs that have a codeScriptHash.
OP_CODESCRIPTHASHZEROVALUEDOUTPUTCOUNT_UTXOS e7 codeScriptHash count Returns the count of inputs that have a codeScriptHash and contain zero photons.
OP_CODESCRIPTHASHZEROVALUEDOUTPUTCOUNT_OUTPUTS e8 codeScriptHash count Returns the count of outputs that have a codeScriptHash and contain zero photons.