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