mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-06 10:18:44 -05:00
![Wladimir J. van der Laan](/assets/img/avatar_default.png)
b043c4b
fix sdaftuar's nits again (Alex Morcos)a51c79b
Bug fix to RPC test (Alex Morcos)da6ad5f
Add RPC test exercising BIP68 (mempool only) (Suhas Daftuar)c6c2f0f
Implement SequenceLocks functions (Alex Morcos)
65 lines
3.3 KiB
C++
65 lines
3.3 KiB
C++
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2015 The Bitcoin developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_POLICY_POLICY_H
|
|
#define BITCOIN_POLICY_POLICY_H
|
|
|
|
#include "consensus/consensus.h"
|
|
#include "script/interpreter.h"
|
|
#include "script/standard.h"
|
|
|
|
#include <string>
|
|
|
|
class CCoinsViewCache;
|
|
|
|
/** Default for -blockmaxsize and -blockminsize, which control the range of sizes the mining code will create **/
|
|
static const unsigned int DEFAULT_BLOCK_MAX_SIZE = 750000;
|
|
static const unsigned int DEFAULT_BLOCK_MIN_SIZE = 0;
|
|
/** Default for -blockprioritysize, maximum space for zero/low-fee transactions **/
|
|
static const unsigned int DEFAULT_BLOCK_PRIORITY_SIZE = 0;
|
|
/** The maximum size for transactions we're willing to relay/mine */
|
|
static const unsigned int MAX_STANDARD_TX_SIZE = 100000;
|
|
/** Maximum number of signature check operations in an IsStandard() P2SH script */
|
|
static const unsigned int MAX_P2SH_SIGOPS = 15;
|
|
/** The maximum number of sigops we're willing to relay/mine in a single tx */
|
|
static const unsigned int MAX_STANDARD_TX_SIGOPS = MAX_BLOCK_SIGOPS/5;
|
|
/** Default for -maxmempool, maximum megabytes of mempool memory usage */
|
|
static const unsigned int DEFAULT_MAX_MEMPOOL_SIZE = 300;
|
|
/**
|
|
* Standard script verification flags that standard transactions will comply
|
|
* with. However scripts violating these flags may still be present in valid
|
|
* blocks and we must accept those blocks.
|
|
*/
|
|
static const unsigned int STANDARD_SCRIPT_VERIFY_FLAGS = MANDATORY_SCRIPT_VERIFY_FLAGS |
|
|
SCRIPT_VERIFY_DERSIG |
|
|
SCRIPT_VERIFY_STRICTENC |
|
|
SCRIPT_VERIFY_MINIMALDATA |
|
|
SCRIPT_VERIFY_NULLDUMMY |
|
|
SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS |
|
|
SCRIPT_VERIFY_CLEANSTACK |
|
|
SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY |
|
|
SCRIPT_VERIFY_LOW_S;
|
|
|
|
/** For convenience, standard but not mandatory verify flags. */
|
|
static const unsigned int STANDARD_NOT_MANDATORY_VERIFY_FLAGS = STANDARD_SCRIPT_VERIFY_FLAGS & ~MANDATORY_SCRIPT_VERIFY_FLAGS;
|
|
|
|
/** Used as the flags parameter to sequence and nLocktime checks in non-consensus code. */
|
|
static const unsigned int STANDARD_LOCKTIME_VERIFY_FLAGS = LOCKTIME_VERIFY_SEQUENCE |
|
|
LOCKTIME_MEDIAN_TIME_PAST;
|
|
|
|
bool IsStandard(const CScript& scriptPubKey, txnouttype& whichType);
|
|
/**
|
|
* Check for standard transaction types
|
|
* @return True if all outputs (scriptPubKeys) use only standard transaction forms
|
|
*/
|
|
bool IsStandardTx(const CTransaction& tx, std::string& reason);
|
|
/**
|
|
* Check for standard transaction types
|
|
* @param[in] mapInputs Map of previous transactions that have outputs we're spending
|
|
* @return True if all inputs (scriptSigs) use only standard transaction forms
|
|
*/
|
|
bool AreInputsStandard(const CTransaction& tx, const CCoinsViewCache& mapInputs);
|
|
|
|
#endif // BITCOIN_POLICY_POLICY_H
|