chain.cpp
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 #include <kernel/chain.h> 6 7 #include <chain.h> 8 #include <kernel/cs_main.h> 9 #include <kernel/types.h> 10 #include <sync.h> 11 #include <uint256.h> 12 13 class CBlock; 14 15 using kernel::ChainstateRole; 16 17 namespace kernel { 18 interfaces::BlockInfo MakeBlockInfo(const CBlockIndex* index, const CBlock* data) 19 { 20 interfaces::BlockInfo info{index ? *index->phashBlock : uint256::ZERO}; 21 if (index) { 22 info.prev_hash = index->pprev ? index->pprev->phashBlock : nullptr; 23 info.height = index->nHeight; 24 info.chain_time_max = index->GetBlockTimeMax(); 25 LOCK(::cs_main); 26 info.file_number = index->nFile; 27 info.data_pos = index->nDataPos; 28 } 29 info.data = data; 30 return info; 31 } 32 33 std::ostream& operator<<(std::ostream& os, const ChainstateRole& role) { 34 if (!role.validated) { 35 os << "assumedvalid"; 36 } else if (role.historical) { 37 os << "background"; 38 } else { 39 os << "normal"; 40 } 41 return os; 42 } 43 } // namespace kernel