Raven Core  3.0.0
P2P Digital Currency
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Friends | List of all members
CScript Class Reference

Serialized script, used inside transaction inputs and outputs. More...

#include <script.h>

Inheritance diagram for CScript:
[legend]
Collaboration diagram for CScript:
[legend]

Public Member Functions

 CScript ()
 
 CScript (const_iterator pbegin, const_iterator pend)
 
 CScript (std::vector< unsigned char >::const_iterator pbegin, std::vector< unsigned char >::const_iterator pend)
 
 CScript (const unsigned char *pbegin, const unsigned char *pend)
 
template<typename Stream , typename Operation >
void SerializationOp (Stream &s, Operation ser_action)
 
CScriptoperator+= (const CScript &b)
 
 CScript (int64_t b)
 
 CScript (opcodetype b)
 
 CScript (const CScriptNum &b)
 
 CScript (const std::vector< unsigned char > &b)
 
CScriptoperator<< (int64_t b)
 
CScriptoperator<< (opcodetype opcode)
 
CScriptoperator<< (const CScriptNum &b)
 
CScriptoperator<< (const std::vector< unsigned char > &b)
 
CScriptoperator<< (const CScript &b)
 
bool GetOp (iterator &pc, opcodetype &opcodeRet, std::vector< unsigned char > &vchRet)
 
bool GetOp (iterator &pc, opcodetype &opcodeRet)
 
bool GetOp (const_iterator &pc, opcodetype &opcodeRet, std::vector< unsigned char > &vchRet) const
 
bool GetOp (const_iterator &pc, opcodetype &opcodeRet) const
 
bool GetOp2 (const_iterator &pc, opcodetype &opcodeRet, std::vector< unsigned char > *pvchRet) const
 
int FindAndDelete (const CScript &b)
 
int Find (opcodetype op) const
 
unsigned int GetSigOpCount (bool fAccurate) const
 Pre-version-0.6, Raven always counted CHECKMULTISIGs as 20 sigops. More...
 
unsigned int GetSigOpCount (const CScript &scriptSig) const
 Accurately count sigOps, including sigOps in pay-to-script-hash transactions: More...
 
bool IsPayToPublicKeyHash () const
 
bool IsPayToScriptHash () const
 
bool IsPayToWitnessScriptHash () const
 RVN END. More...
 
bool IsWitnessProgram (int &version, std::vector< unsigned char > &program) const
 
bool IsAssetScript (int &nType, bool &fIsOwner, int &nStartingIndex) const
 
bool IsAssetScript (int &nType, bool &fIsOwner) const
 
bool IsAssetScript () const
 RVN START. More...
 
bool IsNewAsset () const
 
bool IsOwnerAsset () const
 
bool IsReissueAsset () const
 
bool IsTransferAsset () const
 
bool IsAsset () const
 
bool IsNullAsset () const
 
bool IsNullAssetTxDataScript () const
 
bool IsNullAssetVerifierTxDataScript () const
 
bool IsNullGlobalRestrictionAssetTxDataScript () const
 
bool IsPayToPublicKey () const
 RVN END. More...
 
bool IsPushOnly (const_iterator pc) const
 Called by IsStandardTx and P2SH/BIP62 VerifyScript (which makes it consensus-critical). More...
 
bool IsPushOnly () const
 
bool HasValidOps () const
 Check if the script contains valid OP_CODES. More...
 
bool IsUnspendable () const
 Returns whether the script is guaranteed to fail at execution, regardless of the initial stack. More...
 
void clear ()
 
- Public Member Functions inherited from prevector< N, T, Size, Diff >
void assign (size_type n, const T &val)
 
template<typename InputIterator >
void assign (InputIterator first, InputIterator last)
 
 prevector ()
 
 prevector (size_type n)
 
 prevector (size_type n, const T &val=T())
 
template<typename InputIterator >
 prevector (InputIterator first, InputIterator last)
 
 prevector (const prevector< N, T, Size, Diff > &other)
 
 prevector (prevector< N, T, Size, Diff > &&other)
 
prevectoroperator= (const prevector< N, T, Size, Diff > &other)
 
prevectoroperator= (prevector< N, T, Size, Diff > &&other)
 
size_type size () const
 
bool empty () const
 
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 
reverse_iterator rbegin ()
 
const_reverse_iterator rbegin () const
 
reverse_iterator rend ()
 
const_reverse_iterator rend () const
 
size_t capacity () const
 
T & operator[] (size_type pos)
 
const T & operator[] (size_type pos) const
 
void resize (size_type new_size)
 
void reserve (size_type new_capacity)
 
void shrink_to_fit ()
 
void clear ()
 
iterator insert (iterator pos, const T &value)
 
void insert (iterator pos, size_type count, const T &value)
 
template<typename InputIterator >
void insert (iterator pos, InputIterator first, InputIterator last)
 
iterator erase (iterator pos)
 
iterator erase (iterator first, iterator last)
 
void push_back (const T &value)
 
void pop_back ()
 
T & front ()
 
const T & front () const
 
T & back ()
 
const T & back () const
 
void swap (prevector< N, T, Size, Diff > &other)
 
 ~prevector ()
 
bool operator== (const prevector< N, T, Size, Diff > &other) const
 
bool operator!= (const prevector< N, T, Size, Diff > &other) const
 
bool operator< (const prevector< N, T, Size, Diff > &other) const
 
size_t allocated_memory () const
 
value_typedata ()
 
const value_typedata () const
 

Static Public Member Functions

static int DecodeOP_N (opcodetype opcode)
 Encode/decode small integers: More...
 
static opcodetype EncodeOP_N (int n)
 

Public Attributes

 ADD_SERIALIZE_METHODS
 

Protected Member Functions

CScriptpush_int64 (int64_t n)
 

Friends

CScript operator+ (const CScript &a, const CScript &b)
 

Additional Inherited Members

- Public Types inherited from prevector< N, T, Size, Diff >
typedef Size size_type
 
typedef Diff difference_type
 
typedef T value_type
 
typedef value_typereference
 
typedef const value_typeconst_reference
 
typedef value_typepointer
 
typedef const value_typeconst_pointer
 

Detailed Description

Serialized script, used inside transaction inputs and outputs.

Definition at line 396 of file script.h.

Constructor & Destructor Documentation

◆ CScript() [1/8]

CScript::CScript ( )
inline

Definition at line 416 of file script.h.

◆ CScript() [2/8]

CScript::CScript ( const_iterator  pbegin,
const_iterator  pend 
)
inline

Definition at line 417 of file script.h.

◆ CScript() [3/8]

CScript::CScript ( std::vector< unsigned char >::const_iterator  pbegin,
std::vector< unsigned char >::const_iterator  pend 
)
inline

Definition at line 418 of file script.h.

◆ CScript() [4/8]

CScript::CScript ( const unsigned char *  pbegin,
const unsigned char *  pend 
)
inline

Definition at line 419 of file script.h.

◆ CScript() [5/8]

CScript::CScript ( int64_t  b)
inline

Definition at line 442 of file script.h.

◆ CScript() [6/8]

CScript::CScript ( opcodetype  b)
inlineexplicit

Definition at line 444 of file script.h.

◆ CScript() [7/8]

CScript::CScript ( const CScriptNum b)
inlineexplicit

Definition at line 445 of file script.h.

◆ CScript() [8/8]

CScript::CScript ( const std::vector< unsigned char > &  b)
inlineexplicit

Definition at line 446 of file script.h.

Member Function Documentation

◆ clear()

void CScript::clear ( )
inline

Definition at line 689 of file script.h.

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

◆ DecodeOP_N()

static int CScript::DecodeOP_N ( opcodetype  opcode)
inlinestatic

Encode/decode small integers:

Definition at line 583 of file script.h.

Here is the caller graph for this function:

◆ EncodeOP_N()

static opcodetype CScript::EncodeOP_N ( int  n)
inlinestatic

Definition at line 590 of file script.h.

Here is the caller graph for this function:

◆ Find()

int CScript::Find ( opcodetype  op) const
inline

Definition at line 625 of file script.h.

◆ FindAndDelete()

int CScript::FindAndDelete ( const CScript b)
inline

Definition at line 598 of file script.h.

Here is the call graph for this function:

◆ GetOp() [1/4]

bool CScript::GetOp ( iterator pc,
opcodetype opcodeRet,
std::vector< unsigned char > &  vchRet 
)
inline

Definition at line 503 of file script.h.

Here is the caller graph for this function:

◆ GetOp() [2/4]

bool CScript::GetOp ( iterator pc,
opcodetype opcodeRet 
)
inline

Definition at line 512 of file script.h.

◆ GetOp() [3/4]

bool CScript::GetOp ( const_iterator pc,
opcodetype opcodeRet,
std::vector< unsigned char > &  vchRet 
) const
inline

Definition at line 520 of file script.h.

◆ GetOp() [4/4]

bool CScript::GetOp ( const_iterator pc,
opcodetype opcodeRet 
) const
inline

Definition at line 525 of file script.h.

◆ GetOp2()

bool CScript::GetOp2 ( const_iterator pc,
opcodetype opcodeRet,
std::vector< unsigned char > *  pvchRet 
) const
inline

Definition at line 530 of file script.h.

Here is the caller graph for this function:

◆ GetSigOpCount() [1/2]

unsigned int CScript::GetSigOpCount ( bool  fAccurate) const

Pre-version-0.6, Raven always counted CHECKMULTISIGs as 20 sigops.

With pay-to-script-hash, that changed: CHECKMULTISIGs serialized in scriptSigs are counted more accurately, assuming they are of the form ... OP_N CHECKMULTISIG ...

Definition at line 162 of file script.cpp.

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

◆ GetSigOpCount() [2/2]

unsigned int CScript::GetSigOpCount ( const CScript scriptSig) const

Accurately count sigOps, including sigOps in pay-to-script-hash transactions:

... and return its opcount:

Definition at line 186 of file script.cpp.

Here is the call graph for this function:

◆ HasValidOps()

bool CScript::HasValidOps ( ) const

Check if the script contains valid OP_CODES.

Definition at line 436 of file script.cpp.

Here is the call graph for this function:

◆ IsAsset()

bool CScript::IsAsset ( ) const

◆ IsAssetScript() [1/3]

bool CScript::IsAssetScript ( int &  nType,
bool &  fIsOwner,
int &  nStartingIndex 
) const

Definition at line 245 of file script.cpp.

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

◆ IsAssetScript() [2/3]

bool CScript::IsAssetScript ( int &  nType,
bool &  fIsOwner 
) const

Definition at line 239 of file script.cpp.

Here is the call graph for this function:

◆ IsAssetScript() [3/3]

bool CScript::IsAssetScript ( ) const

RVN START.

Definition at line 231 of file script.cpp.

Here is the caller graph for this function:

◆ IsNewAsset()

bool CScript::IsNewAsset ( ) const

Definition at line 285 of file script.cpp.

Here is the call graph for this function:

◆ IsNullAsset()

bool CScript::IsNullAsset ( ) const

Definition at line 326 of file script.cpp.

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

◆ IsNullAssetTxDataScript()

bool CScript::IsNullAssetTxDataScript ( ) const

Definition at line 331 of file script.cpp.

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

◆ IsNullAssetVerifierTxDataScript()

bool CScript::IsNullAssetVerifierTxDataScript ( ) const

Definition at line 348 of file script.cpp.

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

◆ IsNullGlobalRestrictionAssetTxDataScript()

bool CScript::IsNullGlobalRestrictionAssetTxDataScript ( ) const

Definition at line 338 of file script.cpp.

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

◆ IsOwnerAsset()

bool CScript::IsOwnerAsset ( ) const

Definition at line 296 of file script.cpp.

Here is the call graph for this function:

◆ IsPayToPublicKey()

bool CScript::IsPayToPublicKey ( ) const

RVN END.

Used for obsolete pay-to-pubkey addresses indexing.

Definition at line 384 of file script.cpp.

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

◆ IsPayToPublicKeyHash()

bool CScript::IsPayToPublicKeyHash ( ) const

Definition at line 210 of file script.cpp.

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

◆ IsPayToScriptHash()

bool CScript::IsPayToScriptHash ( ) const

Definition at line 221 of file script.cpp.

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

◆ IsPayToWitnessScriptHash()

bool CScript::IsPayToWitnessScriptHash ( ) const

RVN END.

Definition at line 358 of file script.cpp.

Here is the call graph for this function:

◆ IsPushOnly() [1/2]

bool CScript::IsPushOnly ( const_iterator  pc) const

Called by IsStandardTx and P2SH/BIP62 VerifyScript (which makes it consensus-critical).

Definition at line 400 of file script.cpp.

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

◆ IsPushOnly() [2/2]

bool CScript::IsPushOnly ( ) const

Definition at line 419 of file script.cpp.

Here is the call graph for this function:

◆ IsReissueAsset()

bool CScript::IsReissueAsset ( ) const

Definition at line 306 of file script.cpp.

Here is the call graph for this function:

◆ IsTransferAsset()

bool CScript::IsTransferAsset ( ) const

Definition at line 316 of file script.cpp.

Here is the call graph for this function:

◆ IsUnspendable()

bool CScript::IsUnspendable ( ) const

Returns whether the script is guaranteed to fail at execution, regardless of the initial stack.

This allows outputs to be pruned instantly when entering the UTXO set.

Definition at line 449 of file script.cpp.

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

◆ IsWitnessProgram()

bool CScript::IsWitnessProgram ( int &  version,
std::vector< unsigned char > &  program 
) const

Definition at line 368 of file script.cpp.

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

◆ operator+=()

CScript& CScript::operator+= ( const CScript b)
inline

Definition at line 428 of file script.h.

Here is the call graph for this function:

◆ operator<<() [1/5]

CScript& CScript::operator<< ( int64_t  b)
inline

Definition at line 449 of file script.h.

◆ operator<<() [2/5]

CScript& CScript::operator<< ( opcodetype  opcode)
inline

Definition at line 451 of file script.h.

◆ operator<<() [3/5]

CScript& CScript::operator<< ( const CScriptNum b)
inline

Definition at line 459 of file script.h.

Here is the call graph for this function:

◆ operator<<() [4/5]

CScript& CScript::operator<< ( const std::vector< unsigned char > &  b)
inline

Definition at line 465 of file script.h.

◆ operator<<() [5/5]

CScript& CScript::operator<< ( const CScript b)
inline

Definition at line 494 of file script.h.

◆ push_int64()

CScript& CScript::push_int64 ( int64_t  n)
inlineprotected

Definition at line 399 of file script.h.

Here is the call graph for this function:

◆ SerializationOp()

template<typename Stream , typename Operation >
void CScript::SerializationOp ( Stream &  s,
Operation  ser_action 
)
inline

Definition at line 424 of file script.h.

Friends And Related Function Documentation

◆ operator+

CScript operator+ ( const CScript a,
const CScript b 
)
friend

Definition at line 435 of file script.h.

Member Data Documentation

◆ ADD_SERIALIZE_METHODS

CScript::ADD_SERIALIZE_METHODS

Definition at line 421 of file script.h.


The documentation for this class was generated from the following files: