/root/bitcoin/src/kernel/chain.h
Line | Count | Source |
1 | | // Copyright (c) 2022-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_KERNEL_CHAIN_H |
6 | | #define BITCOIN_KERNEL_CHAIN_H |
7 | | |
8 | | #include <attributes.h> |
9 | | |
10 | | #include <iostream> |
11 | | |
12 | | class CBlock; |
13 | | class CBlockIndex; |
14 | | class CBlockUndo; |
15 | | class uint256; |
16 | | |
17 | | namespace interfaces { |
18 | | //! Block data sent with blockConnected, blockDisconnected notifications. |
19 | | struct BlockInfo { |
20 | | const uint256& hash; |
21 | | const uint256* prev_hash = nullptr; |
22 | | int height = -1; |
23 | | int file_number = -1; |
24 | | unsigned data_pos = 0; |
25 | | const CBlock* data = nullptr; |
26 | | const CBlockUndo* undo_data = nullptr; |
27 | | // The maximum time in the chain up to and including this block. |
28 | | // A timestamp that can only move forward. |
29 | | unsigned int chain_time_max{0}; |
30 | | |
31 | 0 | BlockInfo(const uint256& hash LIFETIMEBOUND) : hash(hash) {} |
32 | | }; |
33 | | } // namespace interfaces |
34 | | |
35 | | namespace kernel { |
36 | | struct ChainstateRole; |
37 | | //! Return data from block index. |
38 | | interfaces::BlockInfo MakeBlockInfo(const CBlockIndex* block_index, const CBlock* data = nullptr); |
39 | | std::ostream& operator<<(std::ostream& os, const ChainstateRole& role); |
40 | | } // namespace kernel |
41 | | |
42 | | #endif // BITCOIN_KERNEL_CHAIN_H |