Bitcoin
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Friends | List of all members
CScript Class Reference

#include <script.h>

Inheritance diagram for CScript:
prevector< N, T, Size, Diff >

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)=delete
 
CScriptoperator<< (int64_t b)
 
CScriptoperator<< (opcodetype opcode)
 
CScriptoperator<< (const CScriptNum &b)
 
CScriptoperator<< (const std::vector< unsigned char > &b)
 
CScriptoperator<< (const CScript &b)
 
bool GetOp (const_iterator &pc, opcodetype &opcodeRet, std::vector< unsigned char > &vchRet) const
 
bool GetOp (const_iterator &pc, opcodetype &opcodeRet) const
 
unsigned int GetSigOpCount (bool fAccurate) const
 
unsigned int GetSigOpCount (const CScript &scriptSig) const
 
bool IsPayToScriptHash () const
 
bool IsPayToWitnessScriptHash () const
 
bool IsWitnessProgram (int &version, std::vector< unsigned char > &program) const
 
bool IsPushOnly (const_iterator pc) const
 
bool IsPushOnly () const
 
bool HasValidOps () const
 
bool IsUnspendable () const
 
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)
 
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)
 
void resize_uninitialized (size_type new_size)
 
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)
 
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

Constructor & Destructor Documentation

◆ CScript() [1/8]

CScript::CScript ( )
inline

◆ CScript() [2/8]

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

◆ CScript() [3/8]

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

◆ CScript() [4/8]

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

◆ CScript() [5/8]

CScript::CScript ( int64_t  b)
inline

◆ CScript() [6/8]

CScript::CScript ( opcodetype  b)
inlineexplicit

◆ CScript() [7/8]

CScript::CScript ( const CScriptNum b)
inlineexplicit

◆ CScript() [8/8]

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

Member Function Documentation

◆ clear()

void CScript::clear ( )
inline

◆ DecodeOP_N()

static int CScript::DecodeOP_N ( opcodetype  opcode)
inlinestatic

Encode/decode small integers:

◆ EncodeOP_N()

static opcodetype CScript::EncodeOP_N ( int  n)
inlinestatic

◆ GetOp() [1/2]

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

◆ GetOp() [2/2]

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

◆ GetSigOpCount() [1/2]

unsigned int CScript::GetSigOpCount ( bool  fAccurate) const

Pre-version-0.6, Bitcoin 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 ...

◆ 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:

◆ HasValidOps()

bool CScript::HasValidOps ( ) const

Check if the script contains valid OP_CODES

◆ IsPayToScriptHash()

bool CScript::IsPayToScriptHash ( ) const

◆ IsPayToWitnessScriptHash()

bool CScript::IsPayToWitnessScriptHash ( ) const

◆ IsPushOnly() [1/2]

bool CScript::IsPushOnly ( const_iterator  pc) const

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

◆ IsPushOnly() [2/2]

bool CScript::IsPushOnly ( ) const

◆ IsUnspendable()

bool CScript::IsUnspendable ( ) const
inline

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.

◆ IsWitnessProgram()

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

◆ operator+=()

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

◆ operator<<() [1/5]

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

◆ operator<<() [2/5]

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

◆ operator<<() [3/5]

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

◆ operator<<() [4/5]

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

◆ operator<<() [5/5]

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

◆ push_int64()

CScript& CScript::push_int64 ( int64_t  n)
inlineprotected

◆ SerializationOp()

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

Friends And Related Function Documentation

◆ operator+

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

Member Data Documentation

◆ ADD_SERIALIZE_METHODS

CScript::ADD_SERIALIZE_METHODS

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