Dash Core Source Documentation (0.16.0.1)

Find detailed information regarding the Dash Core source code.

standard.cpp File Reference
#include <script/standard.h>
#include <pubkey.h>
#include <script/script.h>
#include <util.h>
#include <utilstrencodings.h>
+ Include dependency graph for standard.cpp:

Go to the source code of this file.

Typedefs

typedef std::vector< unsigned char > valtype
 

Functions

const char * GetTxnOutputType (txnouttype t)
 Get the name of a txnouttype as a C string, or nullptr if unknown. More...
 
bool Solver (const CScript &scriptPubKey, txnouttype &typeRet, 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...
 
bool IsValidDestination (const CTxDestination &dest)
 Check whether a CTxDestination is a CNoDestination. More...
 

Variables

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

Typedef Documentation

◆ valtype

typedef std::vector<unsigned char> valtype

Definition at line 14 of file standard.cpp.

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, and P2SH scripts.

Definition at line 158 of file standard.cpp.

References CPubKey::GetID(), CPubKey::IsValid(), Solver(), TX_PUBKEY, TX_PUBKEYHASH, and TX_SCRIPTHASH.

Referenced by CheckProRegTx(), CheckProUpRegTx(), CheckWalletOwnsScript(), TransactionRecord::decomposeTransaction(), ExtractDestinations(), CWallet::GetAccountName(), CWallet::GetAddressBalances(), CWallet::GetAddressGroupings(), CWalletTx::GetAmounts(), getblocktemplate(), CMasternodePayments::GetMasternodeTxOuts(), GetNextMasternodeForPayment(), CWallet::GetOutpointAndKeysFromOutput(), getreceivedbyaccount(), CSuperblockManager::GetRequiredPaymentsString(), GetRequiredPaymentsString(), CSuperblockManager::GetSuperblockPayments(), ImportScript(), CWallet::IsChange(), CMasternodePayments::IsTransactionValid(), CSuperblock::IsValid(), CWallet::ListCoins(), ListReceived(), listunspent(), CProRegTx::MakeSignString(), masternodelist(), ProcessImport(), PaymentServer::processPaymentRequest(), CWallet::SelectCoinsGroupedByAddresses(), TransactionDesc::toHTML(), CProRegTx::ToJson(), CDeterministicMNState::ToJson(), CProUpServTx::ToJson(), CProUpRegTx::ToJson(), CDeterministicMN::ToJson(), CProRegTx::ToString(), CDeterministicMNState::ToString(), CProUpServTx::ToString(), CProUpRegTx::ToString(), MasternodeList::updateDIP3List(), CoinControlDialog::updateLabels(), and CoinControlDialog::updateView().

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

Definition at line 188 of file standard.cpp.

References ExtractDestination(), CPubKey::GetID(), CPubKey::IsValid(), Solver(), TX_MULTISIG, TX_NONSTANDARD, and TX_NULL_DATA.

Referenced by CAffectedKeysVisitor::Process(), and ScriptPubKeyToUniv().

◆ GetScriptForDestination()

◆ GetScriptForMultisig()

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

Generate a multisig script.

Definition at line 269 of file standard.cpp.

References CScript::EncodeOP_N(), OP_CHECKMULTISIG, and ToByteVector().

Referenced by CreateMultisigRedeemscript(), and MutateTxAddOutMultiSig().

◆ GetScriptForRawPubKey()

◆ GetTxnOutputType()

const char* GetTxnOutputType ( txnouttype  t)

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

Definition at line 21 of file standard.cpp.

References TX_MULTISIG, TX_NONSTANDARD, TX_NULL_DATA, TX_PUBKEY, TX_PUBKEYHASH, and TX_SCRIPTHASH.

Referenced by ScriptPubKeyToUniv().

◆ IsValidDestination()

◆ Solver()

bool Solver ( const CScript scriptPubKey,
txnouttype typeRet,
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]typeRetThe script type
[out]vSolutionsRetVector of parsed pubkeys and hashes
Returns
True if script matches standard template

Definition at line 35 of file standard.cpp.

References prevector< N, T, Size, Diff >::begin(), CScript::clear(), CScript::DecodeOP_N(), prevector< N, T, Size, Diff >::end(), CScript::GetOp(), CScript::IsPayToScriptHash(), CScript::IsPushOnly(), OP_0, OP_1, OP_16, OP_CHECKMULTISIG, OP_CHECKSIG, OP_DUP, OP_EQUALVERIFY, OP_HASH160, OP_PUBKEY, OP_PUBKEYHASH, OP_PUBKEYS, OP_RETURN, OP_SMALLINTEGER, prevector< N, T, Size, Diff >::size(), TX_MULTISIG, TX_NONSTANDARD, TX_NULL_DATA, TX_PUBKEY, TX_PUBKEYHASH, and TX_SCRIPTHASH.

Referenced by AreInputsStandard(), CombineSignatures(), ExtractDestination(), ExtractDestinations(), IsMine(), CBloomFilter::IsRelevantAndUpdate(), IsStandard(), and SignStep().

Variable Documentation

◆ fAcceptDatacarrier

bool fAcceptDatacarrier = DEFAULT_ACCEPT_DATACARRIER

A data carrying output is an unspendable output containing data.

The script type is designated as TX_NULL_DATA.

Definition at line 16 of file standard.cpp.

Referenced by AppInitParameterInteraction(), and IsStandard().

◆ nMaxDatacarrierBytes

unsigned nMaxDatacarrierBytes = MAX_OP_RETURN_RELAY

Maximum size of TX_NULL_DATA scripts that this node considers standard.

Definition at line 17 of file standard.cpp.

Referenced by AppInitParameterInteraction(), and IsStandard().

Released under the MIT license