Matt Hess
c7643663af
Add self-contained testnet with CARROT hard fork support
...
Build a fully functional in-memory blockchain for integration testing:
- TestnetNode: daemon RPC-compatible interface backed by in-memory chain
- TestnetMiner: block assembly with real RandomX PoW (difficulty 1)
- Miner TX construction ported from C++ construct_miner_tx()
- Testnet orchestrator with wallet creation, sync, and balance tracking
Fix CARROT output creation to match C++ reference implementation:
- Use keyed Blake2b with SpFixedTranscript format (was unkeyed)
- Use X25519 curve for ECDH and ephemeral pubkeys (was Ed25519)
- Use blinding factor k_a=1 for coinbase outputs (was hash-derived)
- Handle coinbase clear-text amounts and zeroCommit in scanner
- Add isCarrot flag to WalletOutput model and serialization
20 tests, 105 assertions covering legacy and CARROT coinbase outputs
across the hard fork boundary at testnet height 1100.
2026-01-30 20:28:43 +00:00
..
2026-01-24 20:56:24 +00:00
2026-01-18 23:43:58 +00:00
2026-01-22 03:24:00 +00:00
2026-01-25 20:50:41 +00:00
2026-01-15 19:19:27 +00:00
2026-01-15 19:19:27 +00:00
2026-01-15 19:19:27 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-15 19:19:27 +00:00
2026-01-18 01:16:10 +00:00
2026-01-15 19:19:27 +00:00
2026-01-15 19:19:27 +00:00
2026-01-18 01:16:10 +00:00
2026-01-14 23:59:27 +00:00
2026-01-30 02:56:15 +00:00
2026-01-15 19:19:27 +00:00
2026-01-25 00:13:39 +00:00
2026-01-25 00:13:39 +00:00
2026-01-25 00:13:39 +00:00
2026-01-22 03:24:00 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-22 03:24:00 +00:00
2026-01-18 23:43:58 +00:00
2026-01-30 02:56:15 +00:00
2026-01-25 13:11:31 +00:00
2026-01-25 13:11:31 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-22 03:24:00 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-22 03:24:00 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-22 03:24:00 +00:00
2026-01-30 02:56:15 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-18 01:16:10 +00:00
2026-01-22 03:24:00 +00:00
2026-01-15 02:09:51 +00:00
2026-01-14 23:59:27 +00:00
2026-01-15 19:19:27 +00:00
2026-01-14 23:59:27 +00:00
2026-01-30 02:56:15 +00:00
2026-01-18 23:43:58 +00:00
2026-01-18 23:43:58 +00:00
2026-01-26 11:45:08 +00:00
2026-01-15 19:19:27 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-18 23:43:58 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 23:43:58 +00:00
2026-01-25 00:13:39 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 21:39:05 +00:00
2026-01-14 23:59:27 +00:00
2026-01-15 02:09:51 +00:00
2026-01-18 21:39:05 +00:00
2026-01-15 02:09:51 +00:00
2026-01-22 03:24:00 +00:00
2026-01-14 23:59:27 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-28 16:37:30 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-15 19:19:27 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-05 22:31:03 +00:00
2026-01-18 01:16:10 +00:00
2026-01-15 19:19:27 +00:00
2026-01-15 19:19:27 +00:00
2026-01-18 01:16:10 +00:00
2026-01-18 01:16:10 +00:00
2026-01-25 00:13:39 +00:00
2026-01-30 20:28:43 +00:00
2026-01-18 21:39:05 +00:00
2026-01-18 21:39:05 +00:00
2026-01-15 02:09:51 +00:00
2026-01-18 21:39:05 +00:00
2026-01-26 12:24:44 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00
2026-01-18 21:39:05 +00:00
2026-01-30 02:56:15 +00:00
2026-01-18 23:43:58 +00:00
2026-01-18 23:43:58 +00:00
2026-01-15 02:09:51 +00:00
2026-01-22 03:24:00 +00:00
2026-01-22 03:24:00 +00:00