dash/src
pasta 27d20beda8
Merge #6116: fix: mitigate crashes associated with some upgradetohd edge cases
69c37f4ec2 rpc: make sure `upgradetohd` always has the passphrase for `UpgradeToHD` (Kittywhiskers Van Gogh)
619b640a77 wallet: unify HD chain generation in CWallet (Kittywhiskers Van Gogh)
163d31861c wallet: unify HD chain generation in LegacyScriptPubKeyMan (Kittywhiskers Van Gogh)

Pull request description:

  ## Motivation

  When filming demo footage for https://github.com/dashpay/dash/pull/6093, I realized that if I tried to create an encrypted blank legacy wallet and run `upgradetohd [mnemonic]`, the client would crash.

  ```
  dash@b9c6631a824d:/src/dash$ ./src/qt/dash-qt
  QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-dash'
  dash-qt: wallet/scriptpubkeyman.cpp:399: void LegacyScriptPubKeyMan::GenerateNewCryptedHDChain(const SecureString &, const SecureString &, CKeyingMaterial): Assertion `res' failed.
  Posix Signal: Aborted
  No debug information available for stacktrace. You should add debug information and then run:
  dash-qt -printcrashinfo=bvcgc43iinzgc43ijfxgm3ybaadwiyltnawxc5avkbxxg2lyebjwsz3omfwduicbmjxxe5dfmqaaa===
  ```

  The expected set of operations when performing privileged operations is to first use `walletpassphrase [passphrase] [time]` to unlock the wallet and then perform the privileged operation. This routine that applies for almost all privileged RPCs doesn't apply here, the unlock state of the wallet has no bearing on constructing an encrypted HD chain as it needs to be encrypted with the master key stored in the wallet, which in turn is encrypted with a key derived from the passphrase (i.e., `upgradetohd` imports **always** need the passphrase, if encrypted).

  You might have noticed that I used `upgradetohd [mnemonic]` instead of the correct syntax, `upgradetohd [mnemonic] "" [passphrase]` that is supposed to be used when supplying a mnemonic to an encrypted wallet, because when you run the former, you don't get told to enter the passphrase into the RPC command, you're told.

  ```
  Error: Please enter the wallet passphrase with walletpassphrase first.
  ```

  Which tells you to treat it like any other routine privileged operation and follow the routine as mentioned above. This is where insufficient validation starts rearing its head, we only validate the passphrase if we're supplied one even though we should be demanding one if the wallet is encrypted and it isn't supplied. We didn't supply a passphrase because we're following the normal routine, we unlocked the wallet so `EnsureWalletIsUnlocked()` is happy, so now the following happens.

  ```
  upgradetohd()
    | Insufficient validation has allowed us to supply a blank passphrase
    | for an encrypted wallet
    |- CWallet::UpgradeToHD()
      |- CWallet::GenerateNewHDChainEncrypted()
       | We get our hands on vMasterKey by generating the key from our passphrase
       | and using it to unlock vCryptedMasterKey.
       |
       | There's one small problem, we don't know if the output of CCrypter::Decrypt
       | isn't just gibberish. Since we don't have a passphrase, whatever came from
       | CCrypter::SetKeyFromPassphrase isn't the decryption key, meaning, the
       | vMasterKey we just got is gibberish
       |- LegacyScriptPubKeyMan::GenerateNewCryptedHDChain()
         |- res = LegacyScriptPubKeyMan::EncryptHDChain()
         | |- EncryptSecret()
         |   |- CCrypter::SetKey()
         |      This is where everything unravels, the gibberish key's size doesn't
         |      match WALLET_CRYPTO_KEY_SIZE, it's no good for encryption. We bail out.
         |- assert(res)
            We assume are inputs are safe so there's no real reason we should crash.
            Except our inputs aren't safe, so we crash. Welp! :c
  ```

  This problem has existed for a while but didn't cause the client to crash, in v20.1.1 (19512988c6), trying to do the same thing would return you a vague error

  ```
  Failed to generate encrypted HD wallet (code -4)
  ```

  In the process of working on mitigating this crash, another edge case was discovered, where if the wallet was unlocked and an incorrect passphrase was provided to `upgradetohd`, the user would not receive any feedback that they entered the wrong passphrase and the client would similarly crash.

  ```
  upgradetohd()
   | We've been supplied a passphrase, so we can try and validate it by
   | trying to unlock the wallet with it. If it fails, we know we got the
   | wrong passphrase.
   |- CWallet::Unlock()
   | | Before we bother unlocking the wallet, we should check if we're
   | | already unlocked, if we are, we can just say "unlock successful".
   | |- CWallet::IsLocked()
   | |  Wallet is indeed unlocked.
   | |- return true;
   | The validation method we just tried to use has a bail-out mechanism
   | that we don't account for, the "unlock" succeded so I guess we have the
   | right passphrase.
   [...] (continue call chain as mentioned earlier)
         |- assert(res)
            Oh...
  ```

  This pull request aims to resolve crashes caused by the above two edge cases.

  ## Additional Information

  As this PR was required me to add additional guardrails on `GenerateNewCryptedHDChain()` and `GenerateNewHDChainEncrypted()`, it was taken as an opportunity to resolve a TODO ([source](9456d0761d/src/wallet/wallet.cpp (L5028-L5038))). The following mitigations have been implemented.

  * Validating `vMasterKey` size (any key not of `WALLET_CRYPTO_KEY_SIZE` size cannot be used for encryption and so, cannot be a valid key)
  * Validating `secureWalletPassphrase`'s presence to catch attempts at passing a blank value (an encrypted wallet cannot have a blank passphrase)
  * Using `Unlock()` to validate the correctness of `vMasterKey`. (the two other instances of iterating through `mapMasterKeys` use `Unlock()`, see [here](1394c41c8d/src/wallet/wallet.cpp (L5498-L5500)) and [here](1394c41c8d/src/wallet/wallet.cpp (L429-L431)))
    * `Lock()`'ing the wallet before `Unlock()`'ing the wallet to avoid the `IsLocked()` bail-out condition and then restoring to the previous lock state afterwards.
  * Add an `IsCrypted()` check to see if `upgradetohd`'s `walletpassphrase` is allowed to be empty.

  ## Checklist:

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  knst:
    utACK 69c37f4ec2
  UdjinM6:
    utACK 69c37f4ec2
  PastaPastaPasta:
    utACK 69c37f4ec2

Tree-SHA512: 4bda1f7155511447d6672bbaa22b909f5e2fc7efd1fd8ae1c61e0cdbbf3f6c28f6e8c1a8fe2a270fdedff7279322c93bf0f8e01890aff556fb17288ef6907b3e
2024-07-23 12:46:41 -05:00
..
bench Merge #6079: backport: merge bitcoin#22433, #22464, #22845, #23007, #21920, #21430, #22133, #23269, #23494, #20201, #23947, #22088, #22093, partial bitcoin#20938 (build backports) 2024-06-27 15:53:03 -05:00
bls Merge bitcoin/bitcoin#24213: refactor: use Span in random.* 2024-06-06 22:58:30 -05:00
coinjoin fix: auto backup issue with descriptor wallets for CJ 2024-07-02 00:23:19 +07:00
compat Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
config
consensus Merge #21377: Speedy trial support for versionbits 2024-04-23 22:41:10 +07:00
crc32c Merge bitcoin/bitcoin#25836: subtree: update crc32c subtree 2024-02-29 09:35:00 -06:00
crypto Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
dashbls build: stop tracking cmake dependency relic_conf.h.in 2023-06-28 23:44:03 +03:00
evo Merge #6096: feat: split type of error in submitchainlock - return enum in CL verifying code 2024-07-15 11:51:48 -05:00
governance refactor: drop usage of chainstate globals in governance logic 2024-06-26 11:57:21 +00:00
gsl refactor: re-order headers and forward declarations to improve compile time (#5693) 2023-11-17 10:04:18 -06:00
immer fix: drop symlinks in immer subtree 2024-02-28 13:18:49 -06:00
index merge bitcoin#21866: Farewell, global Chainstate! 2024-06-26 13:50:50 +00:00
interfaces Merge #6051: refactor: proper support for composite commands such as 'bls generate' 2024-06-10 11:46:14 -05:00
leveldb Merge bitcoin/bitcoin#26209: Update leveldb subtree 2024-03-05 10:40:36 -06:00
llmq Merge #6096: feat: split type of error in submitchainlock - return enum in CL verifying code 2024-07-15 11:51:48 -05:00
logging Merge bitcoin/bitcoin#22904: sync, log: inline lock contention logging macro to fix duration, improve BCLog::LogMsg() 2024-06-04 12:51:04 -05:00
masternode refactor: drop usage of chainstate globals in governance logic 2024-06-26 11:57:21 +00:00
node merge bitcoin#21866: Farewell, global Chainstate! 2024-06-26 13:50:50 +00:00
policy Merge bitcoin/bitcoin#21848: refactor: Make CFeeRate constructor architecture-independent 2024-05-24 13:24:30 -05:00
primitives Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
qt Merge #6090: fix: auto backup issue with descriptor wallets for CJ 2024-07-02 08:47:24 -05:00
rpc Merge #6106: feat: create new composite quorum-command platformsign 2024-07-15 11:52:17 -05:00
script merge bitcoin#20286: deprecate addresses and reqSigs from rpc outputs 2024-06-27 19:27:37 +00:00
secp256k1 merge bitcoin#27479: BIP324: ElligatorSwift integrations 2023-11-21 07:59:03 -06:00
support Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
test Merge #6074: backport: merge bitcoin#18344, #20867, #20286, #21359, #21910, #19651, #21934, #22722, #20295, #23702, partial bitcoin#23706 (rpc backports) 2024-06-27 17:37:09 -05:00
univalue
util Merge #20715: util: Add ArgsManager::GetCommand() and use it in bitcoin-wallet 2024-06-20 12:23:02 +07:00
wallet Merge #6116: fix: mitigate crashes associated with some upgradetohd edge cases 2024-07-23 12:46:41 -05:00
zmq Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
.clang-format Merge #21221: [tools] Allow argument/parameter bin packing in clang-format 2024-04-11 02:25:07 +07:00
addrdb.cpp addrman: allow for silent overwriting of inconsistent peers.dat 2024-06-27 06:09:30 +00:00
addrdb.h fix: build with gcc 13.2.0 - missing header memory in addrdb 2024-06-13 02:57:27 +07:00
addressindex.cpp refactor: consolidate P2PK{H} types to P2PK_OR_P2PKH 2023-09-25 22:57:42 +05:30
addressindex.h refactor: define all key/value pairings as *Entry and use them instead 2024-06-28 08:14:30 +00:00
addrman_impl.h fix: Let addrman handle multiple ports for all networks 2024-06-14 22:04:55 +03:00
addrman.cpp addrman: allow for silent overwriting of inconsistent peers.dat 2024-06-27 06:09:30 +00:00
addrman.h addrman: allow for silent overwriting of inconsistent peers.dat 2024-06-27 06:09:30 +00:00
amount.h Merge #15054: Update copyright headers to 2018 2023-12-06 11:40:14 -06:00
arith_uint256.cpp Merge bitcoin/bitcoin#24059: Fix implicit-integer-sign-change in arith_uint256 2024-02-28 13:16:39 -06:00
arith_uint256.h Merge bitcoin/bitcoin#24854: Remove not needed ArithToUint256 roundtrips in tests 2024-01-13 19:32:31 -06:00
attributes.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
banman.cpp Merge bitcoin/bitcoin#25149: refactor: Add thread safety annotation to BanMan::SweepBanned() 2024-06-06 22:58:31 -05:00
banman.h Merge bitcoin/bitcoin#25149: refactor: Add thread safety annotation to BanMan::SweepBanned() 2024-06-06 22:58:31 -05:00
base58.cpp Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
base58.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
batchedlogger.cpp Merge #19809: log: Prefix log messages with function name and source code location if -logsourcelocations is set 2024-04-11 02:25:08 +07:00
batchedlogger.h Merge #19809: log: Prefix log messages with function name and source code location if -logsourcelocations is set 2024-04-11 02:25:08 +07:00
bech32.cpp
bech32.h
bip324.cpp merge bitcoin#28267: BIP324 ciphersuite follow-up 2024-03-05 21:43:22 +00:00
bip324.h merge bitcoin#28267: BIP324 ciphersuite follow-up 2024-03-05 21:43:22 +00:00
bitcoin-cli.cpp merge bitcoin#20764: cli -netinfo peer connections dashboard updates 2024-06-10 17:31:24 +00:00
bitcoin-tx.cpp merge bitcoin#20286: deprecate addresses and reqSigs from rpc outputs 2024-06-27 19:27:37 +00:00
bitcoin-wallet.cpp Merge #20715: util: Add ArgsManager::GetCommand() and use it in bitcoin-wallet 2024-06-20 12:23:02 +07:00
bitcoind.cpp Merge #21007: bitcoind: Add -daemonwait option to wait for initialization 2024-04-22 09:42:16 -05:00
blockencodings.cpp Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
blockencodings.h Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
blockfilter.cpp Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
blockfilter.h Merge bitcoin/bitcoin#25967: refactor: add LIFETIMEBOUND to blockfilter where needed 2024-02-29 09:35:01 -06:00
bloom.cpp Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
bloom.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
cachemap.h non-scripted-diff: bump copyright year to 2023 2024-02-24 11:05:37 -06:00
cachemultimap.h non-scripted-diff: bump copyright year to 2023 2024-02-24 11:05:37 -06:00
chain.cpp Merge #17829: scripted-diff: Bump copyright of files changed in 2019 2023-12-06 11:40:14 -06:00
chain.h Merge bitcoin/bitcoin#22121: doc: Various validation doc fixups 2024-04-23 09:15:20 -05:00
chainparams.cpp Merge bitcoin/bitcoin#22135: CRegTestParams: Use args instead of gArgs. 2024-05-19 11:13:42 -05:00
chainparams.h partial Merge #20004: test: Add signet witness commitment section parse tests 2024-01-31 11:32:23 -06:00
chainparamsbase.cpp Merge #6104: fix: adjust incorrect parameter description that says there is a default that doesn't exist 2024-07-15 11:52:08 -05:00
chainparamsbase.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
chainparamsseeds.h chore: update seeds for v20.1 2024-03-03 23:34:34 -06:00
checkqueue.h merge bitcoin#25109: Strengthen AssertLockNotHeld assertions 2024-05-09 08:52:48 +00:00
clientversion.cpp Merge bitcoin/bitcoin#22715: wallet: use FormatFullVersion() & PACKAGE_NAME in dumpwallet 2024-05-24 13:30:00 -05:00
clientversion.h Merge bitcoin/bitcoin#22715: wallet: use FormatFullVersion() & PACKAGE_NAME in dumpwallet 2024-05-24 13:30:00 -05:00
coins.cpp Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
coins.h Merge bitcoin/bitcoin#22263: refactor: wrap CCoinsViewCursor in unique_ptr 2023-12-03 20:45:01 -06:00
compat.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
compressor.cpp merge bitcoin#21817: Replace &foo[0] with foo.data() 2024-02-28 13:37:33 -06:00
compressor.h merge bitcoin#23413: Replace MakeSpan helper with Span deduction guide 2023-09-24 09:50:50 -05:00
context.h non-scripted-diff: bump copyright year to 2023 2024-02-24 11:05:37 -06:00
core_io.h merge bitcoin#20286: deprecate addresses and reqSigs from rpc outputs 2024-06-27 19:27:37 +00:00
core_memusage.h
core_read.cpp merge bitcoin#17775: Try case where txn has inputs first 2024-02-06 08:44:04 -06:00
core_write.cpp merge bitcoin#20286: deprecate addresses and reqSigs from rpc outputs 2024-06-27 19:27:37 +00:00
ctpl_stl.h
cuckoocache.h Merge bitcoin/bitcoin#23626: refactor: Fix implicit-signed-integer-truncation in cuckoocache.h 2024-02-28 13:16:38 -06:00
cxxtimer.hpp
dash-cli-res.rc
dash-tx-res.rc
dash-wallet-res.rc
dashd-res.rc
dbwrapper.cpp Merge bitcoin/bitcoin#24213: refactor: use Span in random.* 2024-06-06 22:58:30 -05:00
dbwrapper.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
deploymentinfo.cpp Merge bitcoin/bitcoin#19438: Introduce deploymentstatus 2023-12-01 09:08:50 -06:00
deploymentinfo.h Merge bitcoin/bitcoin#19438: Introduce deploymentstatus 2023-12-01 09:08:50 -06:00
deploymentstatus.cpp Merge bitcoin/bitcoin#19438: Introduce deploymentstatus 2023-12-01 09:08:50 -06:00
deploymentstatus.h refactor: move out helper IsDIP3Enforced from deterministicmns 2023-12-21 23:02:31 -06:00
dsnotificationinterface.cpp merge bitcoin#21866: Farewell, global Chainstate! 2024-06-26 13:50:50 +00:00
dsnotificationinterface.h merge bitcoin#21866: Farewell, global Chainstate! 2024-06-26 13:50:50 +00:00
dummywallet.cpp Merge #14582: wallet: always do avoid partial spends if fees are within a specified range 2024-03-18 16:01:38 +07:00
flat-database.h merge bitcoin#23438: Use spans of std::byte in serialize 2024-02-28 13:37:34 -06:00
flatfile.cpp Merge #21041: log: Move "Pre-allocating up to position 0x[…] in […].dat" log message to debug category 2023-12-03 20:44:56 -06:00
flatfile.h Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
fs.cpp Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
fs.h Merge #20932: refactor: Replace fs::absolute calls with AbsPathJoin calls 2023-12-08 21:16:00 +03:00
hash.cpp merge bitcoin#21430: Add -Werror=implicit-fallthrough compile flag 2024-06-25 13:39:56 +00:00
hash.h merge bitcoin#26909: prevent peers.dat corruptions by only serializing once 2024-06-26 20:56:42 +00:00
httprpc.cpp Merge #6100: feat: make whitelist works with composite commands for platform needs 2024-07-15 11:51:59 -05:00
httprpc.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
httpserver.cpp Merge #6073: feat: add logging for RPC HTTP requests: command, user, http-code, time of running 2024-07-15 11:51:04 -05:00
httpserver.h feat: change handler to '/' for external users, use only rpc user name to choose queue 2024-06-07 16:31:07 +07:00
i2p.cpp merge bitcoin#26837: I2P network optimizations 2024-05-29 11:48:38 -05:00
i2p.h merge bitcoin#25355: add support for transient addresses for outbound connections 2024-05-29 11:48:37 -05:00
indirectmap.h Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
init.cpp merge bitcoin#21866: Farewell, global Chainstate! 2024-06-26 13:50:50 +00:00
init.h merge bitcoin#22433: remove straggling boost thread_group related code 2024-06-25 13:22:13 +00:00
key_io.cpp Merge #20832: rpc: Better error messages for invalid addresses 2024-02-01 11:09:04 -06:00
key_io.h Merge #20832: rpc: Better error messages for invalid addresses 2024-02-01 11:09:04 -06:00
key.cpp Merge bitcoin/bitcoin#24213: refactor: use Span in random.* 2024-06-06 22:58:30 -05:00
key.h merge bitcoin#21817: Replace &foo[0] with foo.data() 2024-02-28 13:37:33 -06:00
limitedmap.h chore: Drop unused unordered_limitedmap::insert_or_update() 2023-07-17 01:00:48 +03:00
logging.cpp Merge #19202: log: remove deprecated db log category 2024-05-27 21:55:48 +07:00
logging.h Merge #19809: log: Prefix log messages with function name and source code location if -logsourcelocations is set 2024-04-11 02:25:08 +07:00
Makefile.am refactor: move Get{Address*, Timestamp, Spent}Index out of validation 2024-06-28 08:14:29 +00:00
Makefile.bench.include merge bitcoin#22284: performance improvements to ProtectEvictionCandidatesByRatio() 2024-06-12 16:37:11 +00:00
Makefile.crc32c.include Merge bitcoin/bitcoin#23082: build: improve gexauxval() detection, remove getauxval() weak linking 2023-10-31 08:40:25 -05:00
Makefile.leveldb.include merge bitcoin#21430: Add -Werror=implicit-fallthrough compile flag 2024-06-25 13:39:56 +00:00
Makefile.qt_locale.include
Makefile.qt.include partial bitcoin-core/gui#79: Embed monospaced font 2024-06-09 17:33:59 +00:00
Makefile.qttest.include Merge #21531: test: remove qt byteswap compattests 2024-04-10 03:19:40 +07:00
Makefile.test_fuzz.include merge bitcoin#20995: Avoid initializing version to less than MIN_PEER_PROTO_VERSION 2023-07-24 20:45:49 +03:00
Makefile.test_util.include merge bitcoin#21553: Misc refactor 2024-02-06 08:39:53 -06:00
Makefile.test.include merge bitcoin#22734: Avoid crash on corrupt data, Force Check after deserialize 2024-06-10 17:15:04 +00:00
Makefile.univalue.include
mapport.cpp merge bitcoin#19064: Cleanup thread ctor calls 2023-09-04 20:50:27 -05:00
mapport.h Merge bitcoin/bitcoin#26896: build: Remove port-forwarding runtime setting options from configure 2023-12-03 20:01:26 -06:00
memusage.h Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
merkleblock.cpp Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
merkleblock.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
messagesigner.cpp non-scripted-diff: bump copyright year to 2023 2024-02-24 11:05:37 -06:00
messagesigner.h non-scripted-diff: bump copyright year to 2023 2024-02-24 11:05:37 -06:00
miner.cpp merge bitcoin#21866: Farewell, global Chainstate! 2024-06-26 13:50:50 +00:00
miner.h refactor: drop usage of chainstate globals in asset locks logic 2024-06-26 13:50:48 +00:00
net_permissions.cpp Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
net_permissions.h Merge bitcoin/bitcoin#26100: doc: clarify that NetPermissionFlags::Implicit is only about whitelists 2024-06-10 11:00:47 -05:00
net_processing.cpp Merge bitcoin/bitcoin#27610: Improve performance of p2p inv to send queues 2024-06-29 22:57:17 +07:00
net_processing.h partial bitcoin#23706: getblockfrompeer followups 2024-06-27 19:28:32 +00:00
net_types.cpp merge bitcoin#22848: Expose BanMapToJson / BanMapFromJson 2024-06-04 13:31:31 +00:00
net_types.h merge bitcoin#22848: Expose BanMapToJson / BanMapFromJson 2024-06-04 13:31:31 +00:00
net.cpp Merge #6056: backport: trivial 2024 06 11 2024-06-15 12:02:51 -05:00
net.h refactor: enumerate each CNode argument on a separate line 2024-06-12 16:37:12 +00:00
netaddress.cpp fix: Let addrman handle multiple ports for all networks 2024-06-14 22:04:55 +03:00
netaddress.h fix: Let addrman handle multiple ports for all networks 2024-06-14 22:04:55 +03:00
netbase.cpp merge bitcoin#24357: make setsockopt() and SetSocketNoDelay() mockable/testable 2024-06-11 15:52:19 +00:00
netbase.h merge bitcoin#24357: make setsockopt() and SetSocketNoDelay() mockable/testable 2024-06-11 15:52:19 +00:00
netfulfilledman.cpp refactor: remove CNetFulfilledRequestManager global, move to NodeContext 2024-03-18 21:36:34 +00:00
netfulfilledman.h refactor: remove CNetFulfilledRequestManager global, move to NodeContext 2024-03-18 21:36:34 +00:00
netmessagemaker.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
noui.cpp Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
noui.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
outputtype.cpp Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
outputtype.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
pow.cpp fix: respect fPowNoRetargeting for post-btc algos 2023-06-12 10:56:10 +03:00
pow.h
prevector.h Merge bitcoin/bitcoin#24962: prevector: enforce is_trivially_copyable_v 2024-01-14 11:05:36 -06:00
protocol.cpp Merge bitcoin/bitcoin#21939: refactor: Replace memset calls with array initialization 2024-04-23 09:53:06 -05:00
protocol.h merge bitcoin#20541: Move special CAddress-without-nTime logic to net_processing 2024-06-12 16:37:11 +00:00
psbt.cpp merge bitcoin#23438: Use spans of std::byte in serialize 2024-02-28 13:37:34 -06:00
psbt.h partial Merge #18027: "PSBT Operations" dialog 2024-01-31 11:32:22 -06:00
pubkey.cpp Merge bitcoin/bitcoin#21745: refactor: Add missing includes in pubkey.cpp/pubkey.h 2024-05-19 11:11:35 -05:00
pubkey.h Merge bitcoin/bitcoin#21745: refactor: Add missing includes in pubkey.cpp/pubkey.h 2024-05-19 11:11:35 -05:00
random.cpp Merge bitcoin/bitcoin#24213: refactor: use Span in random.* 2024-06-06 22:58:30 -05:00
random.h Merge bitcoin/bitcoin#24213: refactor: use Span in random.* 2024-06-06 22:58:30 -05:00
randomenv.cpp Merge bitcoin/bitcoin#23082: build: improve gexauxval() detection, remove getauxval() weak linking 2023-10-31 08:40:25 -05:00
randomenv.h
rest.cpp Merge #6074: backport: merge bitcoin#18344, #20867, #20286, #21359, #21910, #19651, #21934, #22722, #20295, #23702, partial bitcoin#23706 (rpc backports) 2024-06-27 17:37:09 -05:00
reverse_iterator.h
saltedhasher.cpp non-scripted-diff: bump copyright year to 2023 2024-02-24 11:05:37 -06:00
saltedhasher.h non-scripted-diff: bump copyright year to 2023 2024-02-24 11:05:37 -06:00
scheduler.cpp Merge bitcoin/bitcoin#25040: refactor: Pass lifetimebound reference to SingleThreadedSchedulerClient 2024-01-13 23:09:41 -06:00
scheduler.h merge bitcoin#25109: Strengthen AssertLockNotHeld assertions 2024-05-09 08:52:48 +00:00
serialize.h merge bitcoin#28012: Allow FastRandomContext::randbytes for std::byte, Allow std::byte serialization 2024-02-28 13:37:36 -06:00
shutdown.cpp Merge bitcoin/bitcoin#25053: Guard #include <config/bitcoin-config.h> 2024-06-06 22:58:31 -05:00
shutdown.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
source_location.h refactor: add gsl::not_null to get compile time / run time pointer guarantees (#5595) 2023-10-22 09:14:30 -05:00
span.h Merge bitcoin/bitcoin#22881: doc: provide context for CNetAddr::UnserializeV1Array() and span.h with lifetimebound 2023-12-26 22:26:19 -06:00
spentindex.h refactor: define all key/value pairings as *Entry and use them instead 2024-06-28 08:14:30 +00:00
spork.cpp refactor: drop usage of chainstate globals in spork logic 2024-06-26 13:50:49 +00:00
spork.h spork: replace LOCKS_EXCLUDED with negative EXCLUSIVE_LOCKS_REQUIRED 2024-04-30 11:47:07 +00:00
stacktraces.cpp non-scripted-diff: bump copyright year to 2023 2024-02-24 11:05:37 -06:00
stacktraces.h
statsd_client.cpp refactor: replace multiple C-style casts to reinterpret_cast 2024-03-06 03:31:46 +07:00
statsd_client.h refactor: add more consts everywhere as required by cppcheck 2.13.0 2024-03-06 03:31:48 +07:00
streams.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
sync.cpp Merge bitcoin/bitcoin#22904: sync, log: inline lock contention logging macro to fix duration, improve BCLog::LogMsg() 2024-06-04 12:51:04 -05:00
sync.h Merge bitcoin/bitcoin#22904: sync, log: inline lock contention logging macro to fix duration, improve BCLog::LogMsg() 2024-06-04 12:51:04 -05:00
threadinterrupt.cpp Merge bitcoin/bitcoin#24974: refactor: Make FEELER_SLEEP_WINDOW type safe (std::chrono) 2023-10-31 08:40:25 -05:00
threadinterrupt.h merge bitcoin#25109: Strengthen AssertLockNotHeld assertions 2024-05-09 08:52:48 +00:00
threadsafety.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
timedata.cpp partial bitcoin#20196: fix GetListenPort() to derive the proper port 2024-04-26 20:25:31 +00:00
timedata.h partial bitcoin#20196: fix GetListenPort() to derive the proper port 2024-04-26 20:25:31 +00:00
timestampindex.h refactor: add missing headers to {address,timestamp}index 2023-09-25 22:57:41 +05:30
tinyformat.h merge bitcoin#21430: Add -Werror=implicit-fallthrough compile flag 2024-06-25 13:39:56 +00:00
torcontrol.cpp Merge #6031: backport: merge bitcoin#23077, #22834, #24165, #24555, #24663, #24205, #24687, #25173, #24991, partial bitcoin#24468 (cjdns support) 2024-06-10 11:11:11 -05:00
torcontrol.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
txdb.cpp refactor: define all key/value pairings as *Entry and use them instead 2024-06-28 08:14:30 +00:00
txdb.h refactor: define all key/value pairings as *Entry and use them instead 2024-06-28 08:14:30 +00:00
txmempool.cpp Merge #6083: refactor: move Get*Index to rpc/index_util.cpp, const-ify functions and arguments, add lock annotations and some minor housekeeping 2024-06-29 14:48:46 -05:00
txmempool.h refactor: move pair value swapping out of CTxMemPool::getAddressIndex() 2024-06-28 08:14:30 +00:00
uint256.cpp Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
uint256.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
undo.h Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
unordered_lru_cache.h non-scripted-diff: bump copyright year to 2023 2024-02-24 11:05:37 -06:00
validation.cpp refactor: define all key/value pairings as *Entry and use them instead 2024-06-28 08:14:30 +00:00
validation.h refactor: move Get{Address*, Timestamp, Spent}Index out of validation 2024-06-28 08:14:29 +00:00
validationinterface.cpp merge bitcoin#25109: Strengthen AssertLockNotHeld assertions 2024-05-09 08:52:48 +00:00
validationinterface.h refactor: move GetListAtChainTip() calls out of CGovernanceVote 2024-03-19 15:20:59 +00:00
version.h feat: bump protocol version to distinguish v21 from v20.1 2024-06-25 09:19:50 -05:00
versionbits.cpp Merge #21377: Speedy trial support for versionbits 2024-04-23 22:41:10 +07:00
versionbits.h merge bitcoin#25109: Strengthen AssertLockNotHeld assertions 2024-05-09 08:52:48 +00:00
walletinitinterface.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
warnings.cpp Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
warnings.h Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00