Dash Core Source Documentation (0.16.0.1)
Find detailed information regarding the Dash Core source code.
#include <crypto/common.h>
#include <prevector.h>
#include <serialize.h>
#include <assert.h>
#include <climits>
#include <limits>
#include <stdexcept>
#include <stdint.h>
#include <string.h>
#include <string>
#include <vector>
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... | |
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_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) |
Variables | |
static const unsigned int | MAX_SCRIPT_ELEMENT_SIZE = 520 |
static const int | MAX_OPS_PER_SCRIPT = 201 |
static const int | MAX_PUBKEYS_PER_MULTISIG = 20 |
static const int | MAX_SCRIPT_SIZE = 10000 |
static const int | MAX_STACK_SIZE = 1000 |
static const unsigned int | LOCKTIME_THRESHOLD = 500000000 |
static const unsigned int | MAX_OPCODE = OP_NOP10 |
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.
Enumeration Type Documentation
◆ opcodetype
enum opcodetype |
Script opcodes.
Function Documentation
◆ GetOpName()
const char* GetOpName | ( | opcodetype | opcode | ) |
Definition at line 10 of file script.cpp.
References OP_0, OP_0NOTEQUAL, OP_1, OP_10, OP_11, OP_12, OP_13, OP_14, OP_15, OP_16, OP_1ADD, OP_1NEGATE, OP_1SUB, OP_2, OP_2DIV, OP_2DROP, OP_2DUP, OP_2MUL, OP_2OVER, OP_2ROT, OP_2SWAP, OP_3, OP_3DUP, OP_4, OP_5, OP_6, OP_7, OP_8, OP_9, OP_ABS, OP_ADD, OP_AND, OP_BOOLAND, OP_BOOLOR, OP_CAT, OP_CHECKLOCKTIMEVERIFY, OP_CHECKMULTISIG, OP_CHECKMULTISIGVERIFY, OP_CHECKSEQUENCEVERIFY, OP_CHECKSIG, OP_CHECKSIGVERIFY, OP_CODESEPARATOR, OP_DEPTH, OP_DIV, OP_DROP, OP_DUP, OP_ELSE, OP_ENDIF, OP_EQUAL, OP_EQUALVERIFY, OP_FROMALTSTACK, OP_GREATERTHAN, OP_GREATERTHANOREQUAL, OP_HASH160, OP_HASH256, OP_IF, OP_IFDUP, OP_INVALIDOPCODE, OP_INVERT, OP_LEFT, OP_LESSTHAN, OP_LESSTHANOREQUAL, OP_LSHIFT, OP_MAX, OP_MIN, OP_MOD, OP_MUL, OP_NEGATE, OP_NIP, OP_NOP, OP_NOP1, OP_NOP10, OP_NOP4, OP_NOP5, OP_NOP6, OP_NOP7, OP_NOP8, OP_NOP9, OP_NOT, OP_NOTIF, OP_NUMEQUAL, OP_NUMEQUALVERIFY, OP_NUMNOTEQUAL, OP_OR, OP_OVER, OP_PICK, OP_PUSHDATA1, OP_PUSHDATA2, OP_PUSHDATA4, OP_RESERVED, OP_RESERVED1, OP_RESERVED2, OP_RETURN, OP_RIGHT, OP_RIPEMD160, OP_ROLL, OP_ROT, OP_RSHIFT, OP_SHA1, OP_SHA256, OP_SIZE, OP_SUB, OP_SUBSTR, OP_SWAP, OP_TOALTSTACK, OP_TUCK, OP_VER, OP_VERIF, OP_VERIFY, OP_VERNOTIF, OP_WITHIN, and OP_XOR.
Referenced by FormatScript(), ParseScript(), and ScriptToAsmStr().
◆ ToByteVector()
std::vector<unsigned char> ToByteVector | ( | const T & | in | ) |
Definition at line 42 of file script.h.
Referenced by CWallet::GetBudgetSystemCollateralTX(), CWallet::GetScriptForMining(), GetScriptForMultisig(), CGovernanceObject::IsCollateralValid(), SetupDummyInputs(), and SignStep().
Variable Documentation
◆ LOCKTIME_THRESHOLD
|
static |
Definition at line 39 of file script.h.
Referenced by TransactionSignatureChecker::CheckLockTime(), CWallet::CreateTransaction(), TransactionDesc::FormatTxStatus(), IsFinalTx(), and TransactionRecord::updateStatus().
◆ MAX_OPCODE
|
static |
Definition at line 195 of file script.h.
Referenced by ParseScript().
◆ MAX_OPS_PER_SCRIPT
|
static |
Definition at line 26 of file script.h.
Referenced by EvalScript().
◆ MAX_PUBKEYS_PER_MULTISIG
|
static |
Definition at line 29 of file script.h.
Referenced by EvalScript(), and CScript::GetSigOpCount().
◆ MAX_SCRIPT_ELEMENT_SIZE
|
static |
Definition at line 23 of file script.h.
Referenced by CBasicKeyStore::AddCScript(), CreateMultisigRedeemscript(), EvalScript(), CWallet::LoadCScript(), MutateTxAddOutMultiSig(), MutateTxAddOutScript(), and ProcessMessage().
◆ MAX_SCRIPT_SIZE
|
static |
Definition at line 32 of file script.h.
Referenced by EvalScript(), CScript::IsUnspendable(), MutateTxAddOutScript(), and CScriptCompressor::Unserialize().
◆ MAX_STACK_SIZE
|
static |
Definition at line 35 of file script.h.
Referenced by EvalScript().