PRCYCoin  2.0.0.7rc1
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 // Distributed under the MIT software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #ifndef BITCOIN_SCRIPT_STANDARD_H
7 #define BITCOIN_SCRIPT_STANDARD_H
8 
9 #include "script/interpreter.h"
10 #include "uint256.h"
11 
12 #include <boost/variant.hpp>
13 
14 #include <stdint.h>
15 
16 class CKeyID;
17 class CScript;
18 
20 class CScriptID : public uint160
21 {
22 public:
23  CScriptID() : uint160() {}
24  CScriptID(const CScript& in);
25  CScriptID(const uint160& in) : uint160(in) {}
26 };
27 
28 static const unsigned int MAX_OP_RETURN_RELAY = 83;
29 extern unsigned nMaxDatacarrierBytes;
30 
40 static const unsigned int MANDATORY_SCRIPT_VERIFY_FLAGS = SCRIPT_VERIFY_P2SH;
41 
47 static const unsigned int STANDARD_SCRIPT_VERIFY_FLAGS = MANDATORY_SCRIPT_VERIFY_FLAGS |
53 
55 static const unsigned int STANDARD_NOT_MANDATORY_VERIFY_FLAGS = STANDARD_SCRIPT_VERIFY_FLAGS & ~MANDATORY_SCRIPT_VERIFY_FLAGS;
56 
58 {
60  // 'standard' transaction types:
66 };
67 
69 public:
70  friend bool operator==(const CNoDestination &a, const CNoDestination &b) { return true; }
71  friend bool operator<(const CNoDestination &a, const CNoDestination &b) { return true; }
72 };
73 
81 typedef boost::variant<CNoDestination, CKeyID, CScriptID> CTxDestination;
82 
83 const char* GetTxnOutputType(txnouttype t);
84 
85 bool Solver(const CScript& scriptPubKey, txnouttype& typeRet, std::vector<std::vector<unsigned char> >& vSolutionsRet);
86 int ScriptSigArgsExpected(txnouttype t, const std::vector<std::vector<unsigned char> >& vSolutions);
87 bool IsStandard(const CScript& scriptPubKey, txnouttype& whichType);
88 bool ExtractPubKey(const CScript &scriptPubKey, CPubKey& out);
89 bool ExtractDestination(const CScript& scriptPubKey, CTxDestination& addressRet);
90 bool ExtractDestinations(const CScript& scriptPubKey, txnouttype& typeRet, std::vector<CTxDestination>& addressRet, int& nRequiredRet);
91 
94 CScript GetScriptForMultisig(int nRequired, const std::vector<CPubKey>& keys);
95 
96 #endif // BITCOIN_SCRIPT_STANDARD_H
SCRIPT_VERIFY_NULLDUMMY
@ SCRIPT_VERIFY_NULLDUMMY
Definition: interpreter.h:51
GetScriptForDestination
CScript GetScriptForDestination(const CPubKey &dest)
Definition: standard.cpp:292
b
void const uint64_t * b
Definition: field_5x52_asm_impl.h:10
uint256.h
SCRIPT_VERIFY_MINIMALDATA
@ SCRIPT_VERIFY_MINIMALDATA
Definition: interpreter.h:61
interpreter.h
nMaxDatacarrierBytes
unsigned nMaxDatacarrierBytes
Definition: standard.cpp:16
CKeyID
A reference to a CKey: the Hash160 of its serialized public key.
Definition: pubkey.h:29
TX_NONSTANDARD
@ TX_NONSTANDARD
Definition: standard.h:59
CNoDestination::operator==
friend bool operator==(const CNoDestination &a, const CNoDestination &b)
Definition: standard.h:70
SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS
@ SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS
Definition: interpreter.h:71
TX_PUBKEYHASH
@ TX_PUBKEYHASH
Definition: standard.h:62
ExtractPubKey
bool ExtractPubKey(const CScript &scriptPubKey, CPubKey &out)
Definition: standard.cpp:185
TX_MULTISIG
@ TX_MULTISIG
Definition: standard.h:64
GetScriptForMultisig
CScript GetScriptForMultisig(int nRequired, const std::vector< CPubKey > &keys)
Definition: standard.cpp:298
CNoDestination::operator<
friend bool operator<(const CNoDestination &a, const CNoDestination &b)
Definition: standard.h:71
TX_PUBKEY
@ TX_PUBKEY
Definition: standard.h:61
TX_SCRIPTHASH
@ TX_SCRIPTHASH
Definition: standard.h:63
ScriptSigArgsExpected
int ScriptSigArgsExpected(txnouttype t, const std::vector< std::vector< unsigned char > > &vSolutions)
TX_NULL_DATA
@ TX_NULL_DATA
Definition: standard.h:65
CScript
Serialized script, used inside transaction inputs and outputs.
Definition: script.h:363
CNoDestination
Definition: standard.h:68
CTxDestination
boost::variant< CNoDestination, CKeyID, CScriptID > CTxDestination
A txout script template with a specific destination.
Definition: standard.h:81
ExtractDestinations
bool ExtractDestinations(const CScript &scriptPubKey, txnouttype &typeRet, std::vector< CTxDestination > &addressRet, int &nRequiredRet)
Definition: standard.cpp:223
uint160
160-bit unsigned big integer.
Definition: uint256.h:27
CPubKey
An encapsulated public key.
Definition: pubkey.h:37
CScriptID::CScriptID
CScriptID(const uint160 &in)
Definition: standard.h:25
GetTxnOutputType
const char * GetTxnOutputType(txnouttype t)
Definition: standard.cpp:20
SCRIPT_VERIFY_STRICTENC
@ SCRIPT_VERIFY_STRICTENC
Definition: interpreter.h:41
SCRIPT_VERIFY_P2SH
@ SCRIPT_VERIFY_P2SH
Definition: interpreter.h:36
txnouttype
txnouttype
Definition: standard.h:57
CScriptID
A reference to a CScript: the Hash160 of its serialization (see script.h)
Definition: standard.h:20
SCRIPT_VERIFY_DERSIG
@ SCRIPT_VERIFY_DERSIG
Definition: interpreter.h:44
CScriptID::CScriptID
CScriptID()
Definition: standard.h:23
Solver
bool Solver(const CScript &scriptPubKey, txnouttype &typeRet, std::vector< std::vector< unsigned char > > &vSolutionsRet)
Return public keys or hashes from scriptPubKey, for 'standard' transaction types.
Definition: standard.cpp:41
ExtractDestination
bool ExtractDestination(const CScript &scriptPubKey, CTxDestination &addressRet)
Definition: standard.cpp:199
IsStandard
bool IsStandard(const CScript &scriptPubKey, txnouttype &whichType)
Definition: standard.cpp:165