blukecoin.cpp raw
1 // Copyright (c) 2026 The Limenka 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 <node/blukecoin.h>
6
7 #include <arith_uint256.h>
8 #include <consensus/params.h>
9 #include <logging.h>
10 #include <pow.h>
11 #include <primitives/block.h>
12
13 namespace node {
14
15 std::optional<bool> BlukecoinManager::HeaderLooksBlake2b(const CBlockHeader& header, const Consensus::Params& params)
16 {
17 auto target{DeriveTarget(header.nBits, params.powLimit)};
18 if (!target) return std::nullopt; // nBits outside mainnet range: a low-work testnet fork
19 return UintToArith256(header.GetHash()) > *target;
20 }
21
22 void BlukecoinManager::NoteDetected(const CService& addr)
23 {
24 LOCK(m_mutex);
25 if (m_known.insert(addr).second) {
26 LogPrintf("Blukecoin (bitcoin-blake2b) node detected: %s\n", addr.ToStringAddrPort());
27 }
28 }
29
30 bool BlukecoinManager::IsKnown(const CService& addr) const
31 {
32 LOCK(m_mutex);
33 return m_known.count(addr) != 0;
34 }
35
36 std::vector<CService> BlukecoinManager::GetKnown() const
37 {
38 LOCK(m_mutex);
39 return {m_known.begin(), m_known.end()};
40 }
41
42 } // namespace node
43