Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
223 commits
Select commit Hold shift + click to select a range
64fe608
Add CoinParams abstraction layer for multi-coin PoW support
frstrtr Apr 16, 2026
840ab53
Parameterize share_check.hpp: all PoolConfig:: → CoinParams on master
frstrtr Apr 16, 2026
a94435e
Parameterize share_tracker + node + c2pool_refactored: PoolConfig → C…
frstrtr Apr 16, 2026
587b4bb
M2: Create bitcoin_family/ with base block headers + generic utilities
frstrtr Apr 16, 2026
bf0fd22
M2: Extract generic tx primitives to bitcoin_family/coin/base_transac…
frstrtr Apr 16, 2026
81d0e5e
M2: Extract base P2P messages + chain params to bitcoin_family
frstrtr Apr 16, 2026
39e7df4
Add ref/ symlinks: p2pool-dash, dashcore, p2pool-ltc for M3 development
frstrtr Apr 16, 2026
2019d6f
M3: Add Dash X11 crypto library + CoinParams
frstrtr Apr 16, 2026
c9777b8
M3: Add Dash share v16 types + block/transaction structures
frstrtr Apr 16, 2026
00bd680
M3: Add Dash share verification, config, P2P messages, peer
frstrtr Apr 16, 2026
a6a98ea
M3: c2pool-dash binary — connects to live Dash p2pool network
frstrtr Apr 16, 2026
a71ff0f
M3: Fix donation script + add v16 PPLNS generate_share_transaction
frstrtr Apr 16, 2026
be503cb
M3 VALIDATED: Full P2P share exchange with live Dash p2pool network
frstrtr Apr 16, 2026
53cf0fe
Parameterize HeaderChain: scrypt → injectable pow_func via ChainParams
frstrtr Apr 16, 2026
c84abae
Parameterize get_block_subsidy: use ChainParams halving_interval
frstrtr Apr 16, 2026
d426fca
M3: Add full Dash node infrastructure (ShareChain + ShareTracker + Da…
frstrtr Apr 16, 2026
0960c1c
Debug: add prefix verification + io::post connect for Socket investig…
frstrtr Apr 16, 2026
447df86
Debug: Local p2pool-dash test setup + Socket read investigation
frstrtr Apr 16, 2026
6d02985
Fix DashNodeImpl: string compare + timeout restart — LIVE SHARES RECE…
frstrtr Apr 16, 2026
05f918f
M3: Live v16 share verification — X11 PoW validated from Dash p2pool …
frstrtr Apr 16, 2026
931aeb4
M3: Add sharereq/sharereply chain download to DashNodeImpl
frstrtr Apr 17, 2026
2b8c760
Fix Dash share hash: use X11 (not SHA256d) for block identity
frstrtr Apr 17, 2026
40031d4
Implement masternode "!" prefix script decoding for Dash v16 shares
frstrtr Apr 17, 2026
47d339b
Add Dash to dashboard: Blockchain enum, currency_info, address validator
frstrtr Apr 17, 2026
552198c
Dashboard: Dash block value split (miner vs masternode/governance)
frstrtr Apr 17, 2026
e605203
Dashboard: match p2pool-dash block value display format
frstrtr Apr 17, 2026
cc89805
M3.9: Add Dash embedded SPV node — dashd P2P layer
frstrtr Apr 17, 2026
95de93d
M3.9: Add Dash HeaderChain — SPV header sync with X11 + DarkGravityWa…
frstrtr Apr 17, 2026
d147c4b
M3.9: Wire dashd P2P + HeaderChain into main_dash.cpp
frstrtr Apr 17, 2026
ef791b8
M3.9: Fix dashd P2P prefix + wire header sync
frstrtr Apr 17, 2026
fec16ac
M3.9: Header sync working — 894K headers in 30s from dashd
frstrtr Apr 17, 2026
b74b8a6
M3.9: Enable DGW difficulty validation — verified against live Dash c…
frstrtr Apr 17, 2026
67cb6fb
M3.9: Reduce unhandled dashd message log to trace level
frstrtr Apr 17, 2026
e8f151a
M6: Decouple EnhancedC2PoolNode — template over Config/ShareChain/Pee…
frstrtr Apr 17, 2026
4242d42
M6: Dashd JSON-RPC client — GBT + payment parsing verified on live ma…
frstrtr Apr 17, 2026
2b7ba13
M6 Phase 3: Minimal Dash stratum gateway — protocol plumbing only
frstrtr Apr 17, 2026
299781f
M6 Phase 4a+4b: Dash coinbase assembly + stratum job push
frstrtr Apr 17, 2026
9358ff7
M6 Phase 4c+4d: submit validation + block submission on win
frstrtr Apr 17, 2026
ef27534
M6 Phase 5a+5b: PPLNS coinbase split across sharechain contributors
frstrtr Apr 17, 2026
2117452
M6 Phase 5c+5d: create + broadcast v16 shares from miner submits
frstrtr Apr 17, 2026
2db8a07
M6 Phase 5d: fix contents['coinbase_payload'] wire format for peer pa…
frstrtr Apr 17, 2026
169a480
M6 Phase 5d COMPLETE: port generate_transaction — peer accepts our sh…
frstrtr Apr 17, 2026
d56146c
M6 Phase 5d++: port WeightsSkipList — chain-of-3+ shares accepted
frstrtr Apr 17, 2026
8b77953
M6 Phase 5e: remember_tx end-to-end — tx-aware shares accepted by peer
frstrtr Apr 17, 2026
10e7ecf
Merge branch 'master' into multipow-v2-dash
frstrtr Apr 17, 2026
e9a3b2b
M6 Phase 6: wire EnhancedNode for Dash — hashrate + vardiff engine ac…
frstrtr Apr 17, 2026
4331403
M6 Phase 7: wire core::WebServer dashboard for c2pool-dash
frstrtr Apr 17, 2026
ad44861
M6 Phase 7+: dashboard bypass for coin-driven work pipelines
frstrtr Apr 18, 2026
03ec396
M6 Phase 7++: expose real peer + share counts to IMiningNode
frstrtr Apr 18, 2026
ba9346a
M6 Phase 7+++: dashboard de-LTC-ify for Dash — peers, protocol, banners
frstrtr Apr 18, 2026
842065c
M6 Phase 7++++: populate peer list, pool hashrate, ports for Dash das…
frstrtr Apr 18, 2026
f8fd308
M6 Phase 7+++++: sharechain window + PPLNS distribution for Dash dash…
frstrtr Apr 18, 2026
afa16af
M6: fix compute_dash_payouts sum mismatch on mainnet difficulty
frstrtr Apr 18, 2026
bd97b2a
M6 Phase 7++++++: peer expansion for Dash — randomized dials + 10m co…
frstrtr Apr 18, 2026
0654d5e
M6 Phase 7+++++++: Dash dashboard PPLNS populated + fan-out bootstrap…
frstrtr Apr 18, 2026
dce29ef
M6 Phase 7++++++++: mark Dash shares verified + DASH labels on dashboard
frstrtr Apr 18, 2026
6efdb79
M6 Phase 7+++++++++: invalidate Dash sharechain window cache on new s…
frstrtr Apr 18, 2026
2960c6b
M6 Phase 7++++++++++: include pplns_current in Dash sharechain/window
frstrtr Apr 18, 2026
1ff3edd
M6 Phase 7+++++++++++: per-share PPLNS precompute for Dash explorer
frstrtr Apr 18, 2026
4766061
M6 Phase 8: Dash tracker shared_mutex — P0 data race fix
frstrtr Apr 18, 2026
b4d8ee7
M6 Phase 8+: gate Dash dashboard cache invalidation on tip change (P3b)
frstrtr Apr 18, 2026
0c33de9
M6 Phase 9: six parity fixes — batch 1
frstrtr Apr 18, 2026
a7b3749
M6 Phase 9+: dashd P2P block broadcast + real subver (batch 2)
frstrtr Apr 18, 2026
123bf58
M6 Phase 10: Dash sharechain tail-drop pruning (B2)
frstrtr Apr 18, 2026
8dd3fb5
M6 Phase 11: Dash sharechain LevelDB persistence (B1)
frstrtr Apr 18, 2026
fd531eb
M6 Phase 12: batch 3 parity — B4 + B5 + SPV C5 + D3
frstrtr Apr 18, 2026
e1af543
M6 Phase 13: Dash peer ban list (B3)
frstrtr Apr 18, 2026
041bea1
M6 Phase 14: wire Dash block-find to MiningInterface recorder (C1)
frstrtr Apr 18, 2026
08eb53d
M6 Phase 15: Dash graph_db stat-log persistence (C2)
frstrtr Apr 18, 2026
2052d65
M6 Phase 16: Dash ChainLock support (SPV A1)
frstrtr Apr 18, 2026
1fe861b
M6 Phase 17: Dash C3 + SPV C1 (CLI knobs + dashd sync-progress)
frstrtr Apr 18, 2026
5425bbf
M6 Phase 18: chain-aware address encoding in stat-log collector (C2 f…
frstrtr Apr 18, 2026
8ae7d82
M6 Phase 19: Dash SPV B1 — reply to getaddr with empty addr
frstrtr Apr 18, 2026
c22b11c
Dash: revert mainnet max_target to p2pool-dash parity (0xFFFF * 2^208)
frstrtr Apr 18, 2026
6e4b7d0
Dash: per-session vardiff ported from p2pool-dash (authoritative ref)
frstrtr Apr 18, 2026
a84f1b9
Dash A5: handle inbound message_remember_tx / message_forget_tx
frstrtr Apr 18, 2026
3277874
Dash SPV B2 + B3: sendheaders flag + inv dedup ring
frstrtr Apr 18, 2026
44d79e8
Dash SPV: fast-start checkpoint + --dash-header-checkpoint CLI flag
frstrtr Apr 18, 2026
f5e3def
Dash PPLNS: remove stale TODO + surface walk diagnostics
frstrtr Apr 18, 2026
e01f2ca
Dash: populate peer_addr on shares during load (matches LTC)
frstrtr Apr 18, 2026
32edaf6
Dash D4: sharechain_tip_fn returns short hash, matching LTC + cache keys
frstrtr Apr 18, 2026
55f66ed
Dash D1+D2: lock-free TrackerSnapshot for HTTP stats callbacks
frstrtr Apr 18, 2026
9208c26
Dash: fix SIGSEGV in save_stat_log 100s timer (shared_ptr self-owned …
frstrtr Apr 18, 2026
5a37cec
Dash: fix peer expansion — target=10 + multi-dial per tick + port filter
frstrtr Apr 18, 2026
fd72f68
Dash: wire dashd SPV peer to dashboard 'Parent Chain Peers' panel
frstrtr Apr 18, 2026
f61eb6c
Dash: multi-peer broadcaster pool (Phase 1: getpeerinfo discovery)
frstrtr Apr 18, 2026
1b86f1b
Dash: Phase 2 — full CoinBroadcaster + CoinPeerManager port
frstrtr Apr 18, 2026
a5284e0
Dash: wire Explorer nav-link via --explorer / --explorer-url
frstrtr Apr 18, 2026
7130751
Dash: show donation address on /current_payouts
frstrtr Apr 18, 2026
53a4d08
Dash: label OP_RETURN platform payment on /current_payouts
frstrtr Apr 18, 2026
5ba3ffe
Dash: /current_payouts shows only mineable coinbase outputs
frstrtr Apr 18, 2026
98a3b7a
Dash: wire /sharechain/stream SSE + per-share PPLNS refresh
frstrtr Apr 18, 2026
7b93768
Dash: fix PPLNS donation missing + reconcile grey unverified shares
frstrtr Apr 18, 2026
55f320e
Dash: wire /web/share/<hash> for individual share pages
frstrtr Apr 18, 2026
be03f7f
Dash: PPLNS donation parity — weight-split + always-emit + default 1%
frstrtr Apr 18, 2026
3ecad6c
dashboard: floor PPLNS treemap cells at 1.5% so tiny donation is visible
frstrtr Apr 18, 2026
35a123f
Dash: wire /sharechain/delta for RealTime incremental updates
frstrtr Apr 18, 2026
2aed431
Dash: /sharechain/tip uses max-height head to match window/delta
frstrtr Apr 18, 2026
e8bd02b
Dash: best_share_hash picks highest-abswork head, not map order
frstrtr Apr 18, 2026
e6ac064
Dash: fix sharechain visual — 4320 window depth + v16 color + legend
frstrtr Apr 18, 2026
729ca5b
Dash: best head now tracks live tip (absheight > work > depth)
frstrtr Apr 18, 2026
f24f79b
Dash: periodic ancestor backfill so dashboard window fills to 4320
frstrtr Apr 18, 2026
e37876e
dashboard: Dash legend hides DOGE/Twin block + LTC→DASH block label
frstrtr Apr 18, 2026
5843002
dashboard: eviction animation fires + no black holes during birth
frstrtr Apr 18, 2026
01836bc
Dash: stable best-head picker (depth + timestamp) — matches LTC
frstrtr Apr 18, 2026
33b2a9b
Dash stratum: send merkle branches as LE-byte-order hex, not reversed
frstrtr Apr 20, 2026
0228357
Dash share target: clamp bits to MAX_TARGET, split pseudoshare from r…
frstrtr Apr 20, 2026
8ee1907
Instrument ShareChain::remove + clean_tracker drop-loops
frstrtr Apr 21, 2026
0f6bf90
Stream stat-log dump entry-by-entry instead of building giant in-memo…
frstrtr Apr 20, 2026
891cbb3
sharechain_stats_fn: cache last full result for busy-path fallback
frstrtr Apr 21, 2026
991b59b
web_server: .mjs MIME + share_version in currency_info
frstrtr Apr 22, 2026
fbf4816
sharechain-explorer: Dash coin descriptor + §5 endpoint audit
frstrtr Apr 22, 2026
d36475a
Dash: /sharechain/* §5 conformance — add heads/blocks/doge_blocks/tot…
frstrtr Apr 22, 2026
ded056c
Dash: DNS seeds + chain_seeds.hpp — Phase S1
frstrtr Apr 22, 2026
6103af4
Dash: BIP 155 addrv2 handler — Phase S1
frstrtr Apr 22, 2026
18104e2
Dash: BIP 152 compact blocks — Phase S2 stage 1
frstrtr Apr 22, 2026
3136e00
Dash: BIP 152 stage 2 — cmpctblock reassembly + inv/headers upgrade
frstrtr Apr 22, 2026
79f71a7
Dash: UTXO adapter layer — Phase U step 1
frstrtr Apr 22, 2026
145a589
Dash: UTXO connect_block on full-block arrival + BIP 152 cmpct gating…
frstrtr Apr 22, 2026
7c17cef
Dash: UTXO LevelDB persistence + per-block flush — Phase U step 3
frstrtr Apr 22, 2026
96dfe51
Dash: per-block height lookup for UTXO connect_block — Phase U polish
frstrtr Apr 22, 2026
6977c59
LTC: document the btclibs/pack.hpp include-order invariant in mweb_bu…
frstrtr Apr 22, 2026
5a89fed
Dash: rolling-288 UTXO bootstrap pipeline + revert cmpct tip-fetch — …
frstrtr Apr 22, 2026
c68b44a
Dash: tip-changed handler — reorg disconnect_block + header-sync nudg…
frstrtr Apr 23, 2026
a5c0a75
Dash: vendor CCbTx parser + RawBytesFormat helper — Phase C-SML step 1
frstrtr Apr 23, 2026
dd0d9ea
Dash: vendor CSimplifiedMNListEntry + merkle root — Phase C-SML step 2
frstrtr Apr 23, 2026
dd75af2
Dash: vendor CSimplifiedMNListDiff + apply_diff — Phase C-SML step 3
frstrtr Apr 23, 2026
51e33af
Dash: getmnlistd + mnlistdiff p2p messages + broadcaster wiring — Pha…
frstrtr Apr 23, 2026
346cd5e
Dash: SMLDb LevelDB persistence — Phase C-SML step 5
frstrtr Apr 23, 2026
2e6b03f
Dash: SML sync timer + apply_diff + CBTX root verify — Phase C-SML st…
frstrtr Apr 23, 2026
4015529
Dash: vendor CFinalCommitment + DYNBITSET + fail-safe quorum tail par…
frstrtr Apr 23, 2026
96f10a3
Dash: QuorumManager + main_dash wiring — Phase C-QUO step 2
frstrtr Apr 23, 2026
c5e2109
Dash: vendor dashbls + autotools-driven CMake integration — Phase L s…
frstrtr Apr 23, 2026
bd6070e
Dash: BLS verifier wrapper + startup self-test — Phase L step 1
frstrtr Apr 23, 2026
94d6649
Dash: ChainLock verify recipe (request_id + selection + sign_hash + B…
frstrtr Apr 23, 2026
cc06781
Dash: wire ChainLock verification into clsig handler — Phase L step 3
frstrtr Apr 23, 2026
0d5ae86
Dash: ChainLock-aware reorg gating — Phase L step 4
frstrtr Apr 23, 2026
3235540
Dash: SML sync timer chained-self-reference crash fix — Phase L hotfix
frstrtr Apr 24, 2026
3629cc7
Dash: uint256 sort-order memcmp fix (Bug A+B) + diff.cbTx self-aligne…
frstrtr Apr 24, 2026
90f44cc
Dash: QuorumManager LevelDB persistence — Phase L un-MVP step 1
frstrtr Apr 24, 2026
7660cd7
Dash: iteration-2a hardening — verify-gate chainlocked_blocks + SML r…
frstrtr Apr 24, 2026
a00c965
Dash: SML+QuorumDb reorg drop-and-refetch wiring — Tier 1.3 un-MVP
frstrtr Apr 24, 2026
55c2f46
Dash: iteration-2b — broadcaster::disconnect_peer + ban on bad data
frstrtr Apr 24, 2026
5b39738
Dash: dashboard SPV panel — surface SML/QuorumManager/ChainLock state…
frstrtr Apr 24, 2026
7607f59
Dash: vendor ProRegTx/ProUpServTx/ProUpRegTx/ProUpRevTx parsers — Pha…
frstrtr Apr 24, 2026
b71a88e
Dash: MnStateDb persistent per-MN state store — Phase C-PAY step 2 (f…
frstrtr Apr 24, 2026
43815ed
Dash: DMN snapshot loader (Path C bootstrap) — Phase C-PAY step 3a
frstrtr Apr 24, 2026
ca9b13b
Dash: --dump-mn-snapshot RPC dumper (Path C 3b1) — Phase C-PAY step 3b1
frstrtr Apr 24, 2026
4fca880
Dash: RPC bootstrap fallback (Path C 3b2) — Phase C-PAY step 3b2
frstrtr Apr 24, 2026
1f09f3d
Dash: per-block DMN state machine — Phase C-PAY step 4
frstrtr Apr 24, 2026
74bcebb
Dash: GetMNPayee projection + log-only [PAY] verify — Phase C-PAY step 5
frstrtr Apr 24, 2026
e654243
Dash: in-memory mempool + new_tx subscriber + confirm-eviction — Phas…
frstrtr Apr 24, 2026
d57ed8e
Dash: feerate-sorted mempool index + recompute_unknown_fees — Phase C…
frstrtr Apr 24, 2026
d8e0465
Dash: subsidy formula + log-only [SUBSIDY] shadow validation — Phase …
frstrtr Apr 24, 2026
5906bb3
Dash: subsidy×fees cross-check shadow + computed_block_fees — Phase C…
frstrtr Apr 24, 2026
4479df8
Dash: replace [SUBSIDY] implied-fees with real computed_fees → [MN-PA…
frstrtr Apr 24, 2026
41eab60
Dash: vendor CFinalCommitmentTxPayload + qfcommit on_full_block scann…
frstrtr Apr 24, 2026
c6b2dcc
Dash: QuorumManager.Entry.mining_height + scanner-driven population —…
frstrtr Apr 24, 2026
f0b550f
Dash: compute_merkle_root_quorums + [QUORUMS-XCHECK] shadow + QuorumD…
frstrtr Apr 24, 2026
346edee
Dash: embedded GBT skeleton + [GBT-XCHECK] shadow vs dashd RPC — Phas…
frstrtr Apr 24, 2026
b77cd2f
Dash: embedded CCbTx encoder + [CBTX-XCHECK] shadow vs dashd RPC — Ph…
frstrtr Apr 24, 2026
82e206b
Dash: best-CLSIG cycle tracker → embedded CCbTx bestCL* fields — Phas…
frstrtr Apr 24, 2026
57eb9f6
Dash: real median-time-past for embedded GBT mintime — Phase C-TEMPLA…
frstrtr Apr 24, 2026
530be2c
Dash: own DGW3 retarget for embedded GBT bits — Phase C-TEMPLATE step 9
frstrtr Apr 24, 2026
bbfbd53
Dash: add version field to [GBT-XCHECK] — Phase C-TEMPLATE step 10
frstrtr Apr 24, 2026
579753d
Dash: seed creditPoolBalance from last observed CCbTx — Phase C-TEMPL…
frstrtr Apr 24, 2026
8b3bdd9
Dash: ship first in-tree DMN snapshot — Phase C-PAY step 3c
frstrtr Apr 24, 2026
68938a2
Dash: P2P block submission no longer gated on RPC — Phase C-SUBMIT st…
frstrtr Apr 24, 2026
cd40be7
Dash: base58 payee in embedded packed_payments — Phase C-TEMPLATE ste…
frstrtr Apr 24, 2026
1b5a3d3
Dash: DIP-0027 credit-pool state machine + [CREDITPOOL-XCHECK] — Phas…
frstrtr Apr 24, 2026
7807911
Dash: persist credit-pool state via CreditPoolDb — Phase C-TEMPLATE s…
frstrtr Apr 24, 2026
9cd5178
Dash: roundtrip confirmation for P2P block submits — Phase C-SUBMIT s…
frstrtr Apr 24, 2026
54b9e41
Dash: --gbt-source flag — embedded GBT can drive stratum jobs — Phase…
frstrtr Apr 24, 2026
1b0d1fb
Dash: [SUBMIT-SANITY] hop — escalate when embedded-built block fails …
frstrtr Apr 24, 2026
6ca6999
Dash: auto-fallback hysteresis on embedded GBT — Phase C-CUTOVER step 3
frstrtr Apr 24, 2026
4814dbe
Dash: dashboard cutover panel + soak counters — Phase C-CUTOVER step 4
frstrtr Apr 24, 2026
25e6713
Dash: liveness watchdog + 'lost contact' warning on dashboard — Phase…
frstrtr Apr 24, 2026
c053c14
Dash: default GBT policy now embedded-prefer — Phase C-CUTOVER step 6
frstrtr Apr 24, 2026
43ef108
Dash: unit tests for CreditPool + subsidy formulas
frstrtr Apr 24, 2026
509cf20
Dash: bind sharechain P2P listener — Phase C-INTEROP step 1 (CRITICAL)
frstrtr Apr 24, 2026
73a287a
Difficulty: fix div-by-zero on sub-1.0 network difficulty (testnet) —…
frstrtr Apr 24, 2026
a847cd2
Dash: roll back iteration-2b CLSIG ban (catch-up false-positive) — Bug 1
frstrtr Apr 24, 2026
1074f6a
Dash: testnet-specific MAX_TARGET (4096x easier than mainnet) — Bug 7…
frstrtr Apr 24, 2026
2d33d09
Dash: SIGSEGV/SIGABRT/SIGBUS/SIGFPE backtrace handler in main_dash
frstrtr Apr 24, 2026
dca4f65
Dash: regression tests for battle-test 2026-04-24 bugs (4, 5, 7)
frstrtr Apr 24, 2026
845cfaa
Dash: testnet sharechain port = 18999 (not mainnet's 8999)
frstrtr Apr 24, 2026
6cdd1af
Dash: [GENTX-OUTS] per-share diagnostic in share builder
frstrtr Apr 24, 2026
feac41d
Merge master into dash-spv-embedded — pull tip-driven cache + admin A…
frstrtr Apr 24, 2026
2d18d3a
Post-merge fixes: SharechainTip adapter + LTCChainParams factory migr…
frstrtr Apr 24, 2026
dda52f4
Dash CLI parity: --embedded-dash / --no-embedded-dash / --standalone
frstrtr Apr 24, 2026
daf74e2
Dash CLI parity: 11 more LTC/DOGE-vocabulary aliases
frstrtr Apr 24, 2026
445987d
Dash: defer DashBroadcastPeer destruction (Bug 3 mitigation)
frstrtr Apr 24, 2026
c42d0f5
Dash: Bug 3 ROOT-CAUSE FIX — shared_from_this on NodeP2P, weak_node i…
frstrtr Apr 24, 2026
1986dfc
Dash Bug 3 fix part 2: resolve diamond inheritance + singleton make_s…
frstrtr Apr 24, 2026
e4c7c10
Dash Phase C-PAY: fix UINT32_MAX wrap from RPC sentinel int -1
frstrtr Apr 24, 2026
03fa0aa
Dash Phase C-PAY: skip MN apply_block for blocks already in persisted…
frstrtr Apr 24, 2026
76691b3
Dash: drop Boost::system from c2pool-dash link list
frstrtr Apr 24, 2026
6e37104
test_threading: update to CoinParams signature; tighten link order
frstrtr Apr 25, 2026
b2a985e
test rot fixes from CoinParams API migration; skip 3 link-cycle tests
frstrtr Apr 25, 2026
e41a5cc
test rot: remove ctest registrations for the 3 link-cycle tests
frstrtr Apr 25, 2026
662b570
CI: add the 3 new dash tests to Build-tests target list
frstrtr Apr 25, 2026
6b6e31f
pplns parser: clamp totalPrimary sum to MAX_VALUE to prevent Infinity
frstrtr Apr 25, 2026
8d809ea
Dash Phase C-PAY: fix shared-payoutAddress MN attribution
frstrtr Apr 25, 2026
9b6896d
Dash Phase C-PAY: Pass-3 idempotency safety net + 7 regression tests
frstrtr Apr 25, 2026
9d61f8c
Dash Phase C-PAY: replay backfill block bodies through MN state machine
frstrtr Apr 25, 2026
17f7bbf
.gitignore: cover build*/ dirs and autoconf *~ backups
frstrtr Apr 25, 2026
5efd257
Dash Phase C-PAY: skip credit_pool apply in bootstrap drain
frstrtr Apr 25, 2026
e5e498c
Dash Phase C-PAY: bootstrap-trigger gates on real chain tip + MN snap…
frstrtr Apr 25, 2026
5708d1a
Dash Phase C-PAY: defer bootstrap-trigger until block at-or-past snap…
frstrtr Apr 25, 2026
d8cb58c
Dash Phase C-PAY: skip top-of-handler MN apply during bootstrap
frstrtr Apr 25, 2026
680f3c0
Dash Phase C-PAY: skip top-of-handler MN apply for trigger block too
frstrtr Apr 25, 2026
10768d7
Dash Phase C-PAY: credit_pool snapshot seed (v2 snapshot format)
frstrtr Apr 25, 2026
b2a5a47
test: re-enable test_coin_broadcaster via --start-group/--end-group
frstrtr Apr 25, 2026
9e6e8ba
test: re-enable test_multiaddress_pplns + test_pplns_stress via --who…
frstrtr Apr 25, 2026
eb0f03f
Bug 9 fix: cap unguarded vector resize() inputs from wire
frstrtr Apr 25, 2026
47521e4
Dash: try_to_lock on 5 IO-thread tracker accesses
frstrtr Apr 26, 2026
0f91b49
Bug 9 root cause: cap Packet prefix_length + catch in Socket::read()
frstrtr Apr 27, 2026
c558fe9
Bug 9 fundamental fix: Socket::m_node weak_ptr<INetwork> + AsAN CI
frstrtr Apr 28, 2026
0f594e0
Bug 9 follow-up: fix Timer UAF surfaced by AsAN
frstrtr Apr 28, 2026
c30d370
Bug 9 follow-up #2: NodeP2P owns coin_node + config (DashBroadcastPee…
frstrtr Apr 28, 2026
1773930
Bug 12 fix: sync MnStateMachine.isValid from SML on every root MATCH
frstrtr May 3, 2026
9aa5344
Bug 13 fix: CProRegTx + CProUpServTx nType width — uint8_t → uint16_t
frstrtr May 3, 2026
e691283
Bug 14 fix: extend SML sync to (isValid, banHeight, revivedHeight) tr…
frstrtr May 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
115 changes: 113 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,23 +50,31 @@ jobs:
run: cmake --build build_ci --target c2pool -j$(nproc)

- name: Build tests
# All tests now build. The previously-disabled link-cycle group
# (test_coin_broadcaster, test_multiaddress_pplns, test_pplns_stress)
# is unblocked: test_coin_broadcaster via --start-group/--end-group,
# the other two via --whole-archive on libltc_coin.a (forces rpc.cpp.o
# in regardless of ld's archive-scan logic, which evidently doesn't
# multi-pass extract those refs even inside --start-group).
run: |
cmake --build build_ci \
--target test_hardening test_share_messages test_coin_broadcaster \
--target test_hardening test_share_messages \
test_redistribute_address test_redistribute test_auto_ratchet \
test_stratum_extensions \
core_test sharechain_test share_test \
test_threading test_weights \
test_header_chain test_mempool test_template_builder \
test_doge_chain test_compact_blocks \
test_multiaddress_pplns test_pplns_stress \
test_hash_link test_decay_pplns \
test_pplns_consensus \
test_v36_script_sorting test_v36_cross_impl_refhash \
test_phase4_embedded \
test_mweb_builder \
test_address_resolution test_compute_share_target \
test_utxo \
test_dash_credit_pool test_dash_subsidy test_dash_battletest_regressions \
test_dash_pay_attribution \
test_coin_broadcaster test_multiaddress_pplns test_pplns_stress \
-j$(nproc)

- name: Run tests
Expand Down Expand Up @@ -105,6 +113,109 @@ jobs:
uses: actions/upload-artifact@v7
with: { name: test-results-linux, path: build_ci/Testing/, retention-days: 7 }

# ════════════════════════════════════════════════════════════════════════════
# Linux AddressSanitizer + UBSan (informational, not gating yet)
#
# Builds c2pool + the full test suite with -fsanitize=address,undefined and
# runs ctest under ASAN/UBSAN_OPTIONS. Catches use-after-free, heap overflow,
# uninitialized read, integer overflow, etc. at PR time instead of via 12-h
# soaks. Conan deps stay un-sanitized (static libs); libasan still intercepts
# all allocations including those from deps, so UAFs that touch our code are
# caught.
#
# Currently `continue-on-error: true` so reports are visible without blocking
# merges while we work through the audit (Phase 1 of the socket-lifecycle
# fundamental fix; see frstrtr/the/docs/c2pool-socket-lifecycle-fundamental-fix.md).
# Will flip to required once known UAFs are fixed (Phase 7).
# ════════════════════════════════════════════════════════════════════════════
linux-asan:
name: Linux x86_64 (AsAN+UBSan)
runs-on: ubuntu-24.04
continue-on-error: true
steps:
- uses: actions/checkout@v6

- name: Install system dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -y --no-install-recommends \
g++ cmake make libleveldb-dev libsecp256k1-dev

- uses: actions/setup-python@v6
with: { python-version: '3.12' }

- name: Install Conan 2
run: pip install "conan>=2.0,<3.0"

- name: Detect Conan profile
run: |
conan profile detect --force
sed -i 's/compiler.cppstd=.*/compiler.cppstd=20/' "$(conan profile path default)"

- name: Restore Conan cache
uses: actions/cache@v5
with:
path: ~/.conan2
key: conan2-ubuntu24-gcc13-${{ hashFiles('conanfile.txt') }}

- name: Conan install
run: conan install . --build=missing --output-folder=build_asan --settings=build_type=Release

- name: Configure (Release + AsAN + UBSan)
# NOTE 1: must match the build_type passed to `conan install` (Release).
# Conan generates `*-Target-release.cmake` with INTERFACE_INCLUDE_DIRECTORIES
# wrapped in $<$<CONFIG:Release>:...>, so a mismatched cmake build type
# (e.g. RelWithDebInfo) silently drops every conan dep's include path.
# We get full optimization + debug symbols via -g in CXX_FLAGS.
#
# NOTE 2: -fno-sanitize=vptr disables the UBSan vptr check, which would
# require leveldb (and other foreign polymorphic types) to expose their
# typeinfo. leveldb is built without that, causing "undefined reference
# to typeinfo for leveldb::DB" link errors. All other UBSan checks
# remain on.
run: |
cmake -S . -B build_asan \
-DCMAKE_TOOLCHAIN_FILE=build_asan/conan_toolchain.cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS="-fsanitize=address,undefined -fno-sanitize=vptr -fno-omit-frame-pointer -fno-sanitize-recover=undefined -g" \
-DCMAKE_EXE_LINKER_FLAGS="-fsanitize=address,undefined -fno-sanitize=vptr" \
-DCMAKE_SHARED_LINKER_FLAGS="-fsanitize=address,undefined -fno-sanitize=vptr"

- name: Build c2pool + tests
run: |
cmake --build build_asan \
--target c2pool \
test_hardening test_share_messages \
test_redistribute_address test_redistribute test_auto_ratchet \
test_stratum_extensions \
core_test sharechain_test share_test \
test_threading test_weights \
test_header_chain test_mempool test_template_builder \
test_doge_chain test_compact_blocks \
test_hash_link test_decay_pplns \
test_pplns_consensus \
test_v36_script_sorting test_v36_cross_impl_refhash \
test_phase4_embedded \
test_mweb_builder \
test_address_resolution test_compute_share_target \
test_utxo \
test_dash_credit_pool test_dash_subsidy test_dash_battletest_regressions \
test_dash_pay_attribution \
test_coin_broadcaster test_multiaddress_pplns test_pplns_stress \
-j$(nproc)

- name: Run tests under sanitizers
working-directory: build_asan
env:
ASAN_OPTIONS: detect_leaks=0:check_initialization_order=1:strict_string_checks=1:abort_on_error=0
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=0
run: ctest --output-on-failure -j$(nproc) --exclude-regex "LiveTest\."

- name: Upload sanitizer test results on failure
if: failure()
uses: actions/upload-artifact@v7
with: { name: test-results-linux-asan, path: build_asan/Testing/, retention-days: 7 }

# ════════════════════════════════════════════════════════════════════════════
# Web-static JS verify (typecheck + build + tests + bundle-size gate)
# Covers web-static/sharechain-explorer/: the Explorer + PPLNS View
Expand Down
15 changes: 14 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,15 @@ doc/EMBEDDED_COIN_NODE_DESIGN.md

#c2pool
/logs
# /data is ignored except for the in-tree DMN snapshots (Phase C-PAY
# step 3c). Force-add new snapshot files with `git add -f` when
# refreshing via --dump-mn-snapshot.
/data
!/data/
/data/*
!/data/dash/
/data/dash/*
!/data/dash/dmn_snapshot_*.dat
/legacy
/ltc_testnet/
/ltc/
Expand Down Expand Up @@ -158,6 +166,11 @@ test/test_*_include.cmake
SHA256SUMS

CLAUDE.md

# CMake build dirs (any name with a `build` prefix or `build` exact match)
build/
build-*/
# Autoconf/autoreconf backup files (e.g. external/dashbls/configure~)
*~
ref/
external-logs/
tools/
69 changes: 69 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,75 @@ if(SECP256K1_INCLUDE_DIRS)
include_directories(${SECP256K1_INCLUDE_DIRS})
endif()

# ── Phase L step 0: dashbls (Apache 2.0, dashpay/bls-signatures) ──────────
#
# Dashbls is the Chia BLS fork dashcore links against. We vendor a pruned
# copy under external/dashbls/ and build via dashbls's own autotools
# (autoreconf + configure + make), matching dashcore's exact build path.
#
# Why autotools and not dashbls's CMakeLists: dashbls's CMake build is
# upstream-broken for general use (its relic_conf.h.in template is
# .gitignored, gets regenerated by autoreconf using autoconf #undef
# syntax that CMake's configure_file doesn't substitute, leaving every
# arch-define as #undef → relic_arch.h falls through to the AVR
# microcontroller branch and tries to #include <avr/pgmspace.h>).
# Autotools is dashbls's primary supported build path (proven by
# dashcore using it on Linux/macOS daily).
#
# Build host requirements: autoconf, automake, libtool, pthread.
# - Linux: apt install autoconf automake libtool (typically already there)
# - macOS: brew install autoconf automake libtool (uses glibtoolize,
# handled by dashbls's autogen.sh)
# - Windows native: MSYS2 or WSL2 — autotools doesn't work in MSVC
# natively. Cross-compile from Linux is the documented escape hatch.
#
# Build artifact: ${DASHBLS_INSTALL}/lib/libdashbls.a — a self-contained
# static archive bundling relic + mimalloc + the BLS C++ wrapper. Headers
# go to ${DASHBLS_INSTALL}/include/dashbls/.

include(ExternalProject)

set(DASHBLS_PREFIX ${CMAKE_BINARY_DIR}/external/dashbls)
set(DASHBLS_INSTALL ${DASHBLS_PREFIX}/install)
set(DASHBLS_LIB ${DASHBLS_INSTALL}/lib/libdashbls.a)
set(DASHBLS_INCLUDE ${DASHBLS_INSTALL}/include/dashbls)

ExternalProject_Add(dashbls_external
SOURCE_DIR ${CMAKE_SOURCE_DIR}/external/dashbls
PREFIX ${DASHBLS_PREFIX}
INSTALL_DIR ${DASHBLS_INSTALL}
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND
bash -c "cd <SOURCE_DIR> && (test -f configure || ./autogen.sh) && ./configure --prefix=<INSTALL_DIR> --enable-shared=no --enable-static=yes --disable-tests --disable-bench"
BUILD_COMMAND bash -c "cd <SOURCE_DIR> && make -j"
INSTALL_COMMAND bash -c "cd <SOURCE_DIR> && make install"
BUILD_BYPRODUCTS ${DASHBLS_LIB}
LOG_DOWNLOAD 0
LOG_CONFIGURE 1
LOG_BUILD 1
LOG_INSTALL 1
)

# Imported target that wraps the autotools-built static library so
# downstream targets just `target_link_libraries(... dashbls)`. The
# include directory is ${DASHBLS_INSTALL}/include so consumers
# `#include <dashbls/bls.hpp>`.
add_library(dashbls STATIC IMPORTED GLOBAL)
add_dependencies(dashbls dashbls_external)
# dashbls's Makefile.am doesn't install headers — point at the source
# tree's include/ instead. Public C++ surface is `<dashbls/bls.hpp>` etc.
# dashbls's headers transitively #include <relic_conf.h> (autotools-
# generated by the autoreconf+configure step we triggered above), so
# expose relic's include dir too. INTERFACE_INCLUDE_DIRECTORIES on
# IMPORTED targets requires existing dirs at configure time — we
# pre-create both via file(MAKE_DIRECTORY) so a fresh checkout
# configures cleanly even before the dashbls_external build has run.
file(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/external/dashbls/depends/relic/include)
set_target_properties(dashbls PROPERTIES
IMPORTED_LOCATION ${DASHBLS_LIB}
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/external/dashbls/include;${CMAKE_SOURCE_DIR}/external/dashbls/depends/relic/include"
)

add_subdirectory(src)
add_subdirectory(test)
# add_subdirectory(benchmark)
Expand Down
Binary file added data/dash/dmn_snapshot_h2460249.dat
Binary file not shown.
17 changes: 17 additions & 0 deletions external/dashbls/.clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
BasedOnStyle: Google
UseTab: Never
ColumnLimit: 80
IndentWidth: 4
TabWidth: 4
AllowShortIfStatementsOnASingleLine: false
IndentCaseLabels: false
AccessModifierOffset: -4
BinPackArguments: false
BinPackParameters: false
AlignAfterOpenBracket: AlwaysBreak
IndentCaseLabels: true
AllowAllParametersOfDeclarationOnNextLine: false
BreakBeforeBraces: Custom
BraceWrapping:
AfterFunction: true
PenaltyReturnTypeOnItsOwnLine: 1000
4 changes: 4 additions & 0 deletions external/dashbls/.flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[flake8]
max-line-length = 120
exclude = ./typings/**/* python-impl/fields.py
ignore = E203,W503,E501
96 changes: 96 additions & 0 deletions external/dashbls/.github/workflows/build-binds.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: Build and test binds

on:
push:
branches:
- main
tags:
- '**'
pull_request:
branches:
- '**'

concurrency:
# SHA is added to the end if on `main` to let all main workflows run
group: ${{ github.ref }}-${{ github.workflow }}-${{ github.event_name }}-${{ (github.ref == 'refs/heads/main') && github.sha || '' }}
cancel-in-progress: true

jobs:
build:
name: ${{ matrix.os }}, Python ${{ matrix.python }}, Go ${{ matrix.golang }}, Rust ${{ matrix.rust }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-latest]
golang: [ '1.24' ]
python: ['3.10', '3.11', '3.12', '3.13']
rust: [ '1.91.0' ]

steps:
- name: Checkout code
uses: actions/checkout@v3

- uses: chia-network/actions/setup-python@main
with:
python-version: ${{ matrix.python }}

- name: Test Python implementation
run: |
python python-impl/impl-test.py

- name: Install Emscripten SDK
uses: mymindstorm/setup-emsdk@v11

- name: Build JavaScript bindings
run: |
emcc -v
sh emsdk_build.sh

- name: Test JavaScript bindings
run: |
sh js_test.sh

- name: Install Go
uses: actions/setup-go@v2
with:
go-version: ^${{ matrix.golang }}

- name: Prepare build system for Ubuntu
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install -qq --yes valgrind libgmp-dev cmake
hash -r
cmake --version

- name: Prepare build system for macOS
if: startsWith(matrix.os, 'macos')
run: |
ls -l
export MACOSX_DEPLOYMENT_TARGET=10.14
brew install gmp

- name: Build library using CMake
run: |
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
cmake --build . -- -j 6

- name: Build Go bindings
run: |
cd go-bindings
make config
make

- name: Install Rust
run: |
rustup toolchain install ${{ matrix.rust }}
rustup default ${{ matrix.rust }}
rustc --version
cargo --version

- name: Build and test Rust bindings
run: |
cd rust-bindings/bls-dash-sys
cargo test
Loading
Loading