/ src / test / util / mining.h
mining.h
 1  // Copyright (c) 2019-present 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  #ifndef BITCOIN_TEST_UTIL_MINING_H
 6  #define BITCOIN_TEST_UTIL_MINING_H
 7  
 8  #include <node/miner.h>
 9  
10  #include <memory>
11  #include <string>
12  #include <vector>
13  
14  class CBlock;
15  class CChainParams;
16  class COutPoint;
17  class CScript;
18  namespace node {
19  struct NodeContext;
20  } // namespace node
21  
22  /** Create a blockchain, starting from genesis */
23  std::vector<std::shared_ptr<CBlock>> CreateBlockChain(size_t total_height, const CChainParams& params);
24  
25  /** Returns the generated coin */
26  COutPoint MineBlock(const node::NodeContext&,
27                      const node::BlockAssembler::Options& assembler_options);
28  
29  /**
30   * Returns the generated coin (or Null if the block was invalid).
31   * It is recommended to call RegenerateCommitments before mining the block to avoid merkle tree mismatches.
32   **/
33  COutPoint MineBlock(const node::NodeContext&, std::shared_ptr<CBlock>& block);
34  
35  /**
36   * Returns the generated coin (or Null if the block was invalid).
37   */
38  COutPoint ProcessBlock(const node::NodeContext&, const std::shared_ptr<CBlock>& block);
39  
40  /** Prepare a block to be mined */
41  std::shared_ptr<CBlock> PrepareBlock(const node::NodeContext&);
42  std::shared_ptr<CBlock> PrepareBlock(const node::NodeContext& node,
43                                       const node::BlockAssembler::Options& assembler_options);
44  
45  /** RPC-like helper function, returns the generated coin */
46  COutPoint generatetoaddress(const node::NodeContext&, const std::string& address);
47  
48  #endif // BITCOIN_TEST_UTIL_MINING_H