Raven Core  3.0.0
P2P Digital Currency
Classes | Typedefs | Enumerations | Functions
script.h File Reference
#include "crypto/common.h"
#include "prevector.h"
#include "serialize.h"
#include "amount.h"
#include <assert.h>
#include <climits>
#include <limits>
#include <stdexcept>
#include <stdint.h>
#include <string.h>
#include <string>
#include <vector>
Include dependency graph for script.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  scriptnum_error
 
class  CScriptNum
 
class  CScript
 Serialized script, used inside transaction inputs and outputs. More...
 
struct  CScriptWitness
 
class  CReserveScript
 

Typedefs

typedef prevector< 28, unsigned char > CScriptBase
 We use a prevector for the script to reduce the considerable memory overhead of vectors in cases where they normally contain a small number of small elements. More...
 

Enumerations

enum  opcodetype {
  OP_0 = 0x00, OP_FALSE = OP_0, OP_PUSHDATA1 = 0x4c, OP_PUSHDATA2 = 0x4d,
  OP_PUSHDATA4 = 0x4e, OP_1NEGATE = 0x4f, OP_RESERVED = 0x50, OP_1 = 0x51,
  OP_TRUE =OP_1, OP_2 = 0x52, OP_3 = 0x53, OP_4 = 0x54,
  OP_5 = 0x55, OP_6 = 0x56, OP_7 = 0x57, OP_8 = 0x58,
  OP_9 = 0x59, OP_10 = 0x5a, OP_11 = 0x5b, OP_12 = 0x5c,
  OP_13 = 0x5d, OP_14 = 0x5e, OP_15 = 0x5f, OP_16 = 0x60,
  OP_NOP = 0x61, OP_VER = 0x62, OP_IF = 0x63, OP_NOTIF = 0x64,
  OP_VERIF = 0x65, OP_VERNOTIF = 0x66, OP_ELSE = 0x67, OP_ENDIF = 0x68,
  OP_VERIFY = 0x69, OP_RETURN = 0x6a, OP_TOALTSTACK = 0x6b, OP_FROMALTSTACK = 0x6c,
  OP_2DROP = 0x6d, OP_2DUP = 0x6e, OP_3DUP = 0x6f, OP_2OVER = 0x70,
  OP_2ROT = 0x71, OP_2SWAP = 0x72, OP_IFDUP = 0x73, OP_DEPTH = 0x74,
  OP_DROP = 0x75, OP_DUP = 0x76, OP_NIP = 0x77, OP_OVER = 0x78,
  OP_PICK = 0x79, OP_ROLL = 0x7a, OP_ROT = 0x7b, OP_SWAP = 0x7c,
  OP_TUCK = 0x7d, OP_CAT = 0x7e, OP_SUBSTR = 0x7f, OP_LEFT = 0x80,
  OP_RIGHT = 0x81, OP_SIZE = 0x82, OP_INVERT = 0x83, OP_AND = 0x84,
  OP_OR = 0x85, OP_XOR = 0x86, OP_EQUAL = 0x87, OP_EQUALVERIFY = 0x88,
  OP_RESERVED1 = 0x89, OP_RESERVED2 = 0x8a, OP_1ADD = 0x8b, OP_1SUB = 0x8c,
  OP_2MUL = 0x8d, OP_2DIV = 0x8e, OP_NEGATE = 0x8f, OP_ABS = 0x90,
  OP_NOT = 0x91, OP_0NOTEQUAL = 0x92, OP_ADD = 0x93, OP_SUB = 0x94,
  OP_MUL = 0x95, OP_DIV = 0x96, OP_MOD = 0x97, OP_LSHIFT = 0x98,
  OP_RSHIFT = 0x99, OP_BOOLAND = 0x9a, OP_BOOLOR = 0x9b, OP_NUMEQUAL = 0x9c,
  OP_NUMEQUALVERIFY = 0x9d, OP_NUMNOTEQUAL = 0x9e, OP_LESSTHAN = 0x9f, OP_GREATERTHAN = 0xa0,
  OP_LESSTHANOREQUAL = 0xa1, OP_GREATERTHANOREQUAL = 0xa2, OP_MIN = 0xa3, OP_MAX = 0xa4,
  OP_WITHIN = 0xa5, OP_RIPEMD160 = 0xa6, OP_SHA1 = 0xa7, OP_SHA256 = 0xa8,
  OP_HASH160 = 0xa9, OP_HASH256 = 0xaa, OP_CODESEPARATOR = 0xab, OP_CHECKSIG = 0xac,
  OP_CHECKSIGVERIFY = 0xad, OP_CHECKMULTISIG = 0xae, OP_CHECKMULTISIGVERIFY = 0xaf, OP_NOP1 = 0xb0,
  OP_CHECKLOCKTIMEVERIFY = 0xb1, OP_NOP2 = OP_CHECKLOCKTIMEVERIFY, OP_CHECKSEQUENCEVERIFY = 0xb2, OP_NOP3 = OP_CHECKSEQUENCEVERIFY,
  OP_NOP4 = 0xb3, OP_NOP5 = 0xb4, OP_NOP6 = 0xb5, OP_NOP7 = 0xb6,
  OP_NOP8 = 0xb7, OP_NOP9 = 0xb8, OP_NOP10 = 0xb9, OP_RVN_ASSET = 0xc0,
  OP_SMALLINTEGER = 0xfa, OP_PUBKEYS = 0xfb, OP_PUBKEYHASH = 0xfd, OP_PUBKEY = 0xfe,
  OP_INVALIDOPCODE = 0xff
}
 Script opcodes. More...
 

Functions

template<typename T >
std::vector< unsigned char > ToByteVector (const T &in)
 
const char * GetOpName (opcodetype opcode)
 
bool GetAssetAmountFromScript (const CScript &script, CAmount &nAmount)
 These are needed because script.h and script.cpp do not have access to asset.h and asset.cpp functions. More...
 
bool AmountFromNewAssetScript (const CScript &scriptPubKey, CAmount &nAmount)
 
bool AmountFromTransferScript (const CScript &scriptPubKey, CAmount &nAmount)
 
bool AmountFromReissueScript (const CScript &scriptPubKey, CAmount &nAmount)
 
bool ScriptNewAsset (const CScript &scriptPubKey, int &nStartingIndex)
 
bool ScriptTransferAsset (const CScript &scriptPubKey, int &nStartingIndex)
 
bool ScriptReissueAsset (const CScript &scriptPubKey, int &nStartingIndex)
 

Typedef Documentation

◆ CScriptBase

typedef prevector<28, unsigned char> CScriptBase

We use a prevector for the script to reduce the considerable memory overhead of vectors in cases where they normally contain a small number of small elements.

Tests in October 2015 showed use of this reduced dbcache memory usage by 23% and made an initial sync 13% faster.

Definition at line 393 of file script.h.

Enumeration Type Documentation

◆ opcodetype

enum opcodetype

Script opcodes.

Enumerator
OP_0 
OP_FALSE 
OP_PUSHDATA1 
OP_PUSHDATA2 
OP_PUSHDATA4 
OP_1NEGATE 
OP_RESERVED 
OP_1 
OP_TRUE 
OP_2 
OP_3 
OP_4 
OP_5 
OP_6 
OP_7 
OP_8 
OP_9 
OP_10 
OP_11 
OP_12 
OP_13 
OP_14 
OP_15 
OP_16 
OP_NOP 
OP_VER 
OP_IF 
OP_NOTIF 
OP_VERIF 
OP_VERNOTIF 
OP_ELSE 
OP_ENDIF 
OP_VERIFY 
OP_RETURN 
OP_TOALTSTACK 
OP_FROMALTSTACK 
OP_2DROP 
OP_2DUP 
OP_3DUP 
OP_2OVER 
OP_2ROT 
OP_2SWAP 
OP_IFDUP 
OP_DEPTH 
OP_DROP 
OP_DUP 
OP_NIP 
OP_OVER 
OP_PICK 
OP_ROLL 
OP_ROT 
OP_SWAP 
OP_TUCK 
OP_CAT 
OP_SUBSTR 
OP_LEFT 
OP_RIGHT 
OP_SIZE 
OP_INVERT 
OP_AND 
OP_OR 
OP_XOR 
OP_EQUAL 
OP_EQUALVERIFY 
OP_RESERVED1 
OP_RESERVED2 
OP_1ADD 
OP_1SUB 
OP_2MUL 
OP_2DIV 
OP_NEGATE 
OP_ABS 
OP_NOT 
OP_0NOTEQUAL 
OP_ADD 
OP_SUB 
OP_MUL 
OP_DIV 
OP_MOD 
OP_LSHIFT 
OP_RSHIFT 
OP_BOOLAND 
OP_BOOLOR 
OP_NUMEQUAL 
OP_NUMEQUALVERIFY 
OP_NUMNOTEQUAL 
OP_LESSTHAN 
OP_GREATERTHAN 
OP_LESSTHANOREQUAL 
OP_GREATERTHANOREQUAL 
OP_MIN 
OP_MAX 
OP_WITHIN 
OP_RIPEMD160 
OP_SHA1 
OP_SHA256 
OP_HASH160 
OP_HASH256 
OP_CODESEPARATOR 
OP_CHECKSIG 
OP_CHECKSIGVERIFY 
OP_CHECKMULTISIG 
OP_CHECKMULTISIGVERIFY 
OP_NOP1 
OP_CHECKLOCKTIMEVERIFY 
OP_NOP2 
OP_CHECKSEQUENCEVERIFY 
OP_NOP3 
OP_NOP4 
OP_NOP5 
OP_NOP6 
OP_NOP7 
OP_NOP8 
OP_NOP9 
OP_NOP10 
OP_RVN_ASSET 

RVN START.

OP_SMALLINTEGER 

RVN END.

OP_PUBKEYS 
OP_PUBKEYHASH 
OP_PUBKEY 
OP_INVALIDOPCODE 

Definition at line 51 of file script.h.

Function Documentation

◆ AmountFromNewAssetScript()

bool AmountFromNewAssetScript ( const CScript scriptPubKey,
CAmount nAmount 
)

Definition at line 530 of file script.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AmountFromReissueScript()

bool AmountFromReissueScript ( const CScript scriptPubKey,
CAmount nAmount 
)

Definition at line 574 of file script.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AmountFromTransferScript()

bool AmountFromTransferScript ( const CScript scriptPubKey,
CAmount nAmount 
)

Definition at line 552 of file script.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetAssetAmountFromScript()

bool GetAssetAmountFromScript ( const CScript script,
CAmount nAmount 
)

These are needed because script.h and script.cpp do not have access to asset.h and asset.cpp functions.

This is because the make file compiles them at different times. This is becauses script files are compiled with other consensus files, and asset files are compiled with core files

These are needed because script.h and script.cpp do not have access to asset.h and asset.cpp functions.

This is because the make file compiles them at different times. The script files are compiled with other consensus files, and asset files are compiled with core files. Used to check if an asset script contains zero assets. Is so, it should be unspendable

Definition at line 461 of file script.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetOpName()

const char* GetOpName ( opcodetype  opcode)

RVN START

RVN END

Definition at line 15 of file script.cpp.

Here is the caller graph for this function:

◆ ScriptNewAsset()

bool ScriptNewAsset ( const CScript scriptPubKey,
int &  nStartingIndex 
)

Definition at line 496 of file script.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ScriptReissueAsset()

bool ScriptReissueAsset ( const CScript scriptPubKey,
int &  nStartingIndex 
)

Definition at line 518 of file script.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ScriptTransferAsset()

bool ScriptTransferAsset ( const CScript scriptPubKey,
int &  nStartingIndex 
)

Definition at line 507 of file script.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ToByteVector()

template<typename T >
std::vector<unsigned char> ToByteVector ( const T &  in)

Definition at line 45 of file script.h.

Here is the caller graph for this function: