From 79928c67ae59ca1974c15976097fc8201bfec974 Mon Sep 17 00:00:00 2001 From: bch-embedded-steward Date: Tue, 2 Jun 2026 15:51:25 +0400 Subject: [PATCH] bch: bootstrap src/impl/bch skeleton (M2) Mirror src/impl/btc layout. Stub coin/ + daemon/ + test/ slices. - config_coin.hpp: CashAddr scaffolding, HogEx out-of-scope note - coin/header_chain.hpp: ASERT insertion point (BCH-specific slice 1/2) - coin/template_builder.hpp: CTOR insertion point (slice 2/2), CashTokens note - CMakeLists: -DCOIN_BCH=ON gate (per-coin binary scheme) Per impl plan c2pool-bch-embedded-impl-plan.md v36. --- src/impl/bch/CMakeLists.txt | 12 ++++++++++++ src/impl/bch/coin/header_chain.hpp | 8 ++++++++ src/impl/bch/coin/template_builder.hpp | 13 +++++++++++++ src/impl/bch/config_coin.hpp | 23 +++++++++++++++++++++++ src/impl/bch/daemon/README.txt | 5 +++++ src/impl/bch/test/README.txt | 3 +++ 6 files changed, 64 insertions(+) create mode 100644 src/impl/bch/CMakeLists.txt create mode 100644 src/impl/bch/coin/header_chain.hpp create mode 100644 src/impl/bch/coin/template_builder.hpp create mode 100644 src/impl/bch/config_coin.hpp create mode 100644 src/impl/bch/daemon/README.txt create mode 100644 src/impl/bch/test/README.txt diff --git a/src/impl/bch/CMakeLists.txt b/src/impl/bch/CMakeLists.txt new file mode 100644 index 000000000..419cf12b8 --- /dev/null +++ b/src/impl/bch/CMakeLists.txt @@ -0,0 +1,12 @@ +# c2pool-bch coin module (V36). Built when -DCOIN_BCH=ON. +# Mirrors src/impl/btc/CMakeLists.txt; emits the c2pool-bch binary. +# Per-coin binary scheme: project_v36_per_coin_binary_v37_unified_process. +# +# TODO(M3): add_library(impl_bch ...) sources, link bitcoin_family shared base, +# wire embedded BCHN daemon slice under daemon/. Stub only at M2. +if(COIN_BCH) + message(STATUS "c2pool: BCH coin module enabled (skeleton)") + # add_subdirectory(coin) + # add_subdirectory(daemon) + # add_subdirectory(test) +endif() diff --git a/src/impl/bch/coin/header_chain.hpp b/src/impl/bch/coin/header_chain.hpp new file mode 100644 index 000000000..12f0b06c7 --- /dev/null +++ b/src/impl/bch/coin/header_chain.hpp @@ -0,0 +1,8 @@ +#pragma once +// BCH header-chain validation. Mirrors src/impl/btc/coin/header_chain.hpp. +// +// >>> ASERT INSERTION POINT (M1 §4.3) <<< +// BCH uses ASERT (aserti3-2d) difficulty adjustment since the Nov 2020 +// upgrade, NOT BTC retarget. Net-new c2pool code (one of two BCH-specific +// validation slices). TODO(M3): port aserti3-2d target calc + anchor block. +namespace c2pool::bch { /* TODO(M3): HeaderChain w/ ASERT validate_target() */ } diff --git a/src/impl/bch/coin/template_builder.hpp b/src/impl/bch/coin/template_builder.hpp new file mode 100644 index 000000000..fad8b75f6 --- /dev/null +++ b/src/impl/bch/coin/template_builder.hpp @@ -0,0 +1,13 @@ +#pragma once +// BCH block-template builder. Mirrors src/impl/btc/coin/template_builder.hpp. +// Must emit p2pool-merged-v36-compatible templates (V36 master compat). +// +// >>> CTOR INSERTION POINT (M1 §4.3) <<< +// BCH requires CTOR: canonical (lexicographic txid) ordering of mempool txs +// in the block body, coinbase first. Net-new c2pool code (second BCH slice). +// TODO(M3): CTOR re-sort pass over selected txs before template assembly. +// +// CashTokens (May 2023) awareness: token-bearing outputs must round-trip +// intact through template assembly. TODO(M3): preserve token prefix bytes. +// HogEx: NOT applicable (see config_coin.hpp scope note). +namespace c2pool::bch { /* TODO(M3): TemplateBuilder w/ CTOR re-sort */ } diff --git a/src/impl/bch/config_coin.hpp b/src/impl/bch/config_coin.hpp new file mode 100644 index 000000000..972aeabfa --- /dev/null +++ b/src/impl/bch/config_coin.hpp @@ -0,0 +1,23 @@ +#pragma once +// c2pool-bch :: BCH coin parameters (V36) +// Skeleton per c2pool-bch-embedded-impl-plan.md (frstrtr/the docs/v36) §3. +// Embedded daemon forked from Bitcoin Cash Node (BCHN). SHA256d family. +// +// SCOPE NOTE (M1 §4.2): HogEx is a SmartBCH sidechain construct, NOT BCH +// mainchain. It is explicitly OUT OF SCOPE for this template/coin module. +// Do not add HogEx commitment handling here. See feedback: hogex-not-bch. +// +// CashAddr scaffolding: BCH address encoding diverges from BTC base58/bech32. +// TODO(M3): port CashAddr (prefix "bitcoincash:") encode/decode at vendoring. + +namespace c2pool::bch { + +struct CoinParams { + // TODO(M3): fill from BCHN chainparams at vendoring (confirm commit/tag). + static constexpr const char* ticker = "BCH"; + static constexpr const char* cashaddr_hrp = "bitcoincash"; + // ASERT DAA (May 2020) anchor — see coin/header_chain.hpp insertion point. + // CTOR (Nov 2018) canonical tx ordering — see coin/template_builder.hpp. +}; + +} // namespace c2pool::bch diff --git a/src/impl/bch/daemon/README.txt b/src/impl/bch/daemon/README.txt new file mode 100644 index 000000000..2df0cba8d --- /dev/null +++ b/src/impl/bch/daemon/README.txt @@ -0,0 +1,5 @@ +Embedded BCHN daemon slice (M3). Forked from Bitcoin Cash Node, lowest +divergence from Bitcoin Core (same root as c2pool-btc embedded daemon). +Vendoring policy: NO in-tree vendor of BCHN; reference clone built siblingly, +artifacts into worktree only (M1 §1.1). Scope: SPV + P2P + mempool + template +builder. Confirm BCHN commit/tag at vendoring. Stub placeholder at M2. diff --git a/src/impl/bch/test/README.txt b/src/impl/bch/test/README.txt new file mode 100644 index 000000000..77b82eba0 --- /dev/null +++ b/src/impl/bch/test/README.txt @@ -0,0 +1,3 @@ +BCH module tests (M3). Mirror src/impl/btc/test: template_parity_test (vs +p2pool-merged-v36 reference fixtures), share_test. Adds: ASERT vector test, +CTOR ordering test, CashAddr round-trip. Stub placeholder at M2.