Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
211 commits
Select commit Hold shift + click to select a range
806b250
Add CoinParams abstraction layer for multi-coin PoW support
frstrtr Apr 16, 2026
c5c6ba7
Parameterize share_check.hpp: all PoolConfig:: → CoinParams on master
frstrtr Apr 16, 2026
9ed23de
Parameterize share_tracker + node + c2pool_refactored: PoolConfig → C…
frstrtr Apr 16, 2026
3bffa7a
M2: Create bitcoin_family/ with base block headers + generic utilities
frstrtr Apr 16, 2026
f01c70f
M3: Add Dash X11 crypto library + CoinParams
frstrtr Apr 16, 2026
1241d3f
M3: Add Dash share v16 types + block/transaction structures
frstrtr Apr 16, 2026
cacc48f
M3: Add Dash share verification, config, P2P messages, peer
frstrtr Apr 16, 2026
356afd9
M3: c2pool-dash binary — connects to live Dash p2pool network
frstrtr Apr 16, 2026
e29d67c
M3: Fix donation script + add v16 PPLNS generate_share_transaction
frstrtr Apr 16, 2026
a81cc38
M3 VALIDATED: Full P2P share exchange with live Dash p2pool network
frstrtr Apr 16, 2026
2569e2b
M3: Add full Dash node infrastructure (ShareChain + ShareTracker + Da…
frstrtr Apr 16, 2026
615a4a7
Debug: add prefix verification + io::post connect for Socket investig…
frstrtr Apr 16, 2026
cf232fb
Debug: Local p2pool-dash test setup + Socket read investigation
frstrtr Apr 16, 2026
2a5baff
Fix DashNodeImpl: string compare + timeout restart — LIVE SHARES RECE…
frstrtr Apr 16, 2026
087c7ea
M3: Live v16 share verification — X11 PoW validated from Dash p2pool …
frstrtr Apr 16, 2026
0aa577e
M3: Add sharereq/sharereply chain download to DashNodeImpl
frstrtr Apr 17, 2026
ad55caa
Fix Dash share hash: use X11 (not SHA256d) for block identity
frstrtr Apr 17, 2026
554fcac
Implement masternode "!" prefix script decoding for Dash v16 shares
frstrtr Apr 17, 2026
ef2d4ee
Add Dash to dashboard: Blockchain enum, currency_info, address validator
frstrtr Apr 17, 2026
f90ae8a
Dashboard: Dash block value split (miner vs masternode/governance)
frstrtr Apr 17, 2026
76fda42
Dashboard: match p2pool-dash block value display format
frstrtr Apr 17, 2026
8d93ad8
M3.9: Add Dash embedded SPV node — dashd P2P layer
frstrtr Apr 17, 2026
0bce85d
M3.9: Add Dash HeaderChain — SPV header sync with X11 + DarkGravityWa…
frstrtr Apr 17, 2026
e16ebd9
M3.9: Wire dashd P2P + HeaderChain into main_dash.cpp
frstrtr Apr 17, 2026
49d4b68
M3.9: Fix dashd P2P prefix + wire header sync
frstrtr Apr 17, 2026
b9593cb
M3.9: Header sync working — 894K headers in 30s from dashd
frstrtr Apr 17, 2026
0ef3104
M3.9: Enable DGW difficulty validation — verified against live Dash c…
frstrtr Apr 17, 2026
c29191e
M3.9: Reduce unhandled dashd message log to trace level
frstrtr Apr 17, 2026
f277f4d
M6: Decouple EnhancedC2PoolNode — template over Config/ShareChain/Pee…
frstrtr Apr 17, 2026
488007a
M6: Dashd JSON-RPC client — GBT + payment parsing verified on live ma…
frstrtr Apr 17, 2026
8b22145
M6 Phase 3: Minimal Dash stratum gateway — protocol plumbing only
frstrtr Apr 17, 2026
cba4b31
M6 Phase 4a+4b: Dash coinbase assembly + stratum job push
frstrtr Apr 17, 2026
e09a816
M6 Phase 4c+4d: submit validation + block submission on win
frstrtr Apr 17, 2026
294d031
M6 Phase 5a+5b: PPLNS coinbase split across sharechain contributors
frstrtr Apr 17, 2026
a1b1c67
M6 Phase 5c+5d: create + broadcast v16 shares from miner submits
frstrtr Apr 17, 2026
f6edd23
M6 Phase 5d: fix contents['coinbase_payload'] wire format for peer pa…
frstrtr Apr 17, 2026
978c2b4
M6 Phase 5d COMPLETE: port generate_transaction — peer accepts our sh…
frstrtr Apr 17, 2026
c4d4f5a
M6 Phase 5d++: port WeightsSkipList — chain-of-3+ shares accepted
frstrtr Apr 17, 2026
5eff630
M6 Phase 5e: remember_tx end-to-end — tx-aware shares accepted by peer
frstrtr Apr 17, 2026
21706f9
M6 Phase 6: wire EnhancedNode for Dash — hashrate + vardiff engine ac…
frstrtr Apr 17, 2026
1c5ae12
M6 Phase 7: wire core::WebServer dashboard for c2pool-dash
frstrtr Apr 17, 2026
a1167a2
M6 Phase 7+: dashboard bypass for coin-driven work pipelines
frstrtr Apr 18, 2026
283da46
M6 Phase 7++: expose real peer + share counts to IMiningNode
frstrtr Apr 18, 2026
717bdd3
M6 Phase 7+++: dashboard de-LTC-ify for Dash — peers, protocol, banners
frstrtr Apr 18, 2026
cad0f76
M6 Phase 7++++: populate peer list, pool hashrate, ports for Dash das…
frstrtr Apr 18, 2026
f7cad24
M6 Phase 7+++++: sharechain window + PPLNS distribution for Dash dash…
frstrtr Apr 18, 2026
7c0f782
M6: fix compute_dash_payouts sum mismatch on mainnet difficulty
frstrtr Apr 18, 2026
152647d
M6 Phase 7++++++: peer expansion for Dash — randomized dials + 10m co…
frstrtr Apr 18, 2026
f1e7f0c
M6 Phase 7+++++++: Dash dashboard PPLNS populated + fan-out bootstrap…
frstrtr Apr 18, 2026
91d3886
M6 Phase 7++++++++: mark Dash shares verified + DASH labels on dashboard
frstrtr Apr 18, 2026
d5c1dd6
M6 Phase 7+++++++++: invalidate Dash sharechain window cache on new s…
frstrtr Apr 18, 2026
377d034
M6 Phase 7++++++++++: include pplns_current in Dash sharechain/window
frstrtr Apr 18, 2026
8f4a5a4
M6 Phase 7+++++++++++: per-share PPLNS precompute for Dash explorer
frstrtr Apr 18, 2026
2be19b1
M6 Phase 8: Dash tracker shared_mutex — P0 data race fix
frstrtr Apr 18, 2026
8a857ab
M6 Phase 8+: gate Dash dashboard cache invalidation on tip change (P3b)
frstrtr Apr 18, 2026
7f006d8
M6 Phase 9: six parity fixes — batch 1
frstrtr Apr 18, 2026
1db3f9a
M6 Phase 9+: dashd P2P block broadcast + real subver (batch 2)
frstrtr Apr 18, 2026
34a7b4e
M6 Phase 10: Dash sharechain tail-drop pruning (B2)
frstrtr Apr 18, 2026
2ec6774
M6 Phase 11: Dash sharechain LevelDB persistence (B1)
frstrtr Apr 18, 2026
8406a84
M6 Phase 12: batch 3 parity — B4 + B5 + SPV C5 + D3
frstrtr Apr 18, 2026
146f2ff
M6 Phase 13: Dash peer ban list (B3)
frstrtr Apr 18, 2026
3b6776e
M6 Phase 14: wire Dash block-find to MiningInterface recorder (C1)
frstrtr Apr 18, 2026
d1bd0b2
M6 Phase 15: Dash graph_db stat-log persistence (C2)
frstrtr Apr 18, 2026
613a38d
M6 Phase 16: Dash ChainLock support (SPV A1)
frstrtr Apr 18, 2026
fc4190d
M6 Phase 17: Dash C3 + SPV C1 (CLI knobs + dashd sync-progress)
frstrtr Apr 18, 2026
a36bfbe
M6 Phase 18: chain-aware address encoding in stat-log collector (C2 f…
frstrtr Apr 18, 2026
de6926a
M6 Phase 19: Dash SPV B1 — reply to getaddr with empty addr
frstrtr Apr 18, 2026
d09e50b
Dash: revert mainnet max_target to p2pool-dash parity (0xFFFF * 2^208)
frstrtr Apr 18, 2026
9475461
Dash: per-session vardiff ported from p2pool-dash (authoritative ref)
frstrtr Apr 18, 2026
a90cf8f
Dash A5: handle inbound message_remember_tx / message_forget_tx
frstrtr Apr 18, 2026
eb4eef5
Dash SPV B2 + B3: sendheaders flag + inv dedup ring
frstrtr Apr 18, 2026
8322375
Dash SPV: fast-start checkpoint + --dash-header-checkpoint CLI flag
frstrtr Apr 18, 2026
b27f9bb
Dash PPLNS: remove stale TODO + surface walk diagnostics
frstrtr Apr 18, 2026
c17482f
Dash: populate peer_addr on shares during load (matches LTC)
frstrtr Apr 18, 2026
9f56fae
Dash D4: sharechain_tip_fn returns short hash, matching LTC + cache keys
frstrtr Apr 18, 2026
1abc8d3
Dash D1+D2: lock-free TrackerSnapshot for HTTP stats callbacks
frstrtr Apr 18, 2026
c609dbb
Dash: fix SIGSEGV in save_stat_log 100s timer (shared_ptr self-owned …
frstrtr Apr 18, 2026
ac7a406
Dash: fix peer expansion — target=10 + multi-dial per tick + port filter
frstrtr Apr 18, 2026
4c7adeb
Dash: wire dashd SPV peer to dashboard 'Parent Chain Peers' panel
frstrtr Apr 18, 2026
ce0ab7b
Dash: multi-peer broadcaster pool (Phase 1: getpeerinfo discovery)
frstrtr Apr 18, 2026
4f24871
Dash: Phase 2 — full CoinBroadcaster + CoinPeerManager port
frstrtr Apr 18, 2026
5ad1956
Dash: wire Explorer nav-link via --explorer / --explorer-url
frstrtr Apr 18, 2026
3ce853f
Dash: show donation address on /current_payouts
frstrtr Apr 18, 2026
eb0ac10
Dash: label OP_RETURN platform payment on /current_payouts
frstrtr Apr 18, 2026
486a9f8
Dash: /current_payouts shows only mineable coinbase outputs
frstrtr Apr 18, 2026
b983056
Dash: wire /sharechain/stream SSE + per-share PPLNS refresh
frstrtr Apr 18, 2026
6c1b132
Dash: fix PPLNS donation missing + reconcile grey unverified shares
frstrtr Apr 18, 2026
bcd0cb7
Dash: wire /web/share/<hash> for individual share pages
frstrtr Apr 18, 2026
196eb97
Dash: PPLNS donation parity — weight-split + always-emit + default 1%
frstrtr Apr 18, 2026
ed62bdc
dashboard: floor PPLNS treemap cells at 1.5% so tiny donation is visible
frstrtr Apr 18, 2026
e6ec3a2
Dash: wire /sharechain/delta for RealTime incremental updates
frstrtr Apr 18, 2026
3397b11
Dash: /sharechain/tip uses max-height head to match window/delta
frstrtr Apr 18, 2026
81b3f9a
Dash: best_share_hash picks highest-abswork head, not map order
frstrtr Apr 18, 2026
53e5bb8
Dash: fix sharechain visual — 4320 window depth + v16 color + legend
frstrtr Apr 18, 2026
de73c1f
Dash: best head now tracks live tip (absheight > work > depth)
frstrtr Apr 18, 2026
883a6d4
Dash: periodic ancestor backfill so dashboard window fills to 4320
frstrtr Apr 18, 2026
99adca9
dashboard: Dash legend hides DOGE/Twin block + LTC→DASH block label
frstrtr Apr 18, 2026
9e4dfab
dashboard: eviction animation fires + no black holes during birth
frstrtr Apr 18, 2026
27b14ed
Dash: stable best-head picker (depth + timestamp) — matches LTC
frstrtr Apr 18, 2026
3e664c5
Dash stratum: send merkle branches as LE-byte-order hex, not reversed
frstrtr Apr 20, 2026
b8e3caa
Dash share target: clamp bits to MAX_TARGET, split pseudoshare from r…
frstrtr Apr 20, 2026
6f55b49
web_server: .mjs MIME + share_version in currency_info
frstrtr Apr 22, 2026
9b9f256
sharechain-explorer: Dash coin descriptor + §5 endpoint audit
frstrtr Apr 22, 2026
9758b90
Dash: /sharechain/* §5 conformance — add heads/blocks/doge_blocks/tot…
frstrtr Apr 22, 2026
ab3eeb3
Dash: DNS seeds + chain_seeds.hpp — Phase S1
frstrtr Apr 22, 2026
86410de
Dash: BIP 155 addrv2 handler — Phase S1
frstrtr Apr 22, 2026
9bfa857
Dash: BIP 152 compact blocks — Phase S2 stage 1
frstrtr Apr 22, 2026
8692fca
Dash: BIP 152 stage 2 — cmpctblock reassembly + inv/headers upgrade
frstrtr Apr 22, 2026
5659cb2
Dash: UTXO adapter layer — Phase U step 1
frstrtr Apr 22, 2026
9be6a1f
Dash: UTXO connect_block on full-block arrival + BIP 152 cmpct gating…
frstrtr Apr 22, 2026
ea11e28
Dash: UTXO LevelDB persistence + per-block flush — Phase U step 3
frstrtr Apr 22, 2026
1fab10e
Dash: per-block height lookup for UTXO connect_block — Phase U polish
frstrtr Apr 22, 2026
3e0c744
Dash: rolling-288 UTXO bootstrap pipeline + revert cmpct tip-fetch — …
frstrtr Apr 22, 2026
1bb9b99
Dash: tip-changed handler — reorg disconnect_block + header-sync nudg…
frstrtr Apr 23, 2026
62dec88
Dash: vendor CCbTx parser + RawBytesFormat helper — Phase C-SML step 1
frstrtr Apr 23, 2026
7d352ec
Dash: vendor CSimplifiedMNListEntry + merkle root — Phase C-SML step 2
frstrtr Apr 23, 2026
d2a72b8
Dash: vendor CSimplifiedMNListDiff + apply_diff — Phase C-SML step 3
frstrtr Apr 23, 2026
1899585
Dash: getmnlistd + mnlistdiff p2p messages + broadcaster wiring — Pha…
frstrtr Apr 23, 2026
111e586
Dash: SMLDb LevelDB persistence — Phase C-SML step 5
frstrtr Apr 23, 2026
7b4d806
Dash: SML sync timer + apply_diff + CBTX root verify — Phase C-SML st…
frstrtr Apr 23, 2026
0d00477
Dash: vendor CFinalCommitment + DYNBITSET + fail-safe quorum tail par…
frstrtr Apr 23, 2026
6f8475d
Dash: QuorumManager + main_dash wiring — Phase C-QUO step 2
frstrtr Apr 23, 2026
2e052e7
Dash: vendor dashbls + autotools-driven CMake integration — Phase L s…
frstrtr Apr 23, 2026
73bd846
Dash: BLS verifier wrapper + startup self-test — Phase L step 1
frstrtr Apr 23, 2026
7ca569a
Dash: ChainLock verify recipe (request_id + selection + sign_hash + B…
frstrtr Apr 23, 2026
ff7def0
Dash: wire ChainLock verification into clsig handler — Phase L step 3
frstrtr Apr 23, 2026
8a88162
Dash: ChainLock-aware reorg gating — Phase L step 4
frstrtr Apr 23, 2026
f652b2e
Dash: SML sync timer chained-self-reference crash fix — Phase L hotfix
frstrtr Apr 24, 2026
3b41115
Dash: uint256 sort-order memcmp fix (Bug A+B) + diff.cbTx self-aligne…
frstrtr Apr 24, 2026
5ef93ae
Dash: QuorumManager LevelDB persistence — Phase L un-MVP step 1
frstrtr Apr 24, 2026
b9d37f7
Dash: iteration-2a hardening — verify-gate chainlocked_blocks + SML r…
frstrtr Apr 24, 2026
ec37fd7
Dash: SML+QuorumDb reorg drop-and-refetch wiring — Tier 1.3 un-MVP
frstrtr Apr 24, 2026
354fb0a
Dash: iteration-2b — broadcaster::disconnect_peer + ban on bad data
frstrtr Apr 24, 2026
1de600b
Dash: dashboard SPV panel — surface SML/QuorumManager/ChainLock state…
frstrtr Apr 24, 2026
62e38f4
Dash: vendor ProRegTx/ProUpServTx/ProUpRegTx/ProUpRevTx parsers — Pha…
frstrtr Apr 24, 2026
967fe94
Dash: MnStateDb persistent per-MN state store — Phase C-PAY step 2 (f…
frstrtr Apr 24, 2026
533ec90
Dash: DMN snapshot loader (Path C bootstrap) — Phase C-PAY step 3a
frstrtr Apr 24, 2026
9a474e7
Dash: --dump-mn-snapshot RPC dumper (Path C 3b1) — Phase C-PAY step 3b1
frstrtr Apr 24, 2026
13fc8c6
Dash: RPC bootstrap fallback (Path C 3b2) — Phase C-PAY step 3b2
frstrtr Apr 24, 2026
93c57ec
Dash: per-block DMN state machine — Phase C-PAY step 4
frstrtr Apr 24, 2026
e940980
Dash: GetMNPayee projection + log-only [PAY] verify — Phase C-PAY step 5
frstrtr Apr 24, 2026
b365763
Dash: in-memory mempool + new_tx subscriber + confirm-eviction — Phas…
frstrtr Apr 24, 2026
6b00679
Dash: feerate-sorted mempool index + recompute_unknown_fees — Phase C…
frstrtr Apr 24, 2026
340e17b
Dash: subsidy formula + log-only [SUBSIDY] shadow validation — Phase …
frstrtr Apr 24, 2026
86e9b9f
Dash: subsidy×fees cross-check shadow + computed_block_fees — Phase C…
frstrtr Apr 24, 2026
4a2b020
Dash: replace [SUBSIDY] implied-fees with real computed_fees → [MN-PA…
frstrtr Apr 24, 2026
83bfbb6
Dash: vendor CFinalCommitmentTxPayload + qfcommit on_full_block scann…
frstrtr Apr 24, 2026
99d16cb
Dash: QuorumManager.Entry.mining_height + scanner-driven population —…
frstrtr Apr 24, 2026
90f35b5
Dash: compute_merkle_root_quorums + [QUORUMS-XCHECK] shadow + QuorumD…
frstrtr Apr 24, 2026
2ec2b9c
Dash: embedded GBT skeleton + [GBT-XCHECK] shadow vs dashd RPC — Phas…
frstrtr Apr 24, 2026
44dfe1b
Dash: embedded CCbTx encoder + [CBTX-XCHECK] shadow vs dashd RPC — Ph…
frstrtr Apr 24, 2026
cb60ff5
Dash: best-CLSIG cycle tracker → embedded CCbTx bestCL* fields — Phas…
frstrtr Apr 24, 2026
60d35e4
Dash: real median-time-past for embedded GBT mintime — Phase C-TEMPLA…
frstrtr Apr 24, 2026
1c777ff
Dash: own DGW3 retarget for embedded GBT bits — Phase C-TEMPLATE step 9
frstrtr Apr 24, 2026
22097fb
Dash: add version field to [GBT-XCHECK] — Phase C-TEMPLATE step 10
frstrtr Apr 24, 2026
47ab351
Dash: seed creditPoolBalance from last observed CCbTx — Phase C-TEMPL…
frstrtr Apr 24, 2026
e06ce01
Dash: ship first in-tree DMN snapshot — Phase C-PAY step 3c
frstrtr Apr 24, 2026
b8b1af7
Dash: P2P block submission no longer gated on RPC — Phase C-SUBMIT st…
frstrtr Apr 24, 2026
f383649
Dash: base58 payee in embedded packed_payments — Phase C-TEMPLATE ste…
frstrtr Apr 24, 2026
4e0c6a4
Dash: DIP-0027 credit-pool state machine + [CREDITPOOL-XCHECK] — Phas…
frstrtr Apr 24, 2026
eee3bf7
Dash: persist credit-pool state via CreditPoolDb — Phase C-TEMPLATE s…
frstrtr Apr 24, 2026
8f1b6a9
Dash: roundtrip confirmation for P2P block submits — Phase C-SUBMIT s…
frstrtr Apr 24, 2026
3d25498
Dash: --gbt-source flag — embedded GBT can drive stratum jobs — Phase…
frstrtr Apr 24, 2026
9d19057
Dash: [SUBMIT-SANITY] hop — escalate when embedded-built block fails …
frstrtr Apr 24, 2026
fd2d003
Dash: auto-fallback hysteresis on embedded GBT — Phase C-CUTOVER step 3
frstrtr Apr 24, 2026
72d9d3c
Dash: dashboard cutover panel + soak counters — Phase C-CUTOVER step 4
frstrtr Apr 24, 2026
81eefe1
Dash: liveness watchdog + 'lost contact' warning on dashboard — Phase…
frstrtr Apr 24, 2026
9796029
Dash: default GBT policy now embedded-prefer — Phase C-CUTOVER step 6
frstrtr Apr 24, 2026
971a14a
Dash: unit tests for CreditPool + subsidy formulas
frstrtr Apr 24, 2026
0812e09
Dash: bind sharechain P2P listener — Phase C-INTEROP step 1 (CRITICAL)
frstrtr Apr 24, 2026
64b2b1c
Difficulty: fix div-by-zero on sub-1.0 network difficulty (testnet) —…
frstrtr Apr 24, 2026
4197f80
Dash: roll back iteration-2b CLSIG ban (catch-up false-positive) — Bug 1
frstrtr Apr 24, 2026
ff5ebf9
Dash: testnet-specific MAX_TARGET (4096x easier than mainnet) — Bug 7…
frstrtr Apr 24, 2026
c54248c
Dash: SIGSEGV/SIGABRT/SIGBUS/SIGFPE backtrace handler in main_dash
frstrtr Apr 24, 2026
56bd3dc
Dash: regression tests for battle-test 2026-04-24 bugs (4, 5, 7)
frstrtr Apr 24, 2026
db0d506
Dash: testnet sharechain port = 18999 (not mainnet's 8999)
frstrtr Apr 24, 2026
0bc3cd5
Dash: [GENTX-OUTS] per-share diagnostic in share builder
frstrtr Apr 24, 2026
ed6c962
Post-merge fixes: SharechainTip adapter + LTCChainParams factory migr…
frstrtr Apr 24, 2026
813b7bc
Dash CLI parity: --embedded-dash / --no-embedded-dash / --standalone
frstrtr Apr 24, 2026
bc04f33
Dash CLI parity: 11 more LTC/DOGE-vocabulary aliases
frstrtr Apr 24, 2026
6bc91d1
Dash: defer DashBroadcastPeer destruction (Bug 3 mitigation)
frstrtr Apr 24, 2026
6ef4527
Dash: Bug 3 ROOT-CAUSE FIX — shared_from_this on NodeP2P, weak_node i…
frstrtr Apr 24, 2026
7312b30
Dash Bug 3 fix part 2: resolve diamond inheritance + singleton make_s…
frstrtr Apr 24, 2026
f44d4b3
Dash Phase C-PAY: fix UINT32_MAX wrap from RPC sentinel int -1
frstrtr Apr 24, 2026
a94ef90
Dash Phase C-PAY: skip MN apply_block for blocks already in persisted…
frstrtr Apr 24, 2026
bde6d33
Dash: drop Boost::system from c2pool-dash link list
frstrtr Apr 24, 2026
690c090
test_threading: update to CoinParams signature; tighten link order
frstrtr Apr 25, 2026
a70c22a
test rot fixes from CoinParams API migration; skip 3 link-cycle tests
frstrtr Apr 25, 2026
de2f5e9
CI: add the 3 new dash tests to Build-tests target list
frstrtr Apr 25, 2026
b94f2ec
pplns parser: clamp totalPrimary sum to MAX_VALUE to prevent Infinity
frstrtr Apr 25, 2026
f296518
Dash Phase C-PAY: fix shared-payoutAddress MN attribution
frstrtr Apr 25, 2026
d6d98d0
Dash Phase C-PAY: Pass-3 idempotency safety net + 7 regression tests
frstrtr Apr 25, 2026
b506b2f
Dash Phase C-PAY: replay backfill block bodies through MN state machine
frstrtr Apr 25, 2026
94c4726
.gitignore: cover build*/ dirs and autoconf *~ backups
frstrtr Apr 25, 2026
091d6f4
Dash Phase C-PAY: skip credit_pool apply in bootstrap drain
frstrtr Apr 25, 2026
a14fb38
Dash Phase C-PAY: bootstrap-trigger gates on real chain tip + MN snap…
frstrtr Apr 25, 2026
ddcbe11
Dash Phase C-PAY: defer bootstrap-trigger until block at-or-past snap…
frstrtr Apr 25, 2026
212c6ba
Dash Phase C-PAY: skip top-of-handler MN apply during bootstrap
frstrtr Apr 25, 2026
42268ed
Dash Phase C-PAY: skip top-of-handler MN apply for trigger block too
frstrtr Apr 25, 2026
a5fd5d9
Dash Phase C-PAY: credit_pool snapshot seed (v2 snapshot format)
frstrtr Apr 25, 2026
7d718fe
test: re-enable test_coin_broadcaster via --start-group/--end-group
frstrtr Apr 25, 2026
b5ceae2
test: re-enable test_multiaddress_pplns + test_pplns_stress via --who…
frstrtr Apr 25, 2026
3de7f94
Bug 9 fix: cap unguarded vector resize() inputs from wire
frstrtr Apr 25, 2026
410cdc8
Dash: try_to_lock on 5 IO-thread tracker accesses
frstrtr Apr 26, 2026
154e63a
Bug 9 follow-up #2: NodeP2P owns coin_node + config (DashBroadcastPee…
frstrtr Apr 28, 2026
9f0a83f
Bug 12 fix: sync MnStateMachine.isValid from SML on every root MATCH
frstrtr May 3, 2026
5d806c8
Bug 13 fix: CProRegTx + CProUpServTx nType width — uint8_t → uint16_t
frstrtr May 3, 2026
c00e87c
Bug 14 fix: extend SML sync to (isValid, banHeight, revivedHeight) tr…
frstrtr May 4, 2026
dc9d581
Dash Phase C-PAY: account for DIP-0027 platform reward in MN payment
frstrtr May 13, 2026
f38b9ca
Dash Phase C-PAY: block-replay test harness Day 1 — dumper + 66 fixtures
frstrtr May 17, 2026
9ea5733
Dash Phase C-PAY: block-replay test harness Day 2 — runner + 5 green …
frstrtr May 17, 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
  •  
  •  
  •  
12 changes: 10 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
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,7 +166,12 @@ 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/

Expand Down
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
72 changes: 72 additions & 0 deletions external/dashbls/.github/workflows/build-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Build and test library

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 }}, ${{ matrix.builder }}, ${{ matrix.compiler.cc }}, ${{ matrix.backend }} backend
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ macos-latest, ubuntu-latest ]
builder: [ cmake, autotools ]
compiler:
- cc: gcc
cxx: g++
- cc: clang
cxx: clang++
backend: [ easy, gmp ]
steps:
- name: Checkout code
uses: actions/checkout@v3

- 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 autoconf automake gmp libtool pkg-config

- name: Build library using CMake
if: startsWith(matrix.builder, 'cmake')
run: |
mkdir -p build && cd build
CC=${{ matrix.compiler.cc }} CXX=${{ matrix.compiler.cxx }} cmake .. -DARITH=${{ matrix.backend }} -DBUILD_BLS_PYTHON_BINDINGS=0 -DCMAKE_BUILD_TYPE=Debug
cmake --build . -- -j 6
mv src/runtest ..

- name: Build library using GNU Autotools
if: startsWith(matrix.builder, 'autotools')
run: |
./autogen.sh
CC=${{ matrix.compiler.cc }} CXX=${{ matrix.compiler.cxx }} ./configure --with-backend=${{ matrix.backend }}
make -j8

- name: Run tests
run: ./runtest

- name: Run valgrind on Ubuntu
if: startsWith(matrix.os, 'ubuntu')
run: valgrind --leak-check=full --show-leak-kinds=all --errors-for-leak-kinds=all ./runtest
Loading
Loading