Bitcoin Core  0.18.99
P2P Digital Currency
Classes | Typedefs | Enumerations | Functions | Variables
standard.h File Reference
#include <script/interpreter.h>
#include <uint256.h>
#include <boost/variant.hpp>
#include <stdint.h>
Include dependency graph for standard.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  CScriptID
 A reference to a CScript: the Hash160 of its serialization (see script.h) More...
 
class  CNoDestination
 
struct  PKHash
 
struct  ScriptHash
 
struct  WitnessV0ScriptHash
 
struct  WitnessV0KeyHash
 
struct  WitnessUnknown
 CTxDestination subtype to encode any future Witness version. More...
 

Typedefs

typedef boost::variant< CNoDestination, PKHash, ScriptHash, WitnessV0ScriptHash, WitnessV0KeyHash, WitnessUnknownCTxDestination
 A txout script template with a specific destination. More...
 

Enumerations

enum  txnouttype {
  TX_NONSTANDARD, TX_PUBKEY, TX_PUBKEYHASH, TX_SCRIPTHASH,
  TX_MULTISIG, TX_NULL_DATA, TX_WITNESS_V0_SCRIPTHASH, TX_WITNESS_V0_KEYHASH,
  TX_WITNESS_UNKNOWN
}
 

Functions

bool IsValidDestination (const CTxDestination &dest)
 Check whether a CTxDestination is a CNoDestination. More...
 
const char * GetTxnOutputType (txnouttype t)
 Get the name of a txnouttype as a C string, or nullptr if unknown. More...
 
txnouttype Solver (const CScript &scriptPubKey, std::vector< std::vector< unsigned char >> &vSolutionsRet)
 Parse a scriptPubKey and identify script type for standard scripts. More...
 
bool ExtractDestination (const CScript &scriptPubKey, CTxDestination &addressRet)
 Parse a standard scriptPubKey for the destination address. More...
 
bool ExtractDestinations (const CScript &scriptPubKey, txnouttype &typeRet, std::vector< CTxDestination > &addressRet, int &nRequiredRet)
 Parse a standard scriptPubKey with one or more destination addresses. More...
 
CScript GetScriptForDestination (const CTxDestination &dest)
 Generate a Bitcoin scriptPubKey for the given CTxDestination. More...
 
CScript GetScriptForRawPubKey (const CPubKey &pubkey)
 Generate a P2PK script for the given pubkey. More...
 
CScript GetScriptForMultisig (int nRequired, const std::vector< CPubKey > &keys)
 Generate a multisig script. More...
 
CScript GetScriptForWitness (const CScript &redeemscript)
 Generate a pay-to-witness script for the given redeem script. More...
 

Variables

bool fAcceptDatacarrier
 A data carrying output is an unspendable output containing data. More...
 
unsigned nMaxDatacarrierBytes
 Maximum size of TX_NULL_DATA scripts that this node considers standard. More...
 

Typedef Documentation

◆ CTxDestination

A txout script template with a specific destination.

It is either:

Definition at line 139 of file standard.h.

Enumeration Type Documentation

◆ txnouttype

enum txnouttype
Enumerator
TX_NONSTANDARD 
TX_PUBKEY 
TX_PUBKEYHASH 
TX_SCRIPTHASH 
TX_MULTISIG 
TX_NULL_DATA 

unspendable OP_RETURN script that carries data

TX_WITNESS_V0_SCRIPTHASH 
TX_WITNESS_V0_KEYHASH 
TX_WITNESS_UNKNOWN 

Only for Witness versions not already defined above.

Definition at line 56 of file standard.h.

Function Documentation

◆ ExtractDestination()

bool ExtractDestination ( const CScript scriptPubKey,
CTxDestination addressRet 
)

Parse a standard scriptPubKey for the destination address.

Assigns result to the addressRet parameter and returns true if successful. For multisig scripts, instead use ExtractDestinations. Currently only works for P2PK, P2PKH, P2SH, P2WPKH, and P2WSH scripts.

Definition at line 159 of file standard.cpp.

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

◆ ExtractDestinations()

bool ExtractDestinations ( const CScript scriptPubKey,
txnouttype typeRet,
std::vector< CTxDestination > &  addressRet,
int &  nRequiredRet 
)

Parse a standard scriptPubKey with one or more destination addresses.

For multisig scripts, this populates the addressRet vector with the pubkey IDs and nRequiredRet with the n required to spend. For other destinations, addressRet is populated with a single value and nRequiredRet is set to 1. Returns true if successful.

Note: this function confuses destinations (a subset of CScripts that are encodable as an address) with key identifiers (of keys involved in a CScript), and its use should be phased out.

Definition at line 203 of file standard.cpp.

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

◆ GetScriptForDestination()

CScript GetScriptForDestination ( const CTxDestination dest)

Generate a Bitcoin scriptPubKey for the given CTxDestination.

Returns a P2PKH script for a CKeyID destination, a P2SH script for a CScriptID, and an empty script for CNoDestination.

Definition at line 292 of file standard.cpp.

Here is the caller graph for this function:

◆ GetScriptForMultisig()

CScript GetScriptForMultisig ( int  nRequired,
const std::vector< CPubKey > &  keys 
)

Generate a multisig script.

Definition at line 305 of file standard.cpp.

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

◆ GetScriptForRawPubKey()

CScript GetScriptForRawPubKey ( const CPubKey pubkey)

Generate a P2PK script for the given pubkey.

Definition at line 300 of file standard.cpp.

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

◆ GetScriptForWitness()

CScript GetScriptForWitness ( const CScript redeemscript)

Generate a pay-to-witness script for the given redeem script.

If the redeem script is P2PK or P2PKH, this returns a P2WPKH script, otherwise it returns a P2WSH script.

TODO: replace calls to GetScriptForWitness with GetScriptForDestination using the various witness-specific CTxDestination subtypes.

Definition at line 316 of file standard.cpp.

Here is the call graph for this function:

◆ GetTxnOutputType()

const char* GetTxnOutputType ( txnouttype  t)

Get the name of a txnouttype as a C string, or nullptr if unknown.

Definition at line 31 of file standard.cpp.

Here is the caller graph for this function:

◆ IsValidDestination()

bool IsValidDestination ( const CTxDestination dest)

Check whether a CTxDestination is a CNoDestination.

Definition at line 328 of file standard.cpp.

Here is the caller graph for this function:

◆ Solver()

txnouttype Solver ( const CScript scriptPubKey,
std::vector< std::vector< unsigned char >> &  vSolutionsRet 
)

Parse a scriptPubKey and identify script type for standard scripts.

If successful, returns script type and parsed pubkeys or hashes, depending on the type. For example, for a P2SH script, vSolutionsRet will contain the script hash, for P2PKH it will contain the key hash, etc.

Parameters
[in]scriptPubKeyScript to parse
[out]vSolutionsRetVector of parsed pubkeys and hashes
Returns
The script type. TX_NONSTANDARD represents a failed solve.

Definition at line 94 of file standard.cpp.

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

Variable Documentation

◆ fAcceptDatacarrier

bool fAcceptDatacarrier

A data carrying output is an unspendable output containing data.

The script type is designated as TX_NULL_DATA.

Definition at line 17 of file standard.cpp.

◆ nMaxDatacarrierBytes

unsigned nMaxDatacarrierBytes

Maximum size of TX_NULL_DATA scripts that this node considers standard.

Definition at line 18 of file standard.cpp.