sami7777
|
150828b806
|
C++20 modernization: nullptr, constexpr, smart pointers, thread safety, enum class
- Replace ~320 NULL occurrences with nullptr across 47 files (-184 net lines)
- static const -> constexpr for version, coin, utility constants
- Collapse 9 PushMessage overloads into 1 variadic template with fold expressions
- Convert boost::array -> std::array, boost::type_traits -> std:: equivalents
- pwalletMain, pScriptCheckQueue, pScriptCheckThreads -> unique_ptr
- mapOrphanBlocks values: raw CBlock* -> unique_ptr<CBlock>
- Fix data races: add locks to wallet registration, pindexBest reads, mempool exists
- pwalletdbEncryption: raw new/delete -> local unique_ptr, remove exit() calls
- PoS reward overflow: CBigNum intermediate for nCoinAge * nRewardCoinYear
- memset -> OPENSSL_cleanse for secure zeroing
- Fix const-cast UB in SetMerkleBranch
- Log silent catch(...) blocks instead of silently swallowing
- Enum class: GetMinFeeMode, WalletFeature
- std::string_view for 8 utility function parameters
- Range-for with structured bindings: 63 iterator loops modernized
- std::make_pair -> brace init: 35 sites
- Delegating constructors: CWallet, CBlockIndex
- Merkle tree caching, std::array for GetMedianTimePast
- CScript copy ctor -> = default, operator!= -> = default
|
2026-05-08 21:34:24 -07:00 |
|
sami7777
|
e133e97f3b
|
Add comprehensive RPC API upgrade: REST, ZMQ, SSE, address index
Phase 1 - New RPC commands (no new deps):
- getblockheader: header data from memory, zero disk reads
- estimatefee: static fee estimation (Bitcoin Core compatible)
- getblockchaininfo: chain state, difficulty, moneysupply
- getwalletinfo: balance, stake, txcount, keypool, encryption
- getnetworkinfo: version, protocol, connections, proxy
- gettxoutsetinfo: height, bestblock, total_amount
Phase 2 - REST API layer (-rest=1):
- /rest/chaininfo.json, /rest/block/<hash>.json|hex
- /rest/blockheader/<hash>.json, /rest/tx/<txid>.json|hex
- /rest/blockhashbyheight/<n>, /rest/mempool.json
- CORS headers for browser-based explorer access
Phase 3 - ZMQ pub/sub notifications (optional, USE_ZMQ=1):
- Topics: hashblock, hashtx, rawblock, rawtx
- Conditional compilation via ENABLE_ZMQ
Phase 4 - SSE real-time notifications (-ssenotify=1):
- GET /events endpoint (authenticated, long-lived)
- Block and transaction event streaming
- 15-second keepalive for proxy compatibility
Phase 5 - Address index (-addressindex=1):
- getaddressbalance, getaddressutxos, getaddresstxids
- LevelDB-backed index updated in ConnectBlock/DisconnectBlock
- Requires -reindex on first use
Also fixes QDesktopServices missing include for Qt5.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-12 00:50:34 -07:00 |
|