PIVX Core  5.6.99
P2P Digital Currency
standard.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2014 The Bitcoin developers
3 // Copyright (c) 2017-2021 The PIVX Core developers
4 // Distributed under the MIT software license, see the accompanying
5 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
6 
7 #ifndef PIVX_SCRIPT_STANDARD_H
8 #define PIVX_SCRIPT_STANDARD_H
9 
10 #include "script/interpreter.h"
11 #include "uint256.h"
12 
13 #include <boost/variant.hpp>
14 
15 #include <stdint.h>
16 
17 static const bool DEFAULT_ACCEPT_DATACARRIER = true;
18 
19 class CKeyID;
20 class CScript;
21 
23 class CScriptID : public uint160
24 {
25 public:
26  CScriptID() : uint160() {}
27  CScriptID(const CScript& in);
28  CScriptID(const uint160& in) : uint160(in) {}
29 };
30 
31 static const unsigned int MAX_OP_RETURN_RELAY = 83;
32 extern unsigned nMaxDatacarrierBytes;
33 
43 static const unsigned int MANDATORY_SCRIPT_VERIFY_FLAGS = SCRIPT_VERIFY_P2SH;
44 
46 {
48  // 'standard' transaction types:
56 };
57 
59 public:
60  friend bool operator==(const CNoDestination &a, const CNoDestination &b) { return true; }
61  friend bool operator<(const CNoDestination &a, const CNoDestination &b) { return true; }
62 };
63 
72 typedef boost::variant<CNoDestination, CKeyID, CScriptID, CExchangeKeyID> CTxDestination;
73 
75 bool IsValidDestination(const CTxDestination& dest);
76 
77 const char* GetTxnOutputType(txnouttype t);
78 
90 bool Solver(const CScript& scriptPubKey, txnouttype& typeRet, std::vector<std::vector<unsigned char> >& vSolutionsRet);
91 
98 bool ExtractDestination(const CScript& scriptPubKey, CTxDestination& addressRet, bool fColdStake = false);
99 
110 bool ExtractDestinations(const CScript& scriptPubKey, txnouttype& typeRet, std::vector<CTxDestination>& addressRet, int& nRequiredRet);
111 
118 
120 CScript GetScriptForRawPubKey(const CPubKey& pubkey);
121 
123 CScript GetScriptForMultisig(int nRequired, const std::vector<CPubKey>& keys);
124 
126 CScript GetScriptForStakeDelegation(const CKeyID& stakingKey, const CKeyID& spendingKey);
127 CScript GetScriptForStakeDelegationLOF(const CKeyID& stakingKey, const CKeyID& spendingKey);
128 
130 CScript GetScriptForOpReturn(const uint256& message);
131 
132 #endif // PIVX_SCRIPT_STANDARD_H
A reference to a CKey: the Hash160 of its serialized public key.
Definition: pubkey.h:21
friend bool operator<(const CNoDestination &a, const CNoDestination &b)
Definition: standard.h:61
friend bool operator==(const CNoDestination &a, const CNoDestination &b)
Definition: standard.h:60
An encapsulated public key.
Definition: pubkey.h:44
Serialized script, used inside transaction inputs and outputs.
Definition: script.h:381
A reference to a CScript: the Hash160 of its serialization (see script.h)
Definition: standard.h:24
CScriptID()
Definition: standard.h:26
CScriptID(const uint160 &in)
Definition: standard.h:28
160-bit opaque blob.
Definition: uint256.h:127
256-bit opaque blob.
Definition: uint256.h:138
@ SCRIPT_VERIFY_P2SH
Definition: interpreter.h:36
boost::variant< CNoDestination, CKeyID, CScriptID, CExchangeKeyID > CTxDestination
A txout script template with a specific destination.
Definition: standard.h:72
CScript GetScriptForOpReturn(const uint256 &message)
Generate an OP_RETURN output script with the given data.
Definition: standard.cpp:322
bool ExtractDestinations(const CScript &scriptPubKey, txnouttype &typeRet, std::vector< CTxDestination > &addressRet, int &nRequiredRet)
Parse a standard scriptPubKey with one or more destination addresses.
Definition: standard.cpp:195
CScript GetScriptForStakeDelegation(const CKeyID &stakingKey, const CKeyID &spendingKey)
Generate a P2CS script for the given staker and owner keys.
Definition: standard.cpp:291
bool ExtractDestination(const CScript &scriptPubKey, CTxDestination &addressRet, bool fColdStake=false)
Parse a standard scriptPubKey for the destination address.
Definition: standard.cpp:162
CScript GetScriptForMultisig(int nRequired, const std::vector< CPubKey > &keys)
Generate a multisig script.
Definition: standard.cpp:311
txnouttype
Definition: standard.h:46
@ TX_PUBKEYHASH
Definition: standard.h:50
@ TX_PUBKEY
Definition: standard.h:49
@ TX_NULL_DATA
Definition: standard.h:53
@ TX_COLDSTAKE
Definition: standard.h:54
@ TX_SCRIPTHASH
Definition: standard.h:51
@ TX_NONSTANDARD
Definition: standard.h:47
@ TX_MULTISIG
Definition: standard.h:52
@ TX_EXCHANGEADDR
Definition: standard.h:55
CScript GetScriptForStakeDelegationLOF(const CKeyID &stakingKey, const CKeyID &spendingKey)
Definition: standard.cpp:301
bool Solver(const CScript &scriptPubKey, txnouttype &typeRet, std::vector< std::vector< unsigned char > > &vSolutionsRet)
Parse a scriptPubKey and identify script type for standard scripts.
Definition: standard.cpp:90
CScript GetScriptForRawPubKey(const CPubKey &pubkey)
Generate a P2PK script for the given pubkey.
Definition: standard.cpp:286
const char * GetTxnOutputType(txnouttype t)
Definition: standard.cpp:18
unsigned nMaxDatacarrierBytes
Definition: standard.cpp:14
bool IsValidDestination(const CTxDestination &dest)
Check whether a CTxDestination is a CNoDestination.
Definition: standard.cpp:329
CScript GetScriptForDestination(const CTxDestination &dest)
Generate a PIVX scriptPubKey for the given CTxDestination.
Definition: standard.cpp:278