Skip to content

feat: modern C++23 node with coroutine networking and fast IBD#151

Open
fpelliccioni wants to merge 1 commit intomasterfrom
version1
Open

feat: modern C++23 node with coroutine networking and fast IBD#151
fpelliccioni wants to merge 1 commit intomasterfrom
version1

Conversation

@fpelliccioni
Copy link
Copy Markdown
Contributor

@fpelliccioni fpelliccioni commented Dec 18, 2025

Overview

Complete rewrite of the Knuth node networking and sync layers using C++23 coroutines, replacing the legacy callback-based architecture. This branch (version1) is the integration branch for incremental merges toward master.

Architecture Changes

Coroutine Migration (Phases 0–7)

  • Phase 0: C++23 coroutine detection and smoke tests
  • Phase 1: asio::thread_pool, async_channel, awaitable_helpers infrastructure
  • Phase 2–3: peer_session replacing proxy/channel with concurrent read/write/timer loops
  • Phase 4: peer_manager replacing pending collections (strand-based, no mutex)
  • Phase 5: Protocol functions as free coroutines (handshake, ping/pong, address exchange)
  • Phase 6: p2p_node unified networking class
  • Phase 7: Legacy code removal, headers-first sync, TUI dashboard

Networking

  • Structured concurrency: task_group nursery pattern for peer lifecycle management
  • peer_supervisor: manages all peer tasks with automatic cleanup
  • peer_database: unified peer management with reputation tracking (replaces hosts + banlist)
  • BIP155 addrv2: modern address protocol support
  • Misbehavior scoring: BCHN-style threshold-based banning

Sync System (CSP Pattern)

  • Orchestrator: CSP-based pipeline with std::variant channels
  • Parallel block download: lock-free chunk coordinator with atomic CAS
  • Fast IBD: merkle-only validation below checkpoint, parallel storage writes
  • Zero-copy UTXO builder: minimal parser, bloom filter skip-insert (2x speedup)
  • Slow peer detection: automatic filtering based on download performance

Storage

  • Flat file blocks: BCHN-style blk*.dat/rev*.dat replacing LMDB for block data
  • UTXO-Z: dedicated UTXO database with full and compact storage modes
  • header_index: SoA in-memory index (~137 MB for 1M+ blocks) with skip-pointer traversal

Performance

Metric Result
Full BCH sync (930K blocks) ~37 min
UTXO set build (with bloom) ~5.5 min
Sustained throughput 93+ MB/s
Block storage overhead +1.4 min (parallel writes)

Status

  • Compiles with GCC 13+ / Clang 17+
  • Unit tests pass
  • Full mainnet BCH sync verified
  • Clean shutdown (Ctrl-C)
  • CI pipeline integration
  • Full validation mode (above checkpoint) end-to-end testing
  • Reorg / undo path testing
  • API compatibility verification

Dependencies

  • utxo-z — UTXO set database
  • Standalone Asio 1.36.0
  • Boost 1.87+ (concurrent_flat_map, bloom)

Note

High Risk
High risk because it rewires core blockchain interfaces to coroutine-based APIs, introduces new header indexing/UTXO storage paths (including optional embedded bloom and compact mode), and changes build/dependency configuration that can affect runtime correctness and packaging.

Overview
Refactors the blockchain module away from the legacy safe_chain/fast_chain callback interfaces into a unified block_chain API built around C++23 asio coroutines, std::expected, and broadcaster-based subscriptions, adding explicit support for headers-first sync and fast IBD workflows (chunk validation/storage and header organization).

Adds new storage/acceleration building blocks: a header_index re-export, a new header_organizer + validate_header, and a new utxo_builder with a zero-copy/raw parsing path for UTXO-Z deltas plus optional embedded UTXO bloom and UTXO-Z compact mode controlled via new CMake/Conan options. Build and packaging are updated accordingly (new CMake options like KTH_ASIO_STANDALONE, KTH_WITH_JEMALLOC, KTH_WITH_STATS; new Conan deps utxoz, asio, simdjson, ftxui; exports now include data/*; and some tests/TSAN targets are restructured/guarded).

Written by Cursor Bugbot for commit be8c3a5. This will update automatically on new commits. Configure here.

Summary by CodeRabbit

  • New Features

    • Display mode config: tui, log, daemon with parsing and string conversion.
    • Network address exposes routable check.
    • Coroutine/Asio utilities: async channels (multi/event/concurrent), awaitable helpers (with_timeout, delay, post_to), and an awaitable-wrapped expected alias.
  • Chores

    • Enforced C++23 and feature checks (coroutines, concepts, std::expected) with compiler info exposure.
    • Build/config cleanups: include-guard fix, error-macro rename, hash/include adjustments, trimmed deprecated includes, and minor header include reorganizations.

@fpelliccioni fpelliccioni force-pushed the version1 branch 2 times, most recently from 1863436 to 9bcd567 Compare January 4, 2026 23:56
@fpelliccioni fpelliccioni changed the title Version1 feat: modern C++23 node with coroutine networking and fast IBD Mar 19, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 19, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • ✅ Review completed - (🔄 Check again to review again)
📝 Walkthrough

Walkthrough

Adds compile-time compiler/feature checks, new coroutine/asio utilities (channels, awaitable helpers, executors), a display_mode enum and parsing, updates umbrella includes, and small fixes in config, message, math, and logging headers.

Changes

Cohort / File(s) Summary
Compiler & Feature Validation
src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp
New header enforcing C++23+, coroutine/concepts/std::expected availability via preprocessor checks and compile-time probes; adds kth::infrastructure::constraints::compiler_info.
Infrastructure Umbrella
src/infrastructure/include/kth/infrastructure/infrastructure.hpp
Reordered/updated includes: added compiler_constraints.hpp, coroutine-config and new async utility headers (utility/coroutine_config.hpp, utility/async_channel.hpp, utility/awaitable_helpers.hpp, utility/cpu_executor.hpp, utility/task_group.hpp); removed legacy dispatcher/sequencer/synchronizer includes and commented deprecated includes.
Async/Coroutine Utilities
src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp, src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp
New channel aliases (async_channel, concurrent_channel, event_channel, multi_channel) with conditional error_code mapping; awaitable helpers with_timeout (two overloads), delay, and post_to.
Asio Helper & Awaitables
src/infrastructure/include/kth/infrastructure/utility/asio_helper.hpp, src/infrastructure/include/kth/infrastructure/handlers.hpp
Switched feature macro to KTH_ASIO_STANDALONE; expanded includes to thread_pool and experimental channel/awaitable operator headers; added awaitable_expected<T, E = code> alias.
Display Mode
src/infrastructure/include/kth/infrastructure/display_mode.hpp
New enum class kth::display_mode : uint8_t with tui, log, daemon; added to_string() and parse_display_mode() utilities.
Config & Message Fixes
src/infrastructure/include/kth/infrastructure/config/authority.hpp, .../config/endpoint.hpp, .../message/network_address.hpp
Fixed include guard typo in authority.hpp, removed commented formatter forward-declaration in endpoint.hpp, and added bool is_routable() const; declaration to network_address.
Math & Logging
src/infrastructure/include/kth/infrastructure/math/hash.hpp, src/infrastructure/include/kth/infrastructure/log/statsd_sink.hpp
Replaced Boost hash forward-include with boost/container_hash/hash.hpp; removed boost::hash specializations, retained std::hash; removed threadpool.hpp include from statsd_sink.hpp.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Caller
  participant WithTimeout as "with_timeout"
  participant Operation as "awaitable operation"
  participant Timer as "steady_timer"

  Caller->>WithTimeout: call(op, timeout)
  WithTimeout->>Operation: start op (co_await concurrently)
  WithTimeout->>Timer: start timer.expires_after(timeout)
  par race
    Operation-->>WithTimeout: result (value or expected)
  and
    Timer-->>WithTimeout: timeout event
  end
  alt Operation finished first
    WithTimeout-->>Caller: return operation result
  else Timer finished first
    WithTimeout-->>Caller: return std::unexpected(timeout_error)
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 New constraints set, coroutines take flight,
Channels chatter softly, timers guard the night,
Display modes now chosen — tui, log, or daemon bright,
I nibble on headers and bound the code with delight. 🥕

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The PR title 'feat: modern C++23 node with coroutine networking and fast IBD' directly and clearly describes the primary objective of the changeset—a major rewrite introducing C++23 coroutine-based networking and fast initial block download, which aligns with the substantial infrastructure and system changes evident across the modified files.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch version1

Comment @coderabbitai help to get the list of available commands and usage tips.

@fpelliccioni fpelliccioni force-pushed the version1 branch 2 times, most recently from fa70d9f to c164e97 Compare March 19, 2026 22:37
# TODO(fernando): DESCOMENTAR ESTO CUANDO TERMINEMOS EL CLEANUP DE COROUTINES
# if (BUILD_C_API)
# add_subdirectory(c-api)
# endif() No newline at end of file
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spanish TODO comment left in production CMake

Medium Severity

The C-API build is unconditionally disabled with a Spanish comment TODO(fernando): DESCOMENTAR ESTO CUANDO TERMINEMOS EL CLEANUP DE COROUTINES ("uncomment this when we finish the coroutine cleanup"). This permanently disables the C-API component for all builds, breaking any downstream consumers that depend on it, without a corresponding build option to control it.

Fix in Cursor Fix in Web

@fpelliccioni fpelliccioni force-pushed the version1 branch 2 times, most recently from 2f58c27 to f542395 Compare March 20, 2026 11:24
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (12)
src/infrastructure/include/kth/infrastructure.hpp (1)

114-118: Minor: New utility includes break alphabetical ordering.

The new coroutine utility headers (async_channel.hpp, awaitable_helpers.hpp, cpu_executor.hpp, task_group.hpp) are added after writer.hpp, breaking the alphabetical ordering used in the rest of the utility section. Consider moving them to their alphabetical positions for consistency.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure.hpp` around lines 114 - 118,
Reorder the utility include block so headers are alphabetically sorted: move
kth/infrastructure/utility/async_channel.hpp, awaitable_helpers.hpp,
cpu_executor.hpp, and task_group.hpp into their proper alphabetical positions
relative to writer.hpp (and other utility includes) to restore consistent
ordering; update the include list in kth::infrastructure.hpp by placing
async_channel.hpp, awaitable_helpers.hpp, cpu_executor.hpp, and task_group.hpp
in the correct alphabetical sequence among the existing utility headers.
src/infrastructure/include/kth/infrastructure/config/authority.hpp (2)

5-6: Pre-existing typo in include guard: INFRASTUCTURE should be INFRASTRUCTURE.

The include guard is missing an 'R' in KTH_INFRASTUCTURE_CONFIG_AUTHORITY_HPP. While this doesn't affect functionality, it should be corrected for consistency.

♻️ Proposed fix
-#ifndef KTH_INFRASTUCTURE_CONFIG_AUTHORITY_HPP
-#define KTH_INFRASTUCTURE_CONFIG_AUTHORITY_HPP
+#ifndef KTH_INFRASTRUCTURE_CONFIG_AUTHORITY_HPP
+#define KTH_INFRASTRUCTURE_CONFIG_AUTHORITY_HPP
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/config/authority.hpp` around
lines 5 - 6, Typo in the include guard identifier: rename the macro
KTH_INFRASTUCTURE_CONFIG_AUTHORITY_HPP to
KTH_INFRASTRUCTURE_CONFIG_AUTHORITY_HPP in the authority.hpp header so the guard
spelling matches the project convention; update both the `#ifndef` and `#define`
(and any corresponding `#endif` comment if present) to the corrected macro to keep
the symbol consistent.

8-9: Vague TODO comment lacks actionable context.

The TODO doesn't specify what should be refactored or why. Consider adding details about the intended refactoring scope, or link to an issue for tracking.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/config/authority.hpp` around
lines 8 - 9, Replace the vague "//TODO: Refactor" in authority.hpp with a
concrete, actionable comment that specifies what to refactor (e.g., "refactor
Authority::validate() to separate validation logic from state mutation"), the
reasons/expected benefits, proposed tasks or checklist (what to change, tests to
add), an issue or ticket link for tracking, and an owner/ETA; ensure the new
comment names the affected symbol(s) (e.g., Authority class or specific methods)
so future readers can locate the work to be done.
src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp (2)

79-92: The milliseconds overload is redundant with the templated version.

The templated delay at lines 86-92 already handles std::chrono::milliseconds since it's a valid duration<Rep, Period>. The explicit milliseconds overload at lines 79-84 is unnecessary unless there's a specific reason to prefer it (e.g., avoiding template instantiation in common cases).

♻️ Consider removing the redundant overload
-inline awaitable<void> delay(std::chrono::milliseconds duration) {
-    auto executor = co_await ::asio::this_coro::executor;
-    ::asio::steady_timer timer(executor);
-    timer.expires_after(duration);
-    co_await timer.async_wait(use_awaitable);
-}
-
 template <typename Rep, typename Period>
 awaitable<void> delay(std::chrono::duration<Rep, Period> duration) {

If keeping both for explicit overload resolution, add a comment explaining the intent.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`
around lines 79 - 92, Remove the redundant non-templated overload of
awaitable<void> delay(std::chrono::milliseconds) or, if you intentionally want
it for overload resolution/performance, add a clarifying comment above it;
specifically either delete the inline delay(std::chrono::milliseconds) function
or annotate it to explain why it coexists with the template awaitable<void>
delay(std::chrono::duration<Rep, Period>) so there is no ambiguity about intent
when readers see both overloads.

79-84: Consider handling timer cancellation errors in delay.

If the timer is cancelled (e.g., due to executor shutdown), async_wait will complete with asio::error::operation_aborted. With use_awaitable, this throws an exception. Depending on the expected usage patterns, you may want to either:

  1. Document that callers should handle this exception, or
  2. Catch and return silently on cancellation

Also applies to: 86-92

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`
around lines 79 - 84, The delay awaitable (and the similar overload at lines
86-92) should swallow timer cancellation instead of propagating an exception:
wrap the co_await timer.async_wait(use_awaitable) in a try/catch that catches
asio::system_error (or std::system_error depending on your Asio build) and if
the caught error.code() == asio::error::operation_aborted return silently,
otherwise rethrow; update the inline awaitable<void> delay(...) and the
corresponding overload to perform this conditional catch so executor shutdown
cancellations don't throw unexpectedly.
src/infrastructure/include/kth/infrastructure/display_mode.hpp (1)

38-43: Incomplete case-insensitive parsing may surprise users.

The function only handles exact lowercase and uppercase matches. Mixed-case inputs like "Tui", "Log", or "Daemon" will silently default to log. Consider either implementing proper case-insensitive comparison or documenting that only lowercase/uppercase are accepted.

♻️ Proposed fix for case-insensitive parsing
+#include <algorithm>
+#include <cctype>
+
+namespace {
+inline bool iequals(std::string_view a, std::string_view b) noexcept {
+    return a.size() == b.size() &&
+           std::equal(a.begin(), a.end(), b.begin(),
+                      [](char ca, char cb) {
+                          return std::tolower(static_cast<unsigned char>(ca)) ==
+                                 std::tolower(static_cast<unsigned char>(cb));
+                      });
+}
+} // anonymous namespace
+
 /// Parse display_mode from string
 inline display_mode parse_display_mode(std::string_view str) noexcept {
-    if (str == "tui" || str == "TUI")       return display_mode::tui;
-    if (str == "log" || str == "LOG")       return display_mode::log;
-    if (str == "daemon" || str == "DAEMON") return display_mode::daemon;
+    if (iequals(str, "tui"))    return display_mode::tui;
+    if (iequals(str, "log"))    return display_mode::log;
+    if (iequals(str, "daemon")) return display_mode::daemon;
     return display_mode::log;  // default
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/display_mode.hpp` around lines
38 - 43, The parse_display_mode function currently only matches exact lowercase
or uppercase strings and will mis-handle mixed-case inputs; update
parse_display_mode(std::string_view) to perform a case-insensitive comparison
(e.g., normalize the input to a canonical case or compare characters with a
case-insensitive predicate) and then map to the correct display_mode values
(display_mode::tui, ::log, ::daemon), keeping the same default return of
display_mode::log; ensure you update only parse_display_mode and reference the
display_mode enum values so mixed-case inputs like "Tui" or "Daemon" are
recognized.
src/infrastructure/include/kth/infrastructure/log/structured_logger.hpp (1)

1-83: Well-documented placeholder for future implementation.

The design documentation is comprehensive, covering dual output modes, structured events API, log levels, and sampling. This provides good guidance for future implementation.

Consider tracking this as a follow-up task to ensure the structured logging system gets implemented.

Would you like me to open an issue to track the implementation of the structured logging system?

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/log/structured_logger.hpp`
around lines 1 - 83, This header currently contains only design notes and a
TODO; create a tracked follow-up and add a minimal, backward-compatible API
sketch so callers compile until full implementation exists: open an issue that
references this file and namespace kth::log and add in this header lightweight
declarations (e.g. class StructuredLogger, free functions event(const
std::string&, const kv_map&), sampled(size_t) returning a small guard type, and
log level enums) with clear TODO comments and an issue number, plus unit-test
stubs and a CMake target placeholder so the build remains green and the work is
traceable.
src/infrastructure/include/kth/infrastructure/utility/asio_helper.hpp (1)

11-13: Document minimum Asio version due to experimental API usage.

The asio::experimental::channel, concurrent_channel, and awaitable_operators APIs have no stability guarantee and may change between Asio releases. Since this PR intentionally uses experimental features for modern C++23 support, document the minimum required Asio version (1.36.0) to help maintainers track breaking changes if Asio updates these experimental interfaces.

Also applies to: 19-21

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/utility/asio_helper.hpp` around
lines 11 - 13, Add a short comment/docblock near the Asio experimental includes
that states the minimum required Asio version is 1.36.0 because the file uses
unstable APIs (asio::experimental::channel,
asio::experimental::concurrent_channel,
asio::experimental::awaitable_operators); update the same note for the other
occurrences around lines 19–21 so maintainers know these experimental interfaces
may change and which Asio version is required to build.
src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp (3)

132-135: test_expected() is defined but never called.

The function serves as a compile-time validation, but since it's never ODR-used, the compiler may not instantiate it, meaning the static_assert inside might not fire on all compilers/optimization levels. Consider making the validation explicit at namespace scope.

♻️ Alternative: Use namespace-scope static_assert
-// Test std::expected support
-inline void test_expected() {
-    [[maybe_unused]] std::expected<int, int> e = 42;
-    static_assert(std::is_same_v<decltype(e.value()), int&>);
-}
+// Test std::expected support
+inline constexpr bool test_expected_support() {
+    std::expected<int, int> e = 42;
+    return e.has_value();
+}
+static_assert(test_expected_support(), "std::expected must be functional");
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp`
around lines 132 - 135, test_expected() is never ODR-used so its static_assert
may not be instantiated; replace or supplement it with a namespace-scope
compile-time check so the assertion always runs. For example, move the check out
of test_expected() and add a static_assert that uses
decltype(std::expected<int,int>{}.value()) (or directly assert
std::is_same_v<decltype(std::declval<std::expected<int,int>>().value()), int&>)
at namespace scope, or alternatively force instantiation by invoking
test_expected() via an immediately-evaluated inline variable; update references
to the existing test_expected() symbol accordingly.

161-164: Consider adding Apple Clang to compiler_info.

For consistency with any Apple Clang detection added to the version checks, the compiler_info struct should also distinguish Apple Clang.

💡 Optional: Detect Apple Clang in compiler_info
 `#elif` defined(__clang__)
+    `#if` defined(__apple_build_version__)
+    static constexpr char const* compiler_name = "Apple Clang";
+    `#else`
     static constexpr char const* compiler_name = "Clang";
+    `#endif`
     static constexpr int compiler_major = __clang_major__;
     static constexpr int compiler_minor = __clang_minor__;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp`
around lines 161 - 164, The compiler_info block currently sets Clang
unconditionally; update the conditional in the compiler_info/definitions (the
static constexpr compiler_name, compiler_major, compiler_minor inside the
compiler_info or surrounding preprocessor branches) to detect Apple Clang by
checking __apple_build_version__ and set compiler_name to "AppleClang" (or
similar) when present while keeping compiler_major and compiler_minor sourced
from __clang_major__ and __clang_minor__; implement this as an additional `#elif`
(or nested `#if` defined(__apple_build_version__)) branch around the existing
Clang case so Apple Clang is distinguished from upstream Clang.

70-74: Add Apple Clang version detection to avoid false rejection on Xcode 15+.

The __clang__ macro matches both upstream Clang and Apple Clang, which use different version numbers. Apple Clang 15 (Xcode 15) supports std::expected and coroutines, but the current check requires Clang 17+, causing false rejection on macOS with Xcode's default compiler.

💡 Optional: Add Apple Clang detection
 `#elif` defined(__clang__)
     // Clang
+    `#if` defined(__apple_build_version__)
+        // Apple Clang has different version numbers
+        // Apple Clang 15 (Xcode 15) corresponds roughly to LLVM 16
+        `#if` __clang_major__ < 15
+            `#error` "KTH requires Apple Clang 15 (Xcode 15) or later for C++23 support."
+        `#endif`
+    `#else`
     `#if` __clang_major__ < 17
         `#error` "KTH requires Clang 17 or later for full C++23 support."
     `#endif`
+    `#endif`
 `#elif` defined(_MSC_VER)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp`
around lines 70 - 74, In the __clang__ branch of the compiler checks (the `#elif`
defined(__clang__) block), add detection for Apple Clang (e.g. check
defined(__apple_build_version__)). If __apple_build_version__ is present, skip
or relax the __clang_major__ >= 17 rejection so Xcode 15+ compilers are
accepted; otherwise keep the existing __clang_major__ < 17 `#error`. Update the
conditional logic in that block to first test for
defined(__apple_build_version__) and only enforce the Clang 17 minimum when
Apple Clang is not detected.
src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp (1)

8-8: Unused include: <cstddef> is not used in this file.

The <cstddef> header provides std::size_t, std::nullptr_t, etc., but none of these are referenced in this file. Consider removing it unless it's intended for future use.

🧹 Remove unused include
-#include <cstddef>
-
 `#include` <kth/infrastructure/utility/asio_helper.hpp>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp` at
line 8, Remove the unused include directive "<cstddef>" from
src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp since no
symbols from that header are referenced; edit async_channel.hpp to delete the
`#include` <cstddef> line and run a quick rebuild (or clang-tidy) to ensure no
headers relying on it were accidentally removed.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/infrastructure/include/kth/infrastructure/handlers.hpp`:
- Line 13: The file unconditionally includes <asio/awaitable.hpp>, bypassing the
KTH_ASIO_STANDALONE abstraction; replace that direct include with the project
helper so the correct header is chosen for standalone Asio vs Boost.Asio.
Specifically, remove the direct reference to asio/awaitable.hpp and include the
project's asio_helper.hpp (the same helper used by other headers) so symbols
like awaitable resolve correctly under the KTH_ASIO_STANDALONE configuration.

In `@src/infrastructure/include/kth/infrastructure/math/hash.hpp`:
- Around line 120-136: Remove the commented-out boost::hash specializations
block (the namespace boost templates for kth::byte_array and kth::byte_span)
because they are obsolete and conflict with modern Boost; rely on the existing
std::hash<kth::byte_span> and std::hash specializations already implemented
(e.g., std::hash<kth::byte_span>) instead; simply delete the entire commented
section to clean up the file while preserving git history if needed.

In `@src/infrastructure/include/kth/infrastructure/utility/asio_helper.hpp`:
- Around line 22-24: The __EMSCRIPTEN__ preprocessor branch in asio_helper.hpp
only pulls in <boost/asio/error.hpp>, so code using Boost.Asio's newer async
primitives fails to compile; update the __EMSCRIPTEN__ branch to also include
the missing headers (e.g., <boost/asio/thread_pool.hpp>,
<boost/asio/experimental/channel.hpp>, and <boost/asio/awaitable_operators.hpp>)
or, if those primitives are unavailable under Emscripten, add a clear comment
documenting their absence and guard usages of thread_pool, channel, and
awaitable operators with the __EMSCRIPTEN__ macro to avoid compilation errors.

---

Nitpick comments:
In `@src/infrastructure/include/kth/infrastructure.hpp`:
- Around line 114-118: Reorder the utility include block so headers are
alphabetically sorted: move kth/infrastructure/utility/async_channel.hpp,
awaitable_helpers.hpp, cpu_executor.hpp, and task_group.hpp into their proper
alphabetical positions relative to writer.hpp (and other utility includes) to
restore consistent ordering; update the include list in kth::infrastructure.hpp
by placing async_channel.hpp, awaitable_helpers.hpp, cpu_executor.hpp, and
task_group.hpp in the correct alphabetical sequence among the existing utility
headers.

In `@src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp`:
- Around line 132-135: test_expected() is never ODR-used so its static_assert
may not be instantiated; replace or supplement it with a namespace-scope
compile-time check so the assertion always runs. For example, move the check out
of test_expected() and add a static_assert that uses
decltype(std::expected<int,int>{}.value()) (or directly assert
std::is_same_v<decltype(std::declval<std::expected<int,int>>().value()), int&>)
at namespace scope, or alternatively force instantiation by invoking
test_expected() via an immediately-evaluated inline variable; update references
to the existing test_expected() symbol accordingly.
- Around line 161-164: The compiler_info block currently sets Clang
unconditionally; update the conditional in the compiler_info/definitions (the
static constexpr compiler_name, compiler_major, compiler_minor inside the
compiler_info or surrounding preprocessor branches) to detect Apple Clang by
checking __apple_build_version__ and set compiler_name to "AppleClang" (or
similar) when present while keeping compiler_major and compiler_minor sourced
from __clang_major__ and __clang_minor__; implement this as an additional `#elif`
(or nested `#if` defined(__apple_build_version__)) branch around the existing
Clang case so Apple Clang is distinguished from upstream Clang.
- Around line 70-74: In the __clang__ branch of the compiler checks (the `#elif`
defined(__clang__) block), add detection for Apple Clang (e.g. check
defined(__apple_build_version__)). If __apple_build_version__ is present, skip
or relax the __clang_major__ >= 17 rejection so Xcode 15+ compilers are
accepted; otherwise keep the existing __clang_major__ < 17 `#error`. Update the
conditional logic in that block to first test for
defined(__apple_build_version__) and only enforce the Clang 17 minimum when
Apple Clang is not detected.

In `@src/infrastructure/include/kth/infrastructure/config/authority.hpp`:
- Around line 5-6: Typo in the include guard identifier: rename the macro
KTH_INFRASTUCTURE_CONFIG_AUTHORITY_HPP to
KTH_INFRASTRUCTURE_CONFIG_AUTHORITY_HPP in the authority.hpp header so the guard
spelling matches the project convention; update both the `#ifndef` and `#define`
(and any corresponding `#endif` comment if present) to the corrected macro to keep
the symbol consistent.
- Around line 8-9: Replace the vague "//TODO: Refactor" in authority.hpp with a
concrete, actionable comment that specifies what to refactor (e.g., "refactor
Authority::validate() to separate validation logic from state mutation"), the
reasons/expected benefits, proposed tasks or checklist (what to change, tests to
add), an issue or ticket link for tracking, and an owner/ETA; ensure the new
comment names the affected symbol(s) (e.g., Authority class or specific methods)
so future readers can locate the work to be done.

In `@src/infrastructure/include/kth/infrastructure/display_mode.hpp`:
- Around line 38-43: The parse_display_mode function currently only matches
exact lowercase or uppercase strings and will mis-handle mixed-case inputs;
update parse_display_mode(std::string_view) to perform a case-insensitive
comparison (e.g., normalize the input to a canonical case or compare characters
with a case-insensitive predicate) and then map to the correct display_mode
values (display_mode::tui, ::log, ::daemon), keeping the same default return of
display_mode::log; ensure you update only parse_display_mode and reference the
display_mode enum values so mixed-case inputs like "Tui" or "Daemon" are
recognized.

In `@src/infrastructure/include/kth/infrastructure/log/structured_logger.hpp`:
- Around line 1-83: This header currently contains only design notes and a TODO;
create a tracked follow-up and add a minimal, backward-compatible API sketch so
callers compile until full implementation exists: open an issue that references
this file and namespace kth::log and add in this header lightweight declarations
(e.g. class StructuredLogger, free functions event(const std::string&, const
kv_map&), sampled(size_t) returning a small guard type, and log level enums)
with clear TODO comments and an issue number, plus unit-test stubs and a CMake
target placeholder so the build remains green and the work is traceable.

In `@src/infrastructure/include/kth/infrastructure/utility/asio_helper.hpp`:
- Around line 11-13: Add a short comment/docblock near the Asio experimental
includes that states the minimum required Asio version is 1.36.0 because the
file uses unstable APIs (asio::experimental::channel,
asio::experimental::concurrent_channel,
asio::experimental::awaitable_operators); update the same note for the other
occurrences around lines 19–21 so maintainers know these experimental interfaces
may change and which Asio version is required to build.

In `@src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp`:
- Line 8: Remove the unused include directive "<cstddef>" from
src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp since no
symbols from that header are referenced; edit async_channel.hpp to delete the
`#include` <cstddef> line and run a quick rebuild (or clang-tidy) to ensure no
headers relying on it were accidentally removed.

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`:
- Around line 79-92: Remove the redundant non-templated overload of
awaitable<void> delay(std::chrono::milliseconds) or, if you intentionally want
it for overload resolution/performance, add a clarifying comment above it;
specifically either delete the inline delay(std::chrono::milliseconds) function
or annotate it to explain why it coexists with the template awaitable<void>
delay(std::chrono::duration<Rep, Period>) so there is no ambiguity about intent
when readers see both overloads.
- Around line 79-84: The delay awaitable (and the similar overload at lines
86-92) should swallow timer cancellation instead of propagating an exception:
wrap the co_await timer.async_wait(use_awaitable) in a try/catch that catches
asio::system_error (or std::system_error depending on your Asio build) and if
the caught error.code() == asio::error::operation_aborted return silently,
otherwise rethrow; update the inline awaitable<void> delay(...) and the
corresponding overload to perform this conditional catch so executor shutdown
cancellations don't throw unexpectedly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: e3e993a8-98ad-4bb9-b38c-ca0f8eae03b5

📥 Commits

Reviewing files that changed from the base of the PR and between d883517 and 2f58c27.

⛔ Files ignored due to path filters (254)
  • .coderabbit.yaml is excluded by none and included by none
  • CMakeLists.txt is excluded by !**/CMakeLists.txt and included by none
  • conan.lock is excluded by !**/*.lock, !conan.lock and included by none
  • conanfile.py is excluded by !**/conanfile.py and included by none
  • data/utxo_bloom.dat is excluded by !**/*.dat, !data/**, !**/*.dat and included by none
  • src/CMakeLists.txt is excluded by !**/CMakeLists.txt and included by none
  • src/blockchain/CMakeLists.txt is excluded by !src/blockchain/**, !**/CMakeLists.txt and included by none
  • src/blockchain/conanfile.py is excluded by !src/blockchain/**, !**/conanfile.py and included by none
  • src/blockchain/include/kth/blockchain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/header_index.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/block_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/fast_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/safe_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/block_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/header_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/transaction_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/transaction_pool.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_base.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_block.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_chain_state.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_transaction.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/settings.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/utxo_builder.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_block.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_header.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_transaction.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/interface/block_chain.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/block_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/header_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/transaction_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/transaction_pool.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_base.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_block.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_chain_state.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_transaction.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/settings.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/utxo_bloom_embed.S.in is excluded by !src/blockchain/**, !**/*.S.in and included by none
  • src/blockchain/src/utxo_builder.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_block.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_header.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_transaction.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/test/header_index.cpp is excluded by !src/blockchain/**, !**/test/** and included by none
  • src/blockchain/test/header_organizer.cpp is excluded by !src/blockchain/**, !**/test/** and included by none
  • src/c-api/conanfile.py is excluded by !src/c-api/**, !**/conanfile.py and included by none
  • src/c-api/console/main.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/console/print_headers.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/chain/chain_other.h is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/conversions.hpp is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/primitives.h is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_async.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_other.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_sync.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/mempool_transaction.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/mempool_transaction_list.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/node.cpp is excluded by !src/c-api/** and included by none
  • src/consensus/conanfile.py is excluded by !src/consensus/**, !**/conanfile.py and included by none
  • src/consensus/src/bch-rules/coins.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/primitives/token.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/script/interpreter.cpp is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/script/vm_limits.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/util/strencodings.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/btc-rules/script/interpreter.cpp is excluded by !src/consensus/** and included by none
  • src/database/CMakeLists.txt is excluded by !src/database/**, !**/CMakeLists.txt and included by none
  • src/database/conanfile.py is excluded by !src/database/**, !**/conanfile.py and included by none
  • src/database/include/kth/database/block_store.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/block_undo.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/data_base.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/block_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/header_abla_entry.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/header_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/history_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/internal_database.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/internal_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/property_code.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/reorg_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/spend_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/transaction_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/transaction_unconfirmed_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/utxo_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/utxoz_database.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/flat_file_pos.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/flat_file_seq.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/header_index.hpp is excluded by !src/database/** and included by none
  • src/database/src/block_store.cpp is excluded by !src/database/** and included by none
  • src/database/src/block_undo.cpp is excluded by !src/database/** and included by none
  • src/database/src/data_base.cpp is excluded by !src/database/** and included by none
  • src/database/src/databases/header_abla_entry.cpp is excluded by !src/database/** and included by none
  • src/database/src/databases/utxoz_database.cpp is excluded by !src/database/** and included by none
  • src/database/src/flat_file_seq.cpp is excluded by !src/database/** and included by none
  • src/database/src/header_index.cpp is excluded by !src/database/** and included by none
  • src/database/src/settings.cpp is excluded by !src/database/** and included by none
  • src/database/test/data_base.cpp is excluded by !src/database/**, !**/test/** and included by none
  • src/database/tools/utxoz_fingerprint/utxoz_fingerprint.cpp is excluded by !src/database/**, !**/tools/** and included by none
  • src/domain/CMakeLists.txt is excluded by !src/domain/**, !**/CMakeLists.txt and included by none
  • src/domain/bench/hash/benchmarks.cpp is excluded by !src/domain/** and included by none
  • src/domain/bench/merkle/benchmarks.cpp is excluded by !src/domain/** and included by none
  • src/domain/conanfile.py is excluded by !src/domain/**, !**/conanfile.py and included by none
  • src/domain/include/kth/domain/chain/block.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/block_basis.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/header.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/header_basis.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/light_block.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/config/parser.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/constants/common.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/addrv2.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/messages.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/send_addrv2.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/version.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/multi_crypto_support.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/version.hpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/block.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/block_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/header.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/header_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/light_block.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/output_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/message/addrv2.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/message/send_addrv2.cpp is excluded by !src/domain/** and included by none
  • src/domain/test/chain/light_block.cpp is excluded by !src/domain/**, !**/test/** and included by none
  • src/domain/test/message/addrv2_bchn_comparison.cpp is excluded by !src/domain/**, !**/test/** and included by none
  • src/infrastructure/CMakeLists.txt is excluded by !**/CMakeLists.txt and included by src/infrastructure/**
  • src/infrastructure/conanfile.py is excluded by !**/conanfile.py and included by src/infrastructure/**
  • src/infrastructure/include/kth/infrastructure/impl/utility/resubscriber.ipp is excluded by !**/*.ipp and included by src/infrastructure/**
  • src/infrastructure/include/kth/infrastructure/impl/utility/subscriber.ipp is excluded by !**/*.ipp and included by src/infrastructure/**
  • src/infrastructure/test/task_group.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/async_channel.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/awaitable_helpers.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/coroutine_smoke_test.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/threadpool.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/network/CMakeLists.txt is excluded by !src/network/**, !**/CMakeLists.txt and included by none
  • src/network/conanfile.py is excluded by !src/network/**, !**/conanfile.py and included by none
  • src/network/include/kth/network.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/acceptor.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/banlist.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/channel.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/connector.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/handlers/ping.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/handlers/pong.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/hosts.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/message_subscriber.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/net_permissions.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/normalized_address.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/p2p.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/p2p_node.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_database.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_manager.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_record.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_session.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_address_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_events.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_ping_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_ping_60001.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_reject_70002.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_seed_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_timer.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_version_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_version_70002.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols_coro.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/proxy.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_batch.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_inbound.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_manual.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_outbound.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_seed.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/settings.hpp is excluded by !src/network/** and included by none
  • src/network/src/acceptor.cpp is excluded by !src/network/** and included by none
  • src/network/src/banlist.cpp is excluded by !src/network/** and included by none
  • src/network/src/channel.cpp is excluded by !src/network/** and included by none
  • src/network/src/connector.cpp is excluded by !src/network/** and included by none
  • src/network/src/handlers/ping.cpp is excluded by !src/network/** and included by none
  • src/network/src/handlers/pong.cpp is excluded by !src/network/** and included by none
  • src/network/src/hosts.cpp is excluded by !src/network/** and included by none
  • src/network/src/message_subscriber.cpp is excluded by !src/network/** and included by none
  • src/network/src/net_permissions.cpp is excluded by !src/network/** and included by none
  • src/network/src/p2p.cpp is excluded by !src/network/** and included by none
  • src/network/src/p2p_node.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_database.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_manager.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_session.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_address_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_events.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_ping_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_ping_60001.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_reject_70002.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_seed_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_timer.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_version_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_version_70002.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols_coro.cpp is excluded by !src/network/** and included by none
  • src/network/src/proxy.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_batch.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_inbound.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_manual.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_outbound.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_seed.cpp is excluded by !src/network/** and included by none
  • src/network/src/settings.cpp is excluded by !src/network/** and included by none
  • src/network/test/p2p_node.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_database.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_manager.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_session.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/protocols_coro.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/test_helpers.hpp is excluded by !src/network/**, !**/test/** and included by none
  • src/node-exe/CMakeLists.txt is excluded by !src/node-exe/**, !**/CMakeLists.txt and included by none
  • src/node-exe/conanfile.py is excluded by !src/node-exe/**, !**/conanfile.py and included by none
  • src/node-exe/src/main.cpp is excluded by !src/node-exe/** and included by none
  • src/node-exe/src/tui_dashboard.cpp is excluded by !src/node-exe/** and included by none
  • src/node-exe/src/tui_dashboard.hpp is excluded by !src/node-exe/** and included by none
  • src/node/CMakeLists.txt is excluded by !src/node/**, !**/CMakeLists.txt and included by none
  • src/node/conanfile.py is excluded by !src/node/**, !**/conanfile.py and included by none
  • src/node/data/bn.cfg is excluded by !src/node/** and included by none
  • src/node/include/kth/node.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/executor/executor.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/full_node.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_double_spend_proof_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_double_spend_proof_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_header_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_transaction_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_transaction_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_block_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_header_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_inbound.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_manual.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_outbound.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/settings.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/block_tasks.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/chunk_coordinator.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/header_tasks.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/messages.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/orchestrator.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/user_agent.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/utility/reservation.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/utility/reservations.hpp is excluded by !src/node/** and included by none
  • src/node/src/executor/executor.cpp is excluded by !src/node/** and included by none
  • src/node/src/full_node.cpp is excluded by !src/node/** and included by none
  • src/node/src/parser.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_double_spend_proof_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_double_spend_proof_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_header_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_transaction_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_transaction_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_block_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_header_sync.cpp is excluded by !src/node/** and included by none
📒 Files selected for processing (46)
  • src/infrastructure/include/kth/infrastructure.hpp
  • src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp
  • src/infrastructure/include/kth/infrastructure/config/authority.hpp
  • src/infrastructure/include/kth/infrastructure/config/endpoint.hpp
  • src/infrastructure/include/kth/infrastructure/display_mode.hpp
  • src/infrastructure/include/kth/infrastructure/error.hpp
  • src/infrastructure/include/kth/infrastructure/handlers.hpp
  • src/infrastructure/include/kth/infrastructure/log/statsd_sink.hpp
  • src/infrastructure/include/kth/infrastructure/log/structured_logger.hpp
  • src/infrastructure/include/kth/infrastructure/math/hash.hpp
  • src/infrastructure/include/kth/infrastructure/message/network_address.hpp
  • src/infrastructure/include/kth/infrastructure/utility/asio_helper.hpp
  • src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp
  • src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp
  • src/infrastructure/include/kth/infrastructure/utility/broadcaster.hpp
  • src/infrastructure/include/kth/infrastructure/utility/byte_reader.hpp
  • src/infrastructure/include/kth/infrastructure/utility/coroutine_config.hpp
  • src/infrastructure/include/kth/infrastructure/utility/cpu_executor.hpp
  • src/infrastructure/include/kth/infrastructure/utility/deadline.hpp
  • src/infrastructure/include/kth/infrastructure/utility/delegates.hpp
  • src/infrastructure/include/kth/infrastructure/utility/dispatcher.hpp
  • src/infrastructure/include/kth/infrastructure/utility/resubscriber.hpp
  • src/infrastructure/include/kth/infrastructure/utility/salted_hashers.hpp
  • src/infrastructure/include/kth/infrastructure/utility/sequencer.hpp
  • src/infrastructure/include/kth/infrastructure/utility/stats.hpp
  • src/infrastructure/include/kth/infrastructure/utility/subscriber.hpp
  • src/infrastructure/include/kth/infrastructure/utility/synchronizer.hpp
  • src/infrastructure/include/kth/infrastructure/utility/system_memory.hpp
  • src/infrastructure/include/kth/infrastructure/utility/task_group.hpp
  • src/infrastructure/include/kth/infrastructure/utility/threadpool.hpp
  • src/infrastructure/include/kth/infrastructure/utility/units.hpp
  • src/infrastructure/include/kth/infrastructure/utility/work.hpp
  • src/infrastructure/src/config/endpoint.cpp
  • src/infrastructure/src/log/sink.cpp
  • src/infrastructure/src/log/statsd_sink.cpp
  • src/infrastructure/src/message/network_address.cpp
  • src/infrastructure/src/utility/deadline.cpp
  • src/infrastructure/src/utility/dispatcher.cpp
  • src/infrastructure/src/utility/sequencer.cpp
  • src/infrastructure/src/utility/socket.cpp
  • src/infrastructure/src/utility/stats.cpp
  • src/infrastructure/src/utility/system_memory.cpp
  • src/infrastructure/src/utility/threadpool.cpp
  • src/infrastructure/src/utility/work.cpp
  • src/infrastructure/third-party/bitcoin-core/crypto/sha256.cpp
  • src/infrastructure/third-party/bitcoin-core/crypto/sha256.h
💤 Files with no reviewable changes (2)
  • src/infrastructure/include/kth/infrastructure/log/statsd_sink.hpp
  • src/infrastructure/include/kth/infrastructure/config/endpoint.hpp

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (6)
src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp (2)

79-92: Redundant delay overload.

The inline milliseconds overload (lines 79-84) is redundant—the template version (lines 86-92) already handles std::chrono::milliseconds since it's a std::chrono::duration specialization.

♻️ Proposed simplification
-inline awaitable<void> delay(std::chrono::milliseconds duration) {
-    auto executor = co_await ::asio::this_coro::executor;
-    ::asio::steady_timer timer(executor);
-    timer.expires_after(duration);
-    co_await timer.async_wait(use_awaitable);
-}
-
 template <typename Rep, typename Period>
 awaitable<void> delay(std::chrono::duration<Rep, Period> duration) {
     auto executor = co_await ::asio::this_coro::executor;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`
around lines 79 - 92, Remove the redundant fixed-duration overload of delay and
keep a single templated implementation: delete the inline awaitable<void>
delay(std::chrono::milliseconds) function and rely on the template
awaitable<void> delay(std::chrono::duration<Rep, Period>) implementation; ensure
the remaining template uses ::asio::this_coro::executor, ::asio::steady_timer,
timer.expires_after(duration) and co_await timer.async_wait(use_awaitable) (add
inline if header linkage requires it).

38-48: Timer cancellation error is silently discarded.

When the operation completes first, the timer is implicitly cancelled. The async_wait completes with asio::error::operation_aborted, but this error is never checked—it's simply discarded because result.index() == 0. This is fine for the success path, but if the timer fails for another reason (e.g., system clock issues), that error is lost.

Similarly, if the awaitable operation throws, the exception propagates but the timer remains active until cancelled.

This is likely acceptable for typical use, but consider documenting the behavior.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`
around lines 38 - 48, The current co_await of (std::move(op) ||
timer.async_wait(use_awaitable)) drops any non-aborted timer error and leaves
the timer running if the operation throws; update the logic around the awaitable
race in awaitable_helpers.hpp so that when the operation (op) wins you
explicitly cancel the timer (timer.cancel()) and co_await the timer completion
to observe and handle any non-operation_aborted error (propagate or log as
appropriate), and when the timer wins you cancel the operation and return the
timeout error as before; ensure you check the timer completion result
(async_wait) for errors other than asio::error::operation_aborted before
discarding them and document the behavior in comments near the race logic.
src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp (1)

132-135: Consider making test_expected constexpr.

The function body is trivially constexpr-eligible. Making it consteval or constexpr would catch issues at compile-time rather than link-time.

♻️ Proposed fix
 // Test std::expected support
-inline void test_expected() {
+consteval void test_expected() {
     [[maybe_unused]] std::expected<int, int> e = 42;
     static_assert(std::is_same_v<decltype(e.value()), int&>);
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp`
around lines 132 - 135, The small test function test_expected is trivially
constexpr-eligible; change its signature from "inline void test_expected()" to a
compile-time function (e.g., "inline constexpr void test_expected()" or "inline
consteval void test_expected()") so the static_assert and value() check are
evaluated at compile time; simply update the function declaration to
constexpr/consteval and keep the body unchanged to ensure the check fails during
compilation rather than at link-time.
src/infrastructure/include/kth/infrastructure/display_mode.hpp (2)

38-43: Consider broader case handling or documenting the limited set.

The function handles only exact matches for lowercase and UPPERCASE, missing common variants like "Log", "Daemon", "Tui". Consider either true case-insensitive comparison or documenting that only these exact values are accepted.

♻️ Proposed fix for true case-insensitive matching
+#include <algorithm>
+#include <cctype>
+
+namespace {
+inline bool iequals(std::string_view a, std::string_view b) noexcept {
+    return a.size() == b.size() &&
+           std::equal(a.begin(), a.end(), b.begin(),
+                      [](char c1, char c2) {
+                          return std::tolower(static_cast<unsigned char>(c1)) ==
+                                 std::tolower(static_cast<unsigned char>(c2));
+                      });
+}
+} // namespace
+
 inline display_mode parse_display_mode(std::string_view str) noexcept {
-    if (str == "tui" || str == "TUI")       return display_mode::tui;
-    if (str == "log" || str == "LOG")       return display_mode::log;
-    if (str == "daemon" || str == "DAEMON") return display_mode::daemon;
+    if (iequals(str, "tui"))    return display_mode::tui;
+    if (iequals(str, "log"))    return display_mode::log;
+    if (iequals(str, "daemon")) return display_mode::daemon;
     return display_mode::log;  // default
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/display_mode.hpp` around lines
38 - 43, The parse_display_mode function currently only matches exact lowercase
or UPPERCASE strings; change it to perform true case-insensitive matching by
normalizing the input (e.g., convert the incoming std::string_view to a
lowercase std::string or use a case-insensitive compare) and then compare
against "tui", "log", and "daemon", returning display_mode::tui,
display_mode::log, or display_mode::daemon accordingly, keeping the same default
return (display_mode::log) and preserving noexcept; update only
parse_display_mode and ensure comparisons map to the existing display_mode enum
values.

9-9: Unused include.

The <string> header is included but not used—only std::string_view (from <string_view>) is used in this file.

♻️ Proposed fix
 `#include` <cstdint>
-#include <string>
 `#include` <string_view>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/display_mode.hpp` at line 9,
Remove the unused `#include` <string> and instead include <string_view> (or keep
the existing <string_view> include) so the file only depends on
std::string_view; specifically delete the `#include <string>` line referenced in
the diff and ensure `std::string_view` is available by adding `#include
<string_view>` if it's not already present.
src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp (1)

8-8: Unused include.

The <cstddef> header doesn't appear to be used in this file—no std::size_t, std::nullptr_t, or similar types are referenced.

♻️ Proposed fix
-#include <cstddef>
-
 `#include` <kth/infrastructure/utility/asio_helper.hpp>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp` at
line 8, Remove the unused header include by deleting the line '#include
<cstddef>' from async_channel.hpp since no std::size_t or other cstddef symbols
are used; after removal, run a quick build or include-check to ensure no
compilation breakage and add any required headers only if a missing symbol
appears.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp`:
- Around line 132-135: The small test function test_expected is trivially
constexpr-eligible; change its signature from "inline void test_expected()" to a
compile-time function (e.g., "inline constexpr void test_expected()" or "inline
consteval void test_expected()") so the static_assert and value() check are
evaluated at compile time; simply update the function declaration to
constexpr/consteval and keep the body unchanged to ensure the check fails during
compilation rather than at link-time.

In `@src/infrastructure/include/kth/infrastructure/display_mode.hpp`:
- Around line 38-43: The parse_display_mode function currently only matches
exact lowercase or UPPERCASE strings; change it to perform true case-insensitive
matching by normalizing the input (e.g., convert the incoming std::string_view
to a lowercase std::string or use a case-insensitive compare) and then compare
against "tui", "log", and "daemon", returning display_mode::tui,
display_mode::log, or display_mode::daemon accordingly, keeping the same default
return (display_mode::log) and preserving noexcept; update only
parse_display_mode and ensure comparisons map to the existing display_mode enum
values.
- Line 9: Remove the unused `#include` <string> and instead include <string_view>
(or keep the existing <string_view> include) so the file only depends on
std::string_view; specifically delete the `#include <string>` line referenced in
the diff and ensure `std::string_view` is available by adding `#include
<string_view>` if it's not already present.

In `@src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp`:
- Line 8: Remove the unused header include by deleting the line '#include
<cstddef>' from async_channel.hpp since no std::size_t or other cstddef symbols
are used; after removal, run a quick build or include-check to ensure no
compilation breakage and add any required headers only if a missing symbol
appears.

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`:
- Around line 79-92: Remove the redundant fixed-duration overload of delay and
keep a single templated implementation: delete the inline awaitable<void>
delay(std::chrono::milliseconds) function and rely on the template
awaitable<void> delay(std::chrono::duration<Rep, Period>) implementation; ensure
the remaining template uses ::asio::this_coro::executor, ::asio::steady_timer,
timer.expires_after(duration) and co_await timer.async_wait(use_awaitable) (add
inline if header linkage requires it).
- Around line 38-48: The current co_await of (std::move(op) ||
timer.async_wait(use_awaitable)) drops any non-aborted timer error and leaves
the timer running if the operation throws; update the logic around the awaitable
race in awaitable_helpers.hpp so that when the operation (op) wins you
explicitly cancel the timer (timer.cancel()) and co_await the timer completion
to observe and handle any non-operation_aborted error (propagate or log as
appropriate), and when the timer wins you cancel the operation and return the
timeout error as before; ensure you check the timer completion result
(async_wait) for errors other than asio::error::operation_aborted before
discarding them and document the behavior in comments near the race logic.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 052bb03d-a3a7-4f8c-ad13-aa2a9542b3d8

📥 Commits

Reviewing files that changed from the base of the PR and between 2f58c27 and 186f8d5.

⛔ Files ignored due to path filters (254)
  • .coderabbit.yaml is excluded by none and included by none
  • CMakeLists.txt is excluded by !**/CMakeLists.txt and included by none
  • conan.lock is excluded by !**/*.lock, !conan.lock and included by none
  • conanfile.py is excluded by !**/conanfile.py and included by none
  • data/utxo_bloom.dat is excluded by !**/*.dat, !data/**, !**/*.dat and included by none
  • src/CMakeLists.txt is excluded by !**/CMakeLists.txt and included by none
  • src/blockchain/CMakeLists.txt is excluded by !src/blockchain/**, !**/CMakeLists.txt and included by none
  • src/blockchain/conanfile.py is excluded by !src/blockchain/**, !**/conanfile.py and included by none
  • src/blockchain/include/kth/blockchain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/header_index.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/block_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/fast_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/safe_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/block_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/header_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/transaction_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/transaction_pool.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_base.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_block.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_chain_state.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_transaction.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/settings.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/utxo_builder.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_block.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_header.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_transaction.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/interface/block_chain.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/block_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/header_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/transaction_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/transaction_pool.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_base.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_block.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_chain_state.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_transaction.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/settings.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/utxo_bloom_embed.S.in is excluded by !src/blockchain/**, !**/*.S.in and included by none
  • src/blockchain/src/utxo_builder.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_block.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_header.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_transaction.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/test/header_index.cpp is excluded by !src/blockchain/**, !**/test/** and included by none
  • src/blockchain/test/header_organizer.cpp is excluded by !src/blockchain/**, !**/test/** and included by none
  • src/c-api/conanfile.py is excluded by !src/c-api/**, !**/conanfile.py and included by none
  • src/c-api/console/main.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/console/print_headers.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/chain/chain_other.h is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/conversions.hpp is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/primitives.h is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_async.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_other.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_sync.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/mempool_transaction.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/mempool_transaction_list.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/node.cpp is excluded by !src/c-api/** and included by none
  • src/consensus/conanfile.py is excluded by !src/consensus/**, !**/conanfile.py and included by none
  • src/consensus/src/bch-rules/coins.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/primitives/token.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/script/interpreter.cpp is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/script/vm_limits.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/util/strencodings.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/btc-rules/script/interpreter.cpp is excluded by !src/consensus/** and included by none
  • src/database/CMakeLists.txt is excluded by !src/database/**, !**/CMakeLists.txt and included by none
  • src/database/conanfile.py is excluded by !src/database/**, !**/conanfile.py and included by none
  • src/database/include/kth/database/block_store.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/block_undo.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/data_base.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/block_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/header_abla_entry.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/header_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/history_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/internal_database.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/internal_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/property_code.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/reorg_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/spend_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/transaction_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/transaction_unconfirmed_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/utxo_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/utxoz_database.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/flat_file_pos.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/flat_file_seq.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/header_index.hpp is excluded by !src/database/** and included by none
  • src/database/src/block_store.cpp is excluded by !src/database/** and included by none
  • src/database/src/block_undo.cpp is excluded by !src/database/** and included by none
  • src/database/src/data_base.cpp is excluded by !src/database/** and included by none
  • src/database/src/databases/header_abla_entry.cpp is excluded by !src/database/** and included by none
  • src/database/src/databases/utxoz_database.cpp is excluded by !src/database/** and included by none
  • src/database/src/flat_file_seq.cpp is excluded by !src/database/** and included by none
  • src/database/src/header_index.cpp is excluded by !src/database/** and included by none
  • src/database/src/settings.cpp is excluded by !src/database/** and included by none
  • src/database/test/data_base.cpp is excluded by !src/database/**, !**/test/** and included by none
  • src/database/tools/utxoz_fingerprint/utxoz_fingerprint.cpp is excluded by !src/database/**, !**/tools/** and included by none
  • src/domain/CMakeLists.txt is excluded by !src/domain/**, !**/CMakeLists.txt and included by none
  • src/domain/bench/hash/benchmarks.cpp is excluded by !src/domain/** and included by none
  • src/domain/bench/merkle/benchmarks.cpp is excluded by !src/domain/** and included by none
  • src/domain/conanfile.py is excluded by !src/domain/**, !**/conanfile.py and included by none
  • src/domain/include/kth/domain/chain/block.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/block_basis.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/header.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/header_basis.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/light_block.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/config/parser.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/constants/common.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/addrv2.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/messages.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/send_addrv2.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/version.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/multi_crypto_support.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/version.hpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/block.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/block_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/header.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/header_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/light_block.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/output_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/message/addrv2.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/message/send_addrv2.cpp is excluded by !src/domain/** and included by none
  • src/domain/test/chain/light_block.cpp is excluded by !src/domain/**, !**/test/** and included by none
  • src/domain/test/message/addrv2_bchn_comparison.cpp is excluded by !src/domain/**, !**/test/** and included by none
  • src/infrastructure/CMakeLists.txt is excluded by !**/CMakeLists.txt and included by src/infrastructure/**
  • src/infrastructure/conanfile.py is excluded by !**/conanfile.py and included by src/infrastructure/**
  • src/infrastructure/include/kth/infrastructure/impl/utility/resubscriber.ipp is excluded by !**/*.ipp and included by src/infrastructure/**
  • src/infrastructure/include/kth/infrastructure/impl/utility/subscriber.ipp is excluded by !**/*.ipp and included by src/infrastructure/**
  • src/infrastructure/test/task_group.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/async_channel.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/awaitable_helpers.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/coroutine_smoke_test.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/threadpool.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/network/CMakeLists.txt is excluded by !src/network/**, !**/CMakeLists.txt and included by none
  • src/network/conanfile.py is excluded by !src/network/**, !**/conanfile.py and included by none
  • src/network/include/kth/network.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/acceptor.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/banlist.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/channel.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/connector.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/handlers/ping.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/handlers/pong.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/hosts.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/message_subscriber.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/net_permissions.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/normalized_address.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/p2p.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/p2p_node.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_database.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_manager.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_record.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_session.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_address_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_events.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_ping_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_ping_60001.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_reject_70002.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_seed_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_timer.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_version_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_version_70002.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols_coro.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/proxy.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_batch.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_inbound.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_manual.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_outbound.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_seed.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/settings.hpp is excluded by !src/network/** and included by none
  • src/network/src/acceptor.cpp is excluded by !src/network/** and included by none
  • src/network/src/banlist.cpp is excluded by !src/network/** and included by none
  • src/network/src/channel.cpp is excluded by !src/network/** and included by none
  • src/network/src/connector.cpp is excluded by !src/network/** and included by none
  • src/network/src/handlers/ping.cpp is excluded by !src/network/** and included by none
  • src/network/src/handlers/pong.cpp is excluded by !src/network/** and included by none
  • src/network/src/hosts.cpp is excluded by !src/network/** and included by none
  • src/network/src/message_subscriber.cpp is excluded by !src/network/** and included by none
  • src/network/src/net_permissions.cpp is excluded by !src/network/** and included by none
  • src/network/src/p2p.cpp is excluded by !src/network/** and included by none
  • src/network/src/p2p_node.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_database.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_manager.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_session.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_address_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_events.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_ping_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_ping_60001.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_reject_70002.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_seed_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_timer.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_version_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_version_70002.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols_coro.cpp is excluded by !src/network/** and included by none
  • src/network/src/proxy.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_batch.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_inbound.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_manual.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_outbound.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_seed.cpp is excluded by !src/network/** and included by none
  • src/network/src/settings.cpp is excluded by !src/network/** and included by none
  • src/network/test/p2p_node.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_database.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_manager.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_session.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/protocols_coro.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/test_helpers.hpp is excluded by !src/network/**, !**/test/** and included by none
  • src/node-exe/CMakeLists.txt is excluded by !src/node-exe/**, !**/CMakeLists.txt and included by none
  • src/node-exe/conanfile.py is excluded by !src/node-exe/**, !**/conanfile.py and included by none
  • src/node-exe/src/main.cpp is excluded by !src/node-exe/** and included by none
  • src/node-exe/src/tui_dashboard.cpp is excluded by !src/node-exe/** and included by none
  • src/node-exe/src/tui_dashboard.hpp is excluded by !src/node-exe/** and included by none
  • src/node/CMakeLists.txt is excluded by !src/node/**, !**/CMakeLists.txt and included by none
  • src/node/conanfile.py is excluded by !src/node/**, !**/conanfile.py and included by none
  • src/node/data/bn.cfg is excluded by !src/node/** and included by none
  • src/node/include/kth/node.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/executor/executor.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/full_node.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_double_spend_proof_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_double_spend_proof_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_header_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_transaction_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_transaction_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_block_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_header_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_inbound.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_manual.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_outbound.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/settings.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/block_tasks.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/chunk_coordinator.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/header_tasks.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/messages.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/orchestrator.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/user_agent.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/utility/reservation.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/utility/reservations.hpp is excluded by !src/node/** and included by none
  • src/node/src/executor/executor.cpp is excluded by !src/node/** and included by none
  • src/node/src/full_node.cpp is excluded by !src/node/** and included by none
  • src/node/src/parser.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_double_spend_proof_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_double_spend_proof_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_header_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_transaction_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_transaction_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_block_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_header_sync.cpp is excluded by !src/node/** and included by none
📒 Files selected for processing (46)
  • src/infrastructure/include/kth/infrastructure.hpp
  • src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp
  • src/infrastructure/include/kth/infrastructure/config/authority.hpp
  • src/infrastructure/include/kth/infrastructure/config/endpoint.hpp
  • src/infrastructure/include/kth/infrastructure/display_mode.hpp
  • src/infrastructure/include/kth/infrastructure/error.hpp
  • src/infrastructure/include/kth/infrastructure/handlers.hpp
  • src/infrastructure/include/kth/infrastructure/log/statsd_sink.hpp
  • src/infrastructure/include/kth/infrastructure/log/structured_logger.hpp
  • src/infrastructure/include/kth/infrastructure/math/hash.hpp
  • src/infrastructure/include/kth/infrastructure/message/network_address.hpp
  • src/infrastructure/include/kth/infrastructure/utility/asio_helper.hpp
  • src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp
  • src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp
  • src/infrastructure/include/kth/infrastructure/utility/broadcaster.hpp
  • src/infrastructure/include/kth/infrastructure/utility/byte_reader.hpp
  • src/infrastructure/include/kth/infrastructure/utility/coroutine_config.hpp
  • src/infrastructure/include/kth/infrastructure/utility/cpu_executor.hpp
  • src/infrastructure/include/kth/infrastructure/utility/deadline.hpp
  • src/infrastructure/include/kth/infrastructure/utility/delegates.hpp
  • src/infrastructure/include/kth/infrastructure/utility/dispatcher.hpp
  • src/infrastructure/include/kth/infrastructure/utility/resubscriber.hpp
  • src/infrastructure/include/kth/infrastructure/utility/salted_hashers.hpp
  • src/infrastructure/include/kth/infrastructure/utility/sequencer.hpp
  • src/infrastructure/include/kth/infrastructure/utility/stats.hpp
  • src/infrastructure/include/kth/infrastructure/utility/subscriber.hpp
  • src/infrastructure/include/kth/infrastructure/utility/synchronizer.hpp
  • src/infrastructure/include/kth/infrastructure/utility/system_memory.hpp
  • src/infrastructure/include/kth/infrastructure/utility/task_group.hpp
  • src/infrastructure/include/kth/infrastructure/utility/threadpool.hpp
  • src/infrastructure/include/kth/infrastructure/utility/units.hpp
  • src/infrastructure/include/kth/infrastructure/utility/work.hpp
  • src/infrastructure/src/config/endpoint.cpp
  • src/infrastructure/src/log/sink.cpp
  • src/infrastructure/src/log/statsd_sink.cpp
  • src/infrastructure/src/message/network_address.cpp
  • src/infrastructure/src/utility/deadline.cpp
  • src/infrastructure/src/utility/dispatcher.cpp
  • src/infrastructure/src/utility/sequencer.cpp
  • src/infrastructure/src/utility/socket.cpp
  • src/infrastructure/src/utility/stats.cpp
  • src/infrastructure/src/utility/system_memory.cpp
  • src/infrastructure/src/utility/threadpool.cpp
  • src/infrastructure/src/utility/work.cpp
  • src/infrastructure/third-party/bitcoin-core/crypto/sha256.cpp
  • src/infrastructure/third-party/bitcoin-core/crypto/sha256.h
💤 Files with no reviewable changes (2)
  • src/infrastructure/include/kth/infrastructure/log/statsd_sink.hpp
  • src/infrastructure/include/kth/infrastructure/config/endpoint.hpp
✅ Files skipped from review due to trivial changes (3)
  • src/infrastructure/include/kth/infrastructure/config/authority.hpp
  • src/infrastructure/include/kth/infrastructure/log/structured_logger.hpp
  • src/infrastructure/include/kth/infrastructure/error.hpp
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/infrastructure/include/kth/infrastructure/message/network_address.hpp

@fpelliccioni fpelliccioni force-pushed the version1 branch 3 times, most recently from 41831a4 to a1521e9 Compare March 20, 2026 11:55
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (3)
src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp (1)

131-135: Consider making test_expected a consteval compile-time check.

The test_expected() function is defined but never called. To ensure it's actually validated at compile time (not just when instantiated), consider using consteval or a static_assert approach:

♻️ Ensure compile-time validation
-// Test std::expected support
-inline void test_expected() {
-    [[maybe_unused]] std::expected<int, int> e = 42;
-    static_assert(std::is_same_v<decltype(e.value()), int&>);
-}
+// Test std::expected support
+inline constexpr bool test_expected() {
+    std::expected<int, int> e = 42;
+    static_assert(std::is_same_v<decltype(e.value()), int&>);
+    return e.has_value();
+}
+static_assert(test_expected(), "std::expected must work");

This ensures the test runs at compile time rather than relying on potential instantiation.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp`
around lines 131 - 135, The test_expected function is never invoked so its check
may never run; change it to a compile-time-only check by making test_expected a
consteval function (or replace its body with a static_assert) so the
std::expected<int,int> value() type check is enforced at compile time; update
the declaration of test_expected (and keep the use of e and std::expected) to be
consteval or convert the type check into a static_assert using
std::is_same_v<decltype(std::declval<std::expected<int,int>>().value()), int&>
so the compiler validates this immediately.
src/infrastructure/include/kth/infrastructure/display_mode.hpp (1)

39-51: Consider returning std::optional for parse failures.

The current implementation silently defaults to log on unrecognized input. This is reasonable for CLI parsing where a default is needed, but returning std::optional<display_mode> would let callers decide whether to use a default or report an error.

♻️ Alternative approach with optional
-inline display_mode parse_display_mode(std::string_view str) noexcept {
+inline std::optional<display_mode> parse_display_mode(std::string_view str) noexcept {
     auto eq = [](std::string_view a, std::string_view b) {
         return a.size() == b.size() &&
             std::equal(a.begin(), a.end(), b.begin(), [](char x, char y) {
                 return std::tolower(static_cast<unsigned char>(x)) ==
                        std::tolower(static_cast<unsigned char>(y));
             });
     };
     if (eq(str, "tui"))    return display_mode::tui;
     if (eq(str, "log"))    return display_mode::log;
     if (eq(str, "daemon")) return display_mode::daemon;
-    return display_mode::log;  // default
+    return std::nullopt;
 }

This is optional—the current default-to-log behavior may be intentional for the CLI use case.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/display_mode.hpp` around lines
39 - 51, The parse_display_mode function currently defaults unknown strings to
display_mode::log; change its signature to return std::optional<display_mode>
and return std::nullopt for unrecognized input so callers can decide to use a
default or report an error; specifically update parse_display_mode (and any
direct callers) to accept std::optional<display_mode>, keep the case-insensitive
eq helper as-is, return std::make_optional(display_mode::tui|log|daemon) on
matches and std::nullopt otherwise, and adjust call sites to handle the optional
(e.g., unwrap with a default or propagate an error).
src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp (1)

79-92: Redundant delay(milliseconds) overload.

The explicit delay(std::chrono::milliseconds) overload on line 79 is redundant since the template version on lines 86-92 already handles milliseconds (it's a duration<Rep, Period>). Consider removing the explicit overload.

♻️ Simplified delay function
-inline awaitable<void> delay(std::chrono::milliseconds duration) {
-    auto executor = co_await ::asio::this_coro::executor;
-    ::asio::steady_timer timer(executor);
-    timer.expires_after(duration);
-    co_await timer.async_wait(use_awaitable);
-}
-
 template <typename Rep, typename Period>
 awaitable<void> delay(std::chrono::duration<Rep, Period> duration) {
     auto executor = co_await ::asio::this_coro::executor;
     ::asio::steady_timer timer(executor);
     timer.expires_after(duration);
     co_await timer.async_wait(use_awaitable);
 }

The explicit overload might exist for documentation purposes or to avoid template instantiation overhead in common cases—if intentional, a brief comment would clarify.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`
around lines 79 - 92, The file defines two delay overloads where the explicit
delay(std::chrono::milliseconds) duplicates the template awaitable<void>
delay(std::chrono::duration<Rep, Period>) — remove the redundant
milliseconds-specific overload (the template delay already covers
std::chrono::milliseconds) or if it was intentional keep it but add a clarifying
comment; locate and update the functions named delay, the template
delay(std::chrono::duration<Rep, Period>), and references to
::asio::this_coro::executor / ::asio::steady_timer / use_awaitable accordingly
so only one canonical awaitable delay implementation remains.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp`:
- Around line 131-135: The test_expected function is never invoked so its check
may never run; change it to a compile-time-only check by making test_expected a
consteval function (or replace its body with a static_assert) so the
std::expected<int,int> value() type check is enforced at compile time; update
the declaration of test_expected (and keep the use of e and std::expected) to be
consteval or convert the type check into a static_assert using
std::is_same_v<decltype(std::declval<std::expected<int,int>>().value()), int&>
so the compiler validates this immediately.

In `@src/infrastructure/include/kth/infrastructure/display_mode.hpp`:
- Around line 39-51: The parse_display_mode function currently defaults unknown
strings to display_mode::log; change its signature to return
std::optional<display_mode> and return std::nullopt for unrecognized input so
callers can decide to use a default or report an error; specifically update
parse_display_mode (and any direct callers) to accept
std::optional<display_mode>, keep the case-insensitive eq helper as-is, return
std::make_optional(display_mode::tui|log|daemon) on matches and std::nullopt
otherwise, and adjust call sites to handle the optional (e.g., unwrap with a
default or propagate an error).

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`:
- Around line 79-92: The file defines two delay overloads where the explicit
delay(std::chrono::milliseconds) duplicates the template awaitable<void>
delay(std::chrono::duration<Rep, Period>) — remove the redundant
milliseconds-specific overload (the template delay already covers
std::chrono::milliseconds) or if it was intentional keep it but add a clarifying
comment; locate and update the functions named delay, the template
delay(std::chrono::duration<Rep, Period>), and references to
::asio::this_coro::executor / ::asio::steady_timer / use_awaitable accordingly
so only one canonical awaitable delay implementation remains.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4b8fbd99-d41a-496a-aff8-eb010d42f77d

📥 Commits

Reviewing files that changed from the base of the PR and between 186f8d5 and 41831a4.

⛔ Files ignored due to path filters (255)
  • .coderabbit.yaml is excluded by none and included by none
  • CMakeLists.txt is excluded by !**/CMakeLists.txt and included by none
  • conan.lock is excluded by !**/*.lock, !conan.lock and included by none
  • conanfile.py is excluded by !**/conanfile.py and included by none
  • data/utxo_bloom.dat is excluded by !**/*.dat, !data/**, !**/*.dat and included by none
  • src/CMakeLists.txt is excluded by !**/CMakeLists.txt and included by none
  • src/blockchain/CMakeLists.txt is excluded by !src/blockchain/**, !**/CMakeLists.txt and included by none
  • src/blockchain/conanfile.py is excluded by !src/blockchain/**, !**/conanfile.py and included by none
  • src/blockchain/include/kth/blockchain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/header_index.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/block_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/fast_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/safe_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/block_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/header_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/transaction_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/transaction_pool.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_base.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_block.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_chain_state.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_transaction.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/settings.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/utxo_builder.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_block.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_header.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_transaction.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/interface/block_chain.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/block_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/header_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/transaction_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/transaction_pool.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_base.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_block.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_chain_state.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_transaction.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/settings.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/utxo_bloom_embed.S.in is excluded by !src/blockchain/**, !**/*.S.in and included by none
  • src/blockchain/src/utxo_builder.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_block.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_header.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_transaction.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/test/header_index.cpp is excluded by !src/blockchain/**, !**/test/** and included by none
  • src/blockchain/test/header_organizer.cpp is excluded by !src/blockchain/**, !**/test/** and included by none
  • src/c-api/conanfile.py is excluded by !src/c-api/**, !**/conanfile.py and included by none
  • src/c-api/console/main.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/console/print_headers.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/chain/chain_other.h is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/conversions.hpp is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/primitives.h is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_async.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_other.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_sync.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/mempool_transaction.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/mempool_transaction_list.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/node.cpp is excluded by !src/c-api/** and included by none
  • src/consensus/conanfile.py is excluded by !src/consensus/**, !**/conanfile.py and included by none
  • src/consensus/src/bch-rules/coins.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/primitives/token.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/script/interpreter.cpp is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/script/vm_limits.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/util/strencodings.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/btc-rules/script/interpreter.cpp is excluded by !src/consensus/** and included by none
  • src/database/CMakeLists.txt is excluded by !src/database/**, !**/CMakeLists.txt and included by none
  • src/database/conanfile.py is excluded by !src/database/**, !**/conanfile.py and included by none
  • src/database/include/kth/database/block_store.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/block_undo.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/data_base.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/block_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/header_abla_entry.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/header_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/history_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/internal_database.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/internal_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/property_code.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/reorg_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/spend_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/transaction_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/transaction_unconfirmed_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/utxo_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/utxoz_database.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/flat_file_pos.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/flat_file_seq.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/header_index.hpp is excluded by !src/database/** and included by none
  • src/database/src/block_store.cpp is excluded by !src/database/** and included by none
  • src/database/src/block_undo.cpp is excluded by !src/database/** and included by none
  • src/database/src/data_base.cpp is excluded by !src/database/** and included by none
  • src/database/src/databases/header_abla_entry.cpp is excluded by !src/database/** and included by none
  • src/database/src/databases/utxoz_database.cpp is excluded by !src/database/** and included by none
  • src/database/src/flat_file_seq.cpp is excluded by !src/database/** and included by none
  • src/database/src/header_index.cpp is excluded by !src/database/** and included by none
  • src/database/src/settings.cpp is excluded by !src/database/** and included by none
  • src/database/test/data_base.cpp is excluded by !src/database/**, !**/test/** and included by none
  • src/database/tools/utxoz_fingerprint/utxoz_fingerprint.cpp is excluded by !src/database/**, !**/tools/** and included by none
  • src/domain/CMakeLists.txt is excluded by !src/domain/**, !**/CMakeLists.txt and included by none
  • src/domain/bench/hash/benchmarks.cpp is excluded by !src/domain/** and included by none
  • src/domain/bench/merkle/benchmarks.cpp is excluded by !src/domain/** and included by none
  • src/domain/conanfile.py is excluded by !src/domain/**, !**/conanfile.py and included by none
  • src/domain/include/kth/domain/chain/block.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/block_basis.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/header.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/header_basis.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/light_block.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/config/parser.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/constants/common.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/addrv2.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/messages.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/send_addrv2.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/version.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/multi_crypto_support.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/version.hpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/block.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/block_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/header.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/header_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/light_block.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/output_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/message/addrv2.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/message/send_addrv2.cpp is excluded by !src/domain/** and included by none
  • src/domain/test/chain/light_block.cpp is excluded by !src/domain/**, !**/test/** and included by none
  • src/domain/test/message/addrv2_bchn_comparison.cpp is excluded by !src/domain/**, !**/test/** and included by none
  • src/infrastructure/CMakeLists.txt is excluded by !**/CMakeLists.txt and included by src/infrastructure/**
  • src/infrastructure/conanfile.py is excluded by !**/conanfile.py and included by src/infrastructure/**
  • src/infrastructure/include/kth/infrastructure/impl/utility/resubscriber.ipp is excluded by !**/*.ipp and included by src/infrastructure/**
  • src/infrastructure/include/kth/infrastructure/impl/utility/subscriber.ipp is excluded by !**/*.ipp and included by src/infrastructure/**
  • src/infrastructure/test/task_group.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/async_channel.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/awaitable_helpers.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/coroutine_smoke_test.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/threadpool.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/network/CMakeLists.txt is excluded by !src/network/**, !**/CMakeLists.txt and included by none
  • src/network/conanfile.py is excluded by !src/network/**, !**/conanfile.py and included by none
  • src/network/include/kth/network.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/acceptor.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/banlist.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/channel.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/connector.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/handlers/ping.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/handlers/pong.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/hosts.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/message_subscriber.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/net_permissions.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/normalized_address.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/p2p.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/p2p_node.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_database.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_manager.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_record.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_session.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_address_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_events.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_ping_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_ping_60001.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_reject_70002.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_seed_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_timer.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_version_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_version_70002.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols_coro.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/proxy.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_batch.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_inbound.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_manual.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_outbound.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_seed.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/settings.hpp is excluded by !src/network/** and included by none
  • src/network/src/acceptor.cpp is excluded by !src/network/** and included by none
  • src/network/src/banlist.cpp is excluded by !src/network/** and included by none
  • src/network/src/channel.cpp is excluded by !src/network/** and included by none
  • src/network/src/connector.cpp is excluded by !src/network/** and included by none
  • src/network/src/handlers/ping.cpp is excluded by !src/network/** and included by none
  • src/network/src/handlers/pong.cpp is excluded by !src/network/** and included by none
  • src/network/src/hosts.cpp is excluded by !src/network/** and included by none
  • src/network/src/message_subscriber.cpp is excluded by !src/network/** and included by none
  • src/network/src/net_permissions.cpp is excluded by !src/network/** and included by none
  • src/network/src/p2p.cpp is excluded by !src/network/** and included by none
  • src/network/src/p2p_node.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_database.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_manager.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_session.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_address_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_events.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_ping_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_ping_60001.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_reject_70002.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_seed_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_timer.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_version_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_version_70002.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols_coro.cpp is excluded by !src/network/** and included by none
  • src/network/src/proxy.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_batch.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_inbound.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_manual.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_outbound.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_seed.cpp is excluded by !src/network/** and included by none
  • src/network/src/settings.cpp is excluded by !src/network/** and included by none
  • src/network/test/p2p_node.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_database.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_manager.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_session.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/protocols_coro.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/test_helpers.hpp is excluded by !src/network/**, !**/test/** and included by none
  • src/node-exe/CMakeLists.txt is excluded by !src/node-exe/**, !**/CMakeLists.txt and included by none
  • src/node-exe/conanfile.py is excluded by !src/node-exe/**, !**/conanfile.py and included by none
  • src/node-exe/src/main.cpp is excluded by !src/node-exe/** and included by none
  • src/node-exe/src/tui_dashboard.cpp is excluded by !src/node-exe/** and included by none
  • src/node-exe/src/tui_dashboard.hpp is excluded by !src/node-exe/** and included by none
  • src/node/CMakeLists.txt is excluded by !src/node/**, !**/CMakeLists.txt and included by none
  • src/node/conanfile.py is excluded by !src/node/**, !**/conanfile.py and included by none
  • src/node/data/bn.cfg is excluded by !src/node/** and included by none
  • src/node/include/kth/node.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/executor/executor.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/full_node.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_double_spend_proof_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_double_spend_proof_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_header_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_transaction_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_transaction_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_block_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_header_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_inbound.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_manual.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_outbound.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/settings.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/block_tasks.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/chunk_coordinator.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/header_tasks.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/messages.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/orchestrator.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/user_agent.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/utility/reservation.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/utility/reservations.hpp is excluded by !src/node/** and included by none
  • src/node/src/executor/executor.cpp is excluded by !src/node/** and included by none
  • src/node/src/full_node.cpp is excluded by !src/node/** and included by none
  • src/node/src/parser.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_double_spend_proof_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_double_spend_proof_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_header_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_transaction_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_transaction_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_block_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_header_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_inbound.cpp is excluded by !src/node/** and included by none
📒 Files selected for processing (45)
  • src/infrastructure/include/kth/infrastructure.hpp
  • src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp
  • src/infrastructure/include/kth/infrastructure/config/authority.hpp
  • src/infrastructure/include/kth/infrastructure/config/endpoint.hpp
  • src/infrastructure/include/kth/infrastructure/display_mode.hpp
  • src/infrastructure/include/kth/infrastructure/error.hpp
  • src/infrastructure/include/kth/infrastructure/handlers.hpp
  • src/infrastructure/include/kth/infrastructure/log/statsd_sink.hpp
  • src/infrastructure/include/kth/infrastructure/math/hash.hpp
  • src/infrastructure/include/kth/infrastructure/message/network_address.hpp
  • src/infrastructure/include/kth/infrastructure/utility/asio_helper.hpp
  • src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp
  • src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp
  • src/infrastructure/include/kth/infrastructure/utility/broadcaster.hpp
  • src/infrastructure/include/kth/infrastructure/utility/byte_reader.hpp
  • src/infrastructure/include/kth/infrastructure/utility/coroutine_config.hpp
  • src/infrastructure/include/kth/infrastructure/utility/cpu_executor.hpp
  • src/infrastructure/include/kth/infrastructure/utility/deadline.hpp
  • src/infrastructure/include/kth/infrastructure/utility/delegates.hpp
  • src/infrastructure/include/kth/infrastructure/utility/dispatcher.hpp
  • src/infrastructure/include/kth/infrastructure/utility/resubscriber.hpp
  • src/infrastructure/include/kth/infrastructure/utility/salted_hashers.hpp
  • src/infrastructure/include/kth/infrastructure/utility/sequencer.hpp
  • src/infrastructure/include/kth/infrastructure/utility/stats.hpp
  • src/infrastructure/include/kth/infrastructure/utility/subscriber.hpp
  • src/infrastructure/include/kth/infrastructure/utility/synchronizer.hpp
  • src/infrastructure/include/kth/infrastructure/utility/system_memory.hpp
  • src/infrastructure/include/kth/infrastructure/utility/task_group.hpp
  • src/infrastructure/include/kth/infrastructure/utility/threadpool.hpp
  • src/infrastructure/include/kth/infrastructure/utility/units.hpp
  • src/infrastructure/include/kth/infrastructure/utility/work.hpp
  • src/infrastructure/src/config/endpoint.cpp
  • src/infrastructure/src/log/sink.cpp
  • src/infrastructure/src/log/statsd_sink.cpp
  • src/infrastructure/src/message/network_address.cpp
  • src/infrastructure/src/utility/deadline.cpp
  • src/infrastructure/src/utility/dispatcher.cpp
  • src/infrastructure/src/utility/sequencer.cpp
  • src/infrastructure/src/utility/socket.cpp
  • src/infrastructure/src/utility/stats.cpp
  • src/infrastructure/src/utility/system_memory.cpp
  • src/infrastructure/src/utility/threadpool.cpp
  • src/infrastructure/src/utility/work.cpp
  • src/infrastructure/third-party/bitcoin-core/crypto/sha256.cpp
  • src/infrastructure/third-party/bitcoin-core/crypto/sha256.h
💤 Files with no reviewable changes (2)
  • src/infrastructure/include/kth/infrastructure/log/statsd_sink.hpp
  • src/infrastructure/include/kth/infrastructure/config/endpoint.hpp
✅ Files skipped from review due to trivial changes (2)
  • src/infrastructure/include/kth/infrastructure/config/authority.hpp
  • src/infrastructure/include/kth/infrastructure/error.hpp
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/infrastructure/include/kth/infrastructure/message/network_address.hpp
  • src/infrastructure/include/kth/infrastructure/math/hash.hpp

std::unique_ptr<database::block_store> block_store_;

// UTXO-Z high-performance UTXO database
database::utxoz_database utxoz_db_;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

block_chain constructor missing header_index_ and utxoz_db_ initialization

Medium Severity

The block_chain constructor's member initializer list does not initialize header_index_ or utxoz_db_. The header_index_ is declared as a value member (not a pointer), so it will be default-constructed, which may be fine. However, utxoz_db_ is also a value member that gets used in start() without any constructor arguments being passed. If utxoz_database requires specific construction parameters (e.g., a path), this could lead to incorrect state or undefined behavior when open() is called later.

Additional Locations (1)
Fix in Cursor Fix in Web

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (2)
src/infrastructure/include/kth/infrastructure/display_mode.hpp (1)

39-51: Consider returning std::optional to distinguish parse failures.

The current implementation silently defaults to display_mode::log when parsing fails. This makes it impossible for callers to detect typos in configuration (e.g., "daemonn" → silent fallback to log). Returning std::optional<display_mode> would allow callers to handle invalid input explicitly.

♻️ Optional refactor with explicit failure handling
-/// Parse display_mode from string (case-insensitive)
-inline display_mode parse_display_mode(std::string_view str) noexcept {
+/// Parse display_mode from string (case-insensitive), returns nullopt on failure
+inline std::optional<display_mode> parse_display_mode(std::string_view str) noexcept {
     auto eq = [](std::string_view a, std::string_view b) {
         return a.size() == b.size() &&
             std::equal(a.begin(), a.end(), b.begin(), [](char x, char y) {
                 return std::tolower(static_cast<unsigned char>(x)) ==
                        std::tolower(static_cast<unsigned char>(y));
             });
     };
     if (eq(str, "tui"))    return display_mode::tui;
     if (eq(str, "log"))    return display_mode::log;
     if (eq(str, "daemon")) return display_mode::daemon;
-    return display_mode::log;  // default
+    return std::nullopt;
 }

Add #include <optional> at the top. Callers can then use .value_or(display_mode::log) if they want the default behavior.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/display_mode.hpp` around lines
39 - 51, Change parse_display_mode to return std::optional<display_mode> instead
of always returning display_mode::log: include <optional>, update the signature
parse_display_mode(std::string_view) noexcept -> std::optional<display_mode>,
keep the case-insensitive comparator, return display_mode::tui/log/daemon on
matches and return std::nullopt for unknown strings; update callers of
parse_display_mode to handle the optional (e.g., .value_or(display_mode::log)
where a default is desired) so typos are no longer silently mapped to log.
src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp (1)

79-85: delay() propagates exceptions on cancellation.

If the timer is cancelled (e.g., via steady_timer::cancel()), async_wait will complete with asio::error::operation_aborted, which use_awaitable converts to an exception. This may be surprising for callers expecting a simple sleep. Consider documenting this behavior or returning an error code.

📚 Document cancellation behavior or handle it

Option 1 - Document:

 // -----------------------------------------------------------------------------
 // delay: Simple async sleep
+// Note: Throws asio::system_error if the timer is cancelled.
 // -----------------------------------------------------------------------------

Option 2 - Return error code:

 template <typename Rep, typename Period>
-awaitable<void> delay(std::chrono::duration<Rep, Period> duration) {
+awaitable<std::error_code> delay(std::chrono::duration<Rep, Period> duration) {
     auto executor = co_await ::asio::this_coro::executor;
     ::asio::steady_timer timer(executor);
     timer.expires_after(duration);
-    co_await timer.async_wait(use_awaitable);
+    auto [ec] = co_await timer.async_wait(::asio::as_tuple(use_awaitable));
+    co_return ec;
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`
around lines 79 - 85, The delay template function (delay) currently co_awaits
timer.async_wait(use_awaitable) which will throw when the timer is cancelled
(asio::error::operation_aborted); update delay to either document this
cancellation behavior or change its contract so callers don’t get exceptions —
for a behavioral fix catch the operation_aborted exception around the async_wait
and swallow it (returning normally) or return an error/result type instead;
reference the delay function, the local ::asio::steady_timer timer, async_wait
and use_awaitable and ensure any change preserves the existing executor
acquisition (co_await ::asio::this_coro::executor) and
timer.expires_after(duration).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/infrastructure/include/kth/infrastructure.hpp`:
- Around line 110-113: The four coroutine-related includes (async_channel.hpp,
awaitable_helpers.hpp, cpu_executor.hpp, task_group.hpp) are pulled into the
umbrella header unconditionally which breaks Emscripten builds; update the
umbrella header that contains these lines so they are only included when not
compiling for Emscripten by wrapping those include statements in a preprocessor
guard (e.g. `#if` !defined(__EMSCRIPTEN__) ... `#endif`), keeping the rest of the
header unchanged and ensuring the symbols async_channel, awaitable_helpers,
cpu_executor, and task_group remain available on non-Emscripten platforms.

In `@src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp`:
- Around line 10-12: The header uses asio::experimental::channel type aliases
(see async_channel.hpp and the aliases referencing asio::experimental::channel)
but does not guard for Emscripten; add an `#if` !defined(__EMSCRIPTEN__) (or
`#ifdef` __EMSCRIPTEN__ alternative) around the include/alias block so when
__EMSCRIPTEN__ is defined you either provide a clear static_assert or exclude
the type aliases entirely; specifically guard the section that depends on
asio::experimental::channel (the type alias declarations) so Emscripten builds
get a clear error message or an empty header instead of cryptic failures.

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`:
- Around line 1-12: This header uses Asio coroutine features that aren't
available under Emscripten; wrap the entire coroutine-dependent content of
awaitable_helpers.hpp (everything between the include guard
KTH_INFRASTRUCTURE_AWAITABLE_HELPERS_HPP and its `#endif`) with the same
Emscripten preprocessor guard pattern used in async_channel.hpp (e.g. `#if`
!defined(EMSCRIPTEN) ... `#else` / `#error` or an empty stub branch ... `#endif`) so
the includes (<chrono>, <expected>, <system_error>, and
<kth/infrastructure/utility/asio_helper.hpp>) and any awaitable-related
declarations are excluded when compiling for Emscripten.

---

Nitpick comments:
In `@src/infrastructure/include/kth/infrastructure/display_mode.hpp`:
- Around line 39-51: Change parse_display_mode to return
std::optional<display_mode> instead of always returning display_mode::log:
include <optional>, update the signature parse_display_mode(std::string_view)
noexcept -> std::optional<display_mode>, keep the case-insensitive comparator,
return display_mode::tui/log/daemon on matches and return std::nullopt for
unknown strings; update callers of parse_display_mode to handle the optional
(e.g., .value_or(display_mode::log) where a default is desired) so typos are no
longer silently mapped to log.

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`:
- Around line 79-85: The delay template function (delay) currently co_awaits
timer.async_wait(use_awaitable) which will throw when the timer is cancelled
(asio::error::operation_aborted); update delay to either document this
cancellation behavior or change its contract so callers don’t get exceptions —
for a behavioral fix catch the operation_aborted exception around the async_wait
and swallow it (returning normally) or return an error/result type instead;
reference the delay function, the local ::asio::steady_timer timer, async_wait
and use_awaitable and ensure any change preserves the existing executor
acquisition (co_await ::asio::this_coro::executor) and
timer.expires_after(duration).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 41843f29-44a8-4fe3-9ef4-059a633a0a84

📥 Commits

Reviewing files that changed from the base of the PR and between 41831a4 and 1d08b5b.

⛔ Files ignored due to path filters (255)
  • .coderabbit.yaml is excluded by none and included by none
  • CMakeLists.txt is excluded by !**/CMakeLists.txt and included by none
  • conan.lock is excluded by !**/*.lock, !conan.lock and included by none
  • conanfile.py is excluded by !**/conanfile.py and included by none
  • data/utxo_bloom.dat is excluded by !**/*.dat, !data/**, !**/*.dat and included by none
  • src/CMakeLists.txt is excluded by !**/CMakeLists.txt and included by none
  • src/blockchain/CMakeLists.txt is excluded by !src/blockchain/**, !**/CMakeLists.txt and included by none
  • src/blockchain/conanfile.py is excluded by !src/blockchain/**, !**/conanfile.py and included by none
  • src/blockchain/include/kth/blockchain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/header_index.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/block_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/fast_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/safe_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/block_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/header_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/transaction_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/transaction_pool.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_base.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_block.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_chain_state.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_transaction.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/settings.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/utxo_builder.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_block.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_header.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_transaction.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/interface/block_chain.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/block_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/header_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/transaction_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/transaction_pool.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_base.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_block.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_chain_state.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_transaction.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/settings.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/utxo_bloom_embed.S.in is excluded by !src/blockchain/**, !**/*.S.in and included by none
  • src/blockchain/src/utxo_builder.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_block.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_header.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_transaction.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/test/header_index.cpp is excluded by !src/blockchain/**, !**/test/** and included by none
  • src/blockchain/test/header_organizer.cpp is excluded by !src/blockchain/**, !**/test/** and included by none
  • src/c-api/conanfile.py is excluded by !src/c-api/**, !**/conanfile.py and included by none
  • src/c-api/console/main.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/console/print_headers.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/chain/chain_other.h is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/conversions.hpp is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/primitives.h is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_async.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_other.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_sync.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/mempool_transaction.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/mempool_transaction_list.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/node.cpp is excluded by !src/c-api/** and included by none
  • src/consensus/conanfile.py is excluded by !src/consensus/**, !**/conanfile.py and included by none
  • src/consensus/src/bch-rules/coins.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/primitives/token.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/script/interpreter.cpp is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/script/vm_limits.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/util/strencodings.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/btc-rules/script/interpreter.cpp is excluded by !src/consensus/** and included by none
  • src/database/CMakeLists.txt is excluded by !src/database/**, !**/CMakeLists.txt and included by none
  • src/database/conanfile.py is excluded by !src/database/**, !**/conanfile.py and included by none
  • src/database/include/kth/database/block_store.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/block_undo.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/data_base.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/block_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/header_abla_entry.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/header_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/history_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/internal_database.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/internal_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/property_code.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/reorg_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/spend_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/transaction_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/transaction_unconfirmed_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/utxo_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/utxoz_database.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/flat_file_pos.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/flat_file_seq.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/header_index.hpp is excluded by !src/database/** and included by none
  • src/database/src/block_store.cpp is excluded by !src/database/** and included by none
  • src/database/src/block_undo.cpp is excluded by !src/database/** and included by none
  • src/database/src/data_base.cpp is excluded by !src/database/** and included by none
  • src/database/src/databases/header_abla_entry.cpp is excluded by !src/database/** and included by none
  • src/database/src/databases/utxoz_database.cpp is excluded by !src/database/** and included by none
  • src/database/src/flat_file_seq.cpp is excluded by !src/database/** and included by none
  • src/database/src/header_index.cpp is excluded by !src/database/** and included by none
  • src/database/src/settings.cpp is excluded by !src/database/** and included by none
  • src/database/test/data_base.cpp is excluded by !src/database/**, !**/test/** and included by none
  • src/database/tools/utxoz_fingerprint/utxoz_fingerprint.cpp is excluded by !src/database/**, !**/tools/** and included by none
  • src/domain/CMakeLists.txt is excluded by !src/domain/**, !**/CMakeLists.txt and included by none
  • src/domain/bench/hash/benchmarks.cpp is excluded by !src/domain/** and included by none
  • src/domain/bench/merkle/benchmarks.cpp is excluded by !src/domain/** and included by none
  • src/domain/conanfile.py is excluded by !src/domain/**, !**/conanfile.py and included by none
  • src/domain/include/kth/domain/chain/block.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/block_basis.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/header.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/header_basis.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/light_block.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/config/parser.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/constants/common.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/addrv2.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/messages.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/send_addrv2.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/version.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/multi_crypto_support.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/version.hpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/block.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/block_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/header.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/header_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/light_block.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/output_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/message/addrv2.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/message/send_addrv2.cpp is excluded by !src/domain/** and included by none
  • src/domain/test/chain/light_block.cpp is excluded by !src/domain/**, !**/test/** and included by none
  • src/domain/test/message/addrv2_bchn_comparison.cpp is excluded by !src/domain/**, !**/test/** and included by none
  • src/infrastructure/CMakeLists.txt is excluded by !**/CMakeLists.txt and included by src/infrastructure/**
  • src/infrastructure/conanfile.py is excluded by !**/conanfile.py and included by src/infrastructure/**
  • src/infrastructure/include/kth/infrastructure/impl/utility/resubscriber.ipp is excluded by !**/*.ipp and included by src/infrastructure/**
  • src/infrastructure/include/kth/infrastructure/impl/utility/subscriber.ipp is excluded by !**/*.ipp and included by src/infrastructure/**
  • src/infrastructure/test/task_group.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/async_channel.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/awaitable_helpers.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/coroutine_smoke_test.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/threadpool.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/network/CMakeLists.txt is excluded by !src/network/**, !**/CMakeLists.txt and included by none
  • src/network/conanfile.py is excluded by !src/network/**, !**/conanfile.py and included by none
  • src/network/include/kth/network.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/acceptor.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/banlist.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/channel.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/connector.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/handlers/ping.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/handlers/pong.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/hosts.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/message_subscriber.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/net_permissions.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/normalized_address.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/p2p.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/p2p_node.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_database.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_manager.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_record.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_session.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_address_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_events.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_ping_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_ping_60001.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_reject_70002.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_seed_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_timer.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_version_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_version_70002.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols_coro.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/proxy.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_batch.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_inbound.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_manual.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_outbound.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_seed.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/settings.hpp is excluded by !src/network/** and included by none
  • src/network/src/acceptor.cpp is excluded by !src/network/** and included by none
  • src/network/src/banlist.cpp is excluded by !src/network/** and included by none
  • src/network/src/channel.cpp is excluded by !src/network/** and included by none
  • src/network/src/connector.cpp is excluded by !src/network/** and included by none
  • src/network/src/handlers/ping.cpp is excluded by !src/network/** and included by none
  • src/network/src/handlers/pong.cpp is excluded by !src/network/** and included by none
  • src/network/src/hosts.cpp is excluded by !src/network/** and included by none
  • src/network/src/message_subscriber.cpp is excluded by !src/network/** and included by none
  • src/network/src/net_permissions.cpp is excluded by !src/network/** and included by none
  • src/network/src/p2p.cpp is excluded by !src/network/** and included by none
  • src/network/src/p2p_node.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_database.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_manager.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_session.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_address_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_events.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_ping_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_ping_60001.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_reject_70002.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_seed_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_timer.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_version_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_version_70002.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols_coro.cpp is excluded by !src/network/** and included by none
  • src/network/src/proxy.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_batch.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_inbound.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_manual.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_outbound.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_seed.cpp is excluded by !src/network/** and included by none
  • src/network/src/settings.cpp is excluded by !src/network/** and included by none
  • src/network/test/p2p_node.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_database.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_manager.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_session.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/protocols_coro.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/test_helpers.hpp is excluded by !src/network/**, !**/test/** and included by none
  • src/node-exe/CMakeLists.txt is excluded by !src/node-exe/**, !**/CMakeLists.txt and included by none
  • src/node-exe/conanfile.py is excluded by !src/node-exe/**, !**/conanfile.py and included by none
  • src/node-exe/src/main.cpp is excluded by !src/node-exe/** and included by none
  • src/node-exe/src/tui_dashboard.cpp is excluded by !src/node-exe/** and included by none
  • src/node-exe/src/tui_dashboard.hpp is excluded by !src/node-exe/** and included by none
  • src/node/CMakeLists.txt is excluded by !src/node/**, !**/CMakeLists.txt and included by none
  • src/node/conanfile.py is excluded by !src/node/**, !**/conanfile.py and included by none
  • src/node/data/bn.cfg is excluded by !src/node/** and included by none
  • src/node/include/kth/node.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/executor/executor.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/full_node.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_double_spend_proof_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_double_spend_proof_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_header_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_transaction_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_transaction_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_block_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_header_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_inbound.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_manual.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_outbound.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/settings.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/block_tasks.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/chunk_coordinator.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/header_tasks.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/messages.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/orchestrator.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/user_agent.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/utility/reservation.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/utility/reservations.hpp is excluded by !src/node/** and included by none
  • src/node/src/executor/executor.cpp is excluded by !src/node/** and included by none
  • src/node/src/full_node.cpp is excluded by !src/node/** and included by none
  • src/node/src/parser.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_double_spend_proof_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_double_spend_proof_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_header_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_transaction_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_transaction_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_block_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_header_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_inbound.cpp is excluded by !src/node/** and included by none
📒 Files selected for processing (45)
  • src/infrastructure/include/kth/infrastructure.hpp
  • src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp
  • src/infrastructure/include/kth/infrastructure/config/authority.hpp
  • src/infrastructure/include/kth/infrastructure/config/endpoint.hpp
  • src/infrastructure/include/kth/infrastructure/display_mode.hpp
  • src/infrastructure/include/kth/infrastructure/error.hpp
  • src/infrastructure/include/kth/infrastructure/handlers.hpp
  • src/infrastructure/include/kth/infrastructure/log/statsd_sink.hpp
  • src/infrastructure/include/kth/infrastructure/math/hash.hpp
  • src/infrastructure/include/kth/infrastructure/message/network_address.hpp
  • src/infrastructure/include/kth/infrastructure/utility/asio_helper.hpp
  • src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp
  • src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp
  • src/infrastructure/include/kth/infrastructure/utility/broadcaster.hpp
  • src/infrastructure/include/kth/infrastructure/utility/byte_reader.hpp
  • src/infrastructure/include/kth/infrastructure/utility/coroutine_config.hpp
  • src/infrastructure/include/kth/infrastructure/utility/cpu_executor.hpp
  • src/infrastructure/include/kth/infrastructure/utility/deadline.hpp
  • src/infrastructure/include/kth/infrastructure/utility/delegates.hpp
  • src/infrastructure/include/kth/infrastructure/utility/dispatcher.hpp
  • src/infrastructure/include/kth/infrastructure/utility/resubscriber.hpp
  • src/infrastructure/include/kth/infrastructure/utility/salted_hashers.hpp
  • src/infrastructure/include/kth/infrastructure/utility/sequencer.hpp
  • src/infrastructure/include/kth/infrastructure/utility/stats.hpp
  • src/infrastructure/include/kth/infrastructure/utility/subscriber.hpp
  • src/infrastructure/include/kth/infrastructure/utility/synchronizer.hpp
  • src/infrastructure/include/kth/infrastructure/utility/system_memory.hpp
  • src/infrastructure/include/kth/infrastructure/utility/task_group.hpp
  • src/infrastructure/include/kth/infrastructure/utility/threadpool.hpp
  • src/infrastructure/include/kth/infrastructure/utility/units.hpp
  • src/infrastructure/include/kth/infrastructure/utility/work.hpp
  • src/infrastructure/src/config/endpoint.cpp
  • src/infrastructure/src/log/sink.cpp
  • src/infrastructure/src/log/statsd_sink.cpp
  • src/infrastructure/src/message/network_address.cpp
  • src/infrastructure/src/utility/deadline.cpp
  • src/infrastructure/src/utility/dispatcher.cpp
  • src/infrastructure/src/utility/sequencer.cpp
  • src/infrastructure/src/utility/socket.cpp
  • src/infrastructure/src/utility/stats.cpp
  • src/infrastructure/src/utility/system_memory.cpp
  • src/infrastructure/src/utility/threadpool.cpp
  • src/infrastructure/src/utility/work.cpp
  • src/infrastructure/third-party/bitcoin-core/crypto/sha256.cpp
  • src/infrastructure/third-party/bitcoin-core/crypto/sha256.h
💤 Files with no reviewable changes (2)
  • src/infrastructure/include/kth/infrastructure/log/statsd_sink.hpp
  • src/infrastructure/include/kth/infrastructure/config/endpoint.hpp
✅ Files skipped from review due to trivial changes (1)
  • src/infrastructure/include/kth/infrastructure/config/authority.hpp
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/infrastructure/include/kth/infrastructure/error.hpp
  • src/infrastructure/include/kth/infrastructure/message/network_address.hpp
  • src/infrastructure/include/kth/infrastructure/math/hash.hpp

@fpelliccioni fpelliccioni force-pushed the version1 branch 4 times, most recently from 3b4385d to b5fbccf Compare March 20, 2026 12:37
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
src/infrastructure/include/kth/infrastructure/display_mode.hpp (1)

39-50: Avoid silently coercing invalid values to log.

Line 50 defaults unknown input to display_mode::log, which can hide CLI/config typos. Prefer a strict parser (std::optional<display_mode>) and apply fallback at the call site with warning/error context.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/display_mode.hpp` around lines
39 - 50, The parser parse_display_mode currently returns display_mode::log for
unknown inputs which silently coerces invalid values; change parse_display_mode
to return std::optional<display_mode> (return std::nullopt for unknown strings)
and update callers to apply the fallback or emit warnings/errors in context;
keep the case-insensitive comparison logic and the mapping for
"tui","log","daemon" but remove the unconditional defaulting inside
parse_display_mode so callers of parse_display_mode can decide the fallback
behavior.
src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp (1)

12-17: Add <utility> to make this header self-contained.

The header uses std::move (lines 43, 51, 68, 76) and std::forward (line 97) but does not directly include <utility>. Add it to avoid fragility from transitive includes in a public header.

♻️ Proposed fix
 `#include` <chrono>
 `#include` <expected>
 `#include` <system_error>
+#include <utility>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`
around lines 12 - 17, The header awaitable_helpers.hpp relies on std::move and
std::forward but doesn't include <utility>, making it fragile; add the missing
include by inserting `#include` <utility> alongside the other headers at the top
of awaitable_helpers.hpp so functions that use std::move (around lines noted)
and std::forward compile when this header is used directly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp`:
- Around line 32-34: The current preprocessor check and the constexpr that
assign __cplusplus can false-fail on MSVC; update the compile-time standard
detection to prefer _MSVC_LANG when present. Replace the preprocessor condition
that compares __cplusplus with 202302L to use (defined(_MSVC_LANG) ? _MSVC_LANG
: __cplusplus), and similarly change the constexpr that currently stores
__cplusplus to use that same conditional expression so MSVC reports the actual
standard via _MSVC_LANG while other compilers continue to use __cplusplus.

In `@src/infrastructure/include/kth/infrastructure/display_mode.hpp`:
- Around line 8-11: Add an explicit `#include` <cctype> to the header so calls to
std::tolower are guaranteed to be declared; locate the include block (currently
containing <algorithm>, <cstdint>, <string>, <string_view>) and add <cctype>
there to ensure portability for the uses of std::tolower in the file (references
to std::tolower around the display mode parsing logic).

---

Nitpick comments:
In `@src/infrastructure/include/kth/infrastructure/display_mode.hpp`:
- Around line 39-50: The parser parse_display_mode currently returns
display_mode::log for unknown inputs which silently coerces invalid values;
change parse_display_mode to return std::optional<display_mode> (return
std::nullopt for unknown strings) and update callers to apply the fallback or
emit warnings/errors in context; keep the case-insensitive comparison logic and
the mapping for "tui","log","daemon" but remove the unconditional defaulting
inside parse_display_mode so callers of parse_display_mode can decide the
fallback behavior.

In `@src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp`:
- Around line 12-17: The header awaitable_helpers.hpp relies on std::move and
std::forward but doesn't include <utility>, making it fragile; add the missing
include by inserting `#include` <utility> alongside the other headers at the top
of awaitable_helpers.hpp so functions that use std::move (around lines noted)
and std::forward compile when this header is used directly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 864d6685-a10c-45b7-8788-b59d60c05c6e

📥 Commits

Reviewing files that changed from the base of the PR and between 1d08b5b and b5fbccf.

⛔ Files ignored due to path filters (255)
  • .coderabbit.yaml is excluded by none and included by none
  • CMakeLists.txt is excluded by !**/CMakeLists.txt and included by none
  • conan.lock is excluded by !**/*.lock, !conan.lock and included by none
  • conanfile.py is excluded by !**/conanfile.py and included by none
  • data/utxo_bloom.dat is excluded by !**/*.dat, !data/**, !**/*.dat and included by none
  • src/CMakeLists.txt is excluded by !**/CMakeLists.txt and included by none
  • src/blockchain/CMakeLists.txt is excluded by !src/blockchain/**, !**/CMakeLists.txt and included by none
  • src/blockchain/conanfile.py is excluded by !src/blockchain/**, !**/conanfile.py and included by none
  • src/blockchain/include/kth/blockchain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/header_index.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/block_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/fast_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/interface/safe_chain.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/block_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/header_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/transaction_organizer.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/pools/transaction_pool.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_base.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_block.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_chain_state.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/populate/populate_transaction.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/settings.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/utxo_builder.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_block.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_header.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/include/kth/blockchain/validate/validate_transaction.hpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/interface/block_chain.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/block_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/header_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/transaction_organizer.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/pools/transaction_pool.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_base.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_block.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_chain_state.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/populate/populate_transaction.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/settings.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/utxo_bloom_embed.S.in is excluded by !src/blockchain/**, !**/*.S.in and included by none
  • src/blockchain/src/utxo_builder.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_block.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_header.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/src/validate/validate_transaction.cpp is excluded by !src/blockchain/** and included by none
  • src/blockchain/test/header_index.cpp is excluded by !src/blockchain/**, !**/test/** and included by none
  • src/blockchain/test/header_organizer.cpp is excluded by !src/blockchain/**, !**/test/** and included by none
  • src/c-api/conanfile.py is excluded by !src/c-api/**, !**/conanfile.py and included by none
  • src/c-api/console/main.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/console/print_headers.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/chain/chain_other.h is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/conversions.hpp is excluded by !src/c-api/** and included by none
  • src/c-api/include/kth/capi/primitives.h is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_async.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_other.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/chain_sync.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/mempool_transaction.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/chain/mempool_transaction_list.cpp is excluded by !src/c-api/** and included by none
  • src/c-api/src/node.cpp is excluded by !src/c-api/** and included by none
  • src/consensus/conanfile.py is excluded by !src/consensus/**, !**/conanfile.py and included by none
  • src/consensus/src/bch-rules/coins.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/primitives/token.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/script/interpreter.cpp is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/script/vm_limits.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/bch-rules/util/strencodings.h is excluded by !src/consensus/** and included by none
  • src/consensus/src/btc-rules/script/interpreter.cpp is excluded by !src/consensus/** and included by none
  • src/database/CMakeLists.txt is excluded by !src/database/**, !**/CMakeLists.txt and included by none
  • src/database/conanfile.py is excluded by !src/database/**, !**/conanfile.py and included by none
  • src/database/include/kth/database/block_store.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/block_undo.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/data_base.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/block_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/header_abla_entry.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/header_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/history_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/internal_database.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/internal_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/property_code.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/databases/reorg_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/spend_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/transaction_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/transaction_unconfirmed_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/utxo_database.ipp is excluded by !src/database/**, !**/*.ipp and included by none
  • src/database/include/kth/database/databases/utxoz_database.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/flat_file_pos.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/flat_file_seq.hpp is excluded by !src/database/** and included by none
  • src/database/include/kth/database/header_index.hpp is excluded by !src/database/** and included by none
  • src/database/src/block_store.cpp is excluded by !src/database/** and included by none
  • src/database/src/block_undo.cpp is excluded by !src/database/** and included by none
  • src/database/src/data_base.cpp is excluded by !src/database/** and included by none
  • src/database/src/databases/header_abla_entry.cpp is excluded by !src/database/** and included by none
  • src/database/src/databases/utxoz_database.cpp is excluded by !src/database/** and included by none
  • src/database/src/flat_file_seq.cpp is excluded by !src/database/** and included by none
  • src/database/src/header_index.cpp is excluded by !src/database/** and included by none
  • src/database/src/settings.cpp is excluded by !src/database/** and included by none
  • src/database/test/data_base.cpp is excluded by !src/database/**, !**/test/** and included by none
  • src/database/tools/utxoz_fingerprint/utxoz_fingerprint.cpp is excluded by !src/database/**, !**/tools/** and included by none
  • src/domain/CMakeLists.txt is excluded by !src/domain/**, !**/CMakeLists.txt and included by none
  • src/domain/bench/hash/benchmarks.cpp is excluded by !src/domain/** and included by none
  • src/domain/bench/merkle/benchmarks.cpp is excluded by !src/domain/** and included by none
  • src/domain/conanfile.py is excluded by !src/domain/**, !**/conanfile.py and included by none
  • src/domain/include/kth/domain/chain/block.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/block_basis.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/header.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/header_basis.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/chain/light_block.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/config/parser.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/constants/common.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/addrv2.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/messages.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/send_addrv2.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/message/version.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/multi_crypto_support.hpp is excluded by !src/domain/** and included by none
  • src/domain/include/kth/domain/version.hpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/block.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/block_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/header.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/header_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/light_block.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/chain/output_basis.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/message/addrv2.cpp is excluded by !src/domain/** and included by none
  • src/domain/src/message/send_addrv2.cpp is excluded by !src/domain/** and included by none
  • src/domain/test/chain/light_block.cpp is excluded by !src/domain/**, !**/test/** and included by none
  • src/domain/test/message/addrv2_bchn_comparison.cpp is excluded by !src/domain/**, !**/test/** and included by none
  • src/infrastructure/CMakeLists.txt is excluded by !**/CMakeLists.txt and included by src/infrastructure/**
  • src/infrastructure/conanfile.py is excluded by !**/conanfile.py and included by src/infrastructure/**
  • src/infrastructure/include/kth/infrastructure/impl/utility/resubscriber.ipp is excluded by !**/*.ipp and included by src/infrastructure/**
  • src/infrastructure/include/kth/infrastructure/impl/utility/subscriber.ipp is excluded by !**/*.ipp and included by src/infrastructure/**
  • src/infrastructure/test/task_group.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/async_channel.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/awaitable_helpers.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/coroutine_smoke_test.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/infrastructure/test/utility/threadpool.cpp is excluded by !**/test/** and included by src/infrastructure/**
  • src/network/CMakeLists.txt is excluded by !src/network/**, !**/CMakeLists.txt and included by none
  • src/network/conanfile.py is excluded by !src/network/**, !**/conanfile.py and included by none
  • src/network/include/kth/network.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/acceptor.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/banlist.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/channel.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/connector.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/handlers/ping.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/handlers/pong.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/hosts.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/message_subscriber.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/net_permissions.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/normalized_address.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/p2p.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/p2p_node.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_database.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_manager.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_record.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/peer_session.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_address_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_events.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_ping_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_ping_60001.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_reject_70002.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_seed_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_timer.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_version_31402.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols/protocol_version_70002.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/protocols_coro.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/proxy.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_batch.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_inbound.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_manual.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_outbound.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/sessions/session_seed.hpp is excluded by !src/network/** and included by none
  • src/network/include/kth/network/settings.hpp is excluded by !src/network/** and included by none
  • src/network/src/acceptor.cpp is excluded by !src/network/** and included by none
  • src/network/src/banlist.cpp is excluded by !src/network/** and included by none
  • src/network/src/channel.cpp is excluded by !src/network/** and included by none
  • src/network/src/connector.cpp is excluded by !src/network/** and included by none
  • src/network/src/handlers/ping.cpp is excluded by !src/network/** and included by none
  • src/network/src/handlers/pong.cpp is excluded by !src/network/** and included by none
  • src/network/src/hosts.cpp is excluded by !src/network/** and included by none
  • src/network/src/message_subscriber.cpp is excluded by !src/network/** and included by none
  • src/network/src/net_permissions.cpp is excluded by !src/network/** and included by none
  • src/network/src/p2p.cpp is excluded by !src/network/** and included by none
  • src/network/src/p2p_node.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_database.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_manager.cpp is excluded by !src/network/** and included by none
  • src/network/src/peer_session.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_address_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_events.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_ping_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_ping_60001.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_reject_70002.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_seed_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_timer.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_version_31402.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols/protocol_version_70002.cpp is excluded by !src/network/** and included by none
  • src/network/src/protocols_coro.cpp is excluded by !src/network/** and included by none
  • src/network/src/proxy.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_batch.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_inbound.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_manual.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_outbound.cpp is excluded by !src/network/** and included by none
  • src/network/src/sessions/session_seed.cpp is excluded by !src/network/** and included by none
  • src/network/src/settings.cpp is excluded by !src/network/** and included by none
  • src/network/test/p2p_node.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_database.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_manager.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/peer_session.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/protocols_coro.cpp is excluded by !src/network/**, !**/test/** and included by none
  • src/network/test/test_helpers.hpp is excluded by !src/network/**, !**/test/** and included by none
  • src/node-exe/CMakeLists.txt is excluded by !src/node-exe/**, !**/CMakeLists.txt and included by none
  • src/node-exe/conanfile.py is excluded by !src/node-exe/**, !**/conanfile.py and included by none
  • src/node-exe/src/main.cpp is excluded by !src/node-exe/** and included by none
  • src/node-exe/src/tui_dashboard.cpp is excluded by !src/node-exe/** and included by none
  • src/node-exe/src/tui_dashboard.hpp is excluded by !src/node-exe/** and included by none
  • src/node/CMakeLists.txt is excluded by !src/node/**, !**/CMakeLists.txt and included by none
  • src/node/conanfile.py is excluded by !src/node/**, !**/conanfile.py and included by none
  • src/node/data/bn.cfg is excluded by !src/node/** and included by none
  • src/node/include/kth/node.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/executor/executor.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/full_node.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_block_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_double_spend_proof_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_double_spend_proof_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_header_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_transaction_in.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/protocols/protocol_transaction_out.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_block_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_header_sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_inbound.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_manual.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sessions/session_outbound.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/settings.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/block_tasks.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/chunk_coordinator.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/header_tasks.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/messages.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/sync/orchestrator.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/user_agent.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/utility/reservation.hpp is excluded by !src/node/** and included by none
  • src/node/include/kth/node/utility/reservations.hpp is excluded by !src/node/** and included by none
  • src/node/src/executor/executor.cpp is excluded by !src/node/** and included by none
  • src/node/src/full_node.cpp is excluded by !src/node/** and included by none
  • src/node/src/parser.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_block_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_double_spend_proof_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_double_spend_proof_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_header_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_transaction_in.cpp is excluded by !src/node/** and included by none
  • src/node/src/protocols/protocol_transaction_out.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_block_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_header_sync.cpp is excluded by !src/node/** and included by none
  • src/node/src/sessions/session_inbound.cpp is excluded by !src/node/** and included by none
📒 Files selected for processing (45)
  • src/infrastructure/include/kth/infrastructure.hpp
  • src/infrastructure/include/kth/infrastructure/compiler_constraints.hpp
  • src/infrastructure/include/kth/infrastructure/config/authority.hpp
  • src/infrastructure/include/kth/infrastructure/config/endpoint.hpp
  • src/infrastructure/include/kth/infrastructure/display_mode.hpp
  • src/infrastructure/include/kth/infrastructure/error.hpp
  • src/infrastructure/include/kth/infrastructure/handlers.hpp
  • src/infrastructure/include/kth/infrastructure/log/statsd_sink.hpp
  • src/infrastructure/include/kth/infrastructure/math/hash.hpp
  • src/infrastructure/include/kth/infrastructure/message/network_address.hpp
  • src/infrastructure/include/kth/infrastructure/utility/asio_helper.hpp
  • src/infrastructure/include/kth/infrastructure/utility/async_channel.hpp
  • src/infrastructure/include/kth/infrastructure/utility/awaitable_helpers.hpp
  • src/infrastructure/include/kth/infrastructure/utility/broadcaster.hpp
  • src/infrastructure/include/kth/infrastructure/utility/byte_reader.hpp
  • src/infrastructure/include/kth/infrastructure/utility/coroutine_config.hpp
  • src/infrastructure/include/kth/infrastructure/utility/cpu_executor.hpp
  • src/infrastructure/include/kth/infrastructure/utility/deadline.hpp
  • src/infrastructure/include/kth/infrastructure/utility/delegates.hpp
  • src/infrastructure/include/kth/infrastructure/utility/dispatcher.hpp
  • src/infrastructure/include/kth/infrastructure/utility/resubscriber.hpp
  • src/infrastructure/include/kth/infrastructure/utility/salted_hashers.hpp
  • src/infrastructure/include/kth/infrastructure/utility/sequencer.hpp
  • src/infrastructure/include/kth/infrastructure/utility/stats.hpp
  • src/infrastructure/include/kth/infrastructure/utility/subscriber.hpp
  • src/infrastructure/include/kth/infrastructure/utility/synchronizer.hpp
  • src/infrastructure/include/kth/infrastructure/utility/system_memory.hpp
  • src/infrastructure/include/kth/infrastructure/utility/task_group.hpp
  • src/infrastructure/include/kth/infrastructure/utility/threadpool.hpp
  • src/infrastructure/include/kth/infrastructure/utility/units.hpp
  • src/infrastructure/include/kth/infrastructure/utility/work.hpp
  • src/infrastructure/src/config/endpoint.cpp
  • src/infrastructure/src/log/sink.cpp
  • src/infrastructure/src/log/statsd_sink.cpp
  • src/infrastructure/src/message/network_address.cpp
  • src/infrastructure/src/utility/deadline.cpp
  • src/infrastructure/src/utility/dispatcher.cpp
  • src/infrastructure/src/utility/sequencer.cpp
  • src/infrastructure/src/utility/socket.cpp
  • src/infrastructure/src/utility/stats.cpp
  • src/infrastructure/src/utility/system_memory.cpp
  • src/infrastructure/src/utility/threadpool.cpp
  • src/infrastructure/src/utility/work.cpp
  • src/infrastructure/third-party/bitcoin-core/crypto/sha256.cpp
  • src/infrastructure/third-party/bitcoin-core/crypto/sha256.h
💤 Files with no reviewable changes (2)
  • src/infrastructure/include/kth/infrastructure/log/statsd_sink.hpp
  • src/infrastructure/include/kth/infrastructure/config/endpoint.hpp
✅ Files skipped from review due to trivial changes (1)
  • src/infrastructure/include/kth/infrastructure/error.hpp
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/infrastructure/include/kth/infrastructure/message/network_address.hpp
  • src/infrastructure/include/kth/infrastructure/math/hash.hpp
  • src/infrastructure/include/kth/infrastructure/config/authority.hpp

@fpelliccioni fpelliccioni force-pushed the version1 branch 2 times, most recently from 11d473c to 3ce6bda Compare March 21, 2026 08:49
Complete rewrite of the Knuth node networking and sync layers using
C++23 coroutines, replacing the legacy callback-based architecture.

- Coroutine migration (Phases 0-7): asio thread_pool, peer_session,
  peer_manager, protocol functions, p2p_node, legacy removal
- CSP-based sync: orchestrator, chunk_coordinator, parallel download
- Fast IBD: merkle-only validation, parallel storage, zero-copy UTXO builder
- Flat file block storage (blk*.dat/rev*.dat) replacing LMDB for blocks
- UTXO-Z integration with bloom filter optimization (2x speedup)
- BIP155 addrv2, peer_database with reputation tracking
- header_index: SoA in-memory index with skip-pointer traversal
Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 3 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

map.bits.count, map.bits.high,
map.timestamp.count, map.timestamp_retarget, configured_flags_,
parent_idx, index.get_height(parent_idx));
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Debug logging for height 32256 left in production

Low Severity

Two spdlog::warn blocks guarded by if (height == 32256) with "DEBUG" in the message are left in build_chain_state_data and accept_full. These are clearly temporary debugging statements for a specific block height that were not removed before committing. They emit warn-level log noise during normal sync for every node that processes that height.

Additional Locations (1)
Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant