LCOV - code coverage report
Current view: top level - src/node - types.h Coverage Total Hit
Test: total_coverage.info Lines: 100.0 % 1 1
Test Date: 2025-03-28 05:06:44 Functions: - 0 0
Branches: 50.0 % 6 3

             Branch data     Line data    Source code
       1                 :             : // Copyright (c) 2010-2021 The Bitcoin Core developers
       2                 :             : // Distributed under the MIT software license, see the accompanying
       3                 :             : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
       4                 :             : 
       5                 :             : //! @file node/types.h is a home for public enum and struct type definitions
       6                 :             : //! that are used internally by node code, but also used externally by wallet,
       7                 :             : //! mining or GUI code.
       8                 :             : //!
       9                 :             : //! This file is intended to define only simple types that do not have external
      10                 :             : //! dependencies. More complicated types should be defined in dedicated header
      11                 :             : //! files.
      12                 :             : 
      13                 :             : #ifndef BITCOIN_NODE_TYPES_H
      14                 :             : #define BITCOIN_NODE_TYPES_H
      15                 :             : 
      16                 :             : #include <consensus/amount.h>
      17                 :             : #include <cstddef>
      18                 :             : #include <policy/policy.h>
      19                 :             : #include <script/script.h>
      20                 :             : #include <util/time.h>
      21                 :             : 
      22                 :             : namespace node {
      23                 :             : enum class TransactionError {
      24                 :             :     OK, //!< No error
      25                 :             :     MISSING_INPUTS,
      26                 :             :     ALREADY_IN_UTXO_SET,
      27                 :             :     MEMPOOL_REJECTED,
      28                 :             :     MEMPOOL_ERROR,
      29                 :             :     MAX_FEE_EXCEEDED,
      30                 :             :     MAX_BURN_EXCEEDED,
      31                 :             :     INVALID_PACKAGE,
      32                 :             : };
      33                 :             : 
      34   [ +  -  +  - ]:      206776 : struct BlockCreateOptions {
                 [ +  - ]
      35                 :             :     /**
      36                 :             :      * Set false to omit mempool transactions
      37                 :             :      */
      38                 :             :     bool use_mempool{true};
      39                 :             :     /**
      40                 :             :      * The default reserved weight for the fixed-size block header,
      41                 :             :      * transaction count and coinbase transaction.
      42                 :             :      */
      43                 :             :     size_t block_reserved_weight{DEFAULT_BLOCK_RESERVED_WEIGHT};
      44                 :             :     /**
      45                 :             :      * The maximum additional sigops which the pool will add in coinbase
      46                 :             :      * transaction outputs.
      47                 :             :      */
      48                 :             :     size_t coinbase_output_max_additional_sigops{400};
      49                 :             :     /**
      50                 :             :      * Script to put in the coinbase transaction. The default is an
      51                 :             :      * anyone-can-spend dummy.
      52                 :             :      *
      53                 :             :      * Should only be used for tests, when the default doesn't suffice.
      54                 :             :      *
      55                 :             :      * Note that higher level code like the getblocktemplate RPC may omit the
      56                 :             :      * coinbase transaction entirely. It's instead constructed by pool software
      57                 :             :      * using fields like coinbasevalue, coinbaseaux and default_witness_commitment.
      58                 :             :      * This software typically also controls the payout outputs, even for solo
      59                 :             :      * mining.
      60                 :             :      *
      61                 :             :      * The size and sigops are not checked against
      62                 :             :      * coinbase_max_additional_weight and coinbase_output_max_additional_sigops.
      63                 :             :      */
      64                 :             :     CScript coinbase_output_script{CScript() << OP_TRUE};
      65                 :             : };
      66                 :             : 
      67                 :             : struct BlockWaitOptions {
      68                 :             :     /**
      69                 :             :      * How long to wait before returning nullptr instead of a new template.
      70                 :             :      * Default is to wait forever.
      71                 :             :      */
      72                 :             :     MillisecondsDouble timeout{MillisecondsDouble::max()};
      73                 :             : 
      74                 :             :     /**
      75                 :             :      * The wait method will not return a new template unless it has fees at
      76                 :             :      * least fee_threshold sats higher than the current template, or unless
      77                 :             :      * the chain tip changes and the previous template is no longer valid.
      78                 :             :      *
      79                 :             :      * A caller may not be interested in templates with higher fees, and
      80                 :             :      * determining whether fee_threshold is reached is also expensive. So as
      81                 :             :      * an optimization, when fee_threshold is set to MAX_MONEY (default), the
      82                 :             :      * implementation is able to be much more efficient, skipping expensive
      83                 :             :      * checks and only returning new templates when the chain tip changes.
      84                 :             :      */
      85                 :             :     CAmount fee_threshold{MAX_MONEY};
      86                 :             : };
      87                 :             : 
      88                 :             : } // namespace node
      89                 :             : 
      90                 :             : #endif // BITCOIN_NODE_TYPES_H
        

Generated by: LCOV version 2.0-1