aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2019-06-05Merge #15976: refactor: move methods under CChainState (pt. 1)Wladimir J. van der Laan
403e677c9 refactoring: IsInitialBlockDownload -> CChainState (James O'Beirne) 3ccbc376d refactoring: FlushStateToDisk -> CChainState (James O'Beirne) 4d6688603 refactoring: introduce ChainstateActive() (James O'Beirne) d7c97edee move-only: make the CChainState interface public (James O'Beirne) Pull request description: This is part of the [assumeutxo project](https://github.com/bitcoin/bitcoin/projects/11): Parent PR: #15606 Issue: #15605 Specification: https://github.com/jamesob/assumeutxo-docs/tree/2019-04-proposal/proposal --- This changeset starts moving functionality intimately related to CChainState into methods. Parameterizing these functions by a particular CChainState is necessary for the use of multiple chainstates simultaneously (e.g. for asynchronous background validation). In this change, we - make the CChainState interface public - since other units will start to invoke its methods directly, - introduce `::ChainstateActive()`, the CChainState equivalent for `::ChainActive()`, - and move `IsInitialBlockDownload()` and `FlushStateToDisk()` into methods on CChainState. Independent of assumeutxo, these changes better encapsulate chainstate behavior and allow easier use from a testing context. There are more methods that we'll move in the future, but they require other substantial changes (i.e. moving ownership of the `CCoinsView*` hierarchy into CChainState) so we'll save them for future PRs. --- The first move-only commit is most easily reviewed with `git diff ... --color-moved=dimmed_zebra`. ACKs for commit 403e67: Empact: utACK https://github.com/bitcoin/bitcoin/pull/15976/commits/403e677c9ebbf9744733010e6b0c2d1b182ee850 no need to address my nits herein Sjors: utACK 403e677 ryanofsky: utACK 403e677c9ebbf9744733010e6b0c2d1b182ee850. Only change since previous review is removing global state comment as suggested. MarcoFalke: utACK 403e677c9e, though the diff still seems a bit bloated with some unnecessary changes in the second commit. promag: utACK 403e677 and rebased with current [master](c7cfd20a7). Tree-SHA512: 6fcf260bb2dc201361170c0b4547405366f5f331fcc3a2bac29b24442814b7b244ca1b58aac5af716885f9a130c343b544590dff780da0bf835c7c5b3ccb2257
2019-06-03Merge #16044: qt: fix opening bitcoin.conf via Preferences on macOSWladimir J. van der Laan
6e6494b3fb345848025494cb7a79c5bf8f35e417 qt: fix opening bitcoin.conf via Preferences on macOS; see #15409 (shannon1916) Pull request description: Fix #15409. The QT wallet fail to open the configuration file on Mac, when these is no default application for `*.conf` files. Here is a feasible way to solve this bug. When `QDesktopServices::openUrl` fails to open `file:///path/bitcoin.conf` with its default application, use `QProcess::startDetached` to run `open -t /path/bitcoin.conf` command instead, so as to open the configuration file with system's default text editor. ACKs for commit 6e6494: hebasto: re-ACK 6e6494b3fb345848025494cb7a79c5bf8f35e417 fanquake: tACK https://github.com/bitcoin/bitcoin/commit/6e6494b3fb345848025494cb7a79c5bf8f35e417 on macOS 10.14.x Tree-SHA512: 60e898f4cb77cfd7b8adbc8d33fbebf46bac2a801bdcf40cae15e24b78ad56b1f32358b1879b670623d9f8651dea93961d34269358cea18f4e15b089a8ffcfbf
2019-06-03Merge #16090: Qt: Add vertical spacer to peer detail widgetWladimir J. van der Laan
36b0a2f2a6b49008c4f37866a9e3ab702eb34eda Add vertical spacer (Josu Goñi) Pull request description: Before: ![image](https://user-images.githubusercontent.com/25986871/58375408-a8f22c80-7f52-11e9-96ca-14f2186e6fa7.png) After: ![image](https://user-images.githubusercontent.com/25986871/58375420-fa022080-7f52-11e9-8add-eafe98068e8d.png) ACKs for commit 36b0a2: fanquake: utACK https://github.com/bitcoin/bitcoin/pull/16090/commits/36b0a2f2a6b49008c4f37866a9e3ab702eb34eda hebasto: tACK 36b0a2f2a6b49008c4f37866a9e3ab702eb34eda on Linux Mint 19.1, Qt 5.9.5 fanquake: re-utACK https://github.com/bitcoin/bitcoin/commit/36b0a2f2a6b49008c4f37866a9e3ab702eb34eda kristapsk: ACK 36b0a2f2a6b49008c4f37866a9e3ab702eb34eda (tested with Qt 5.11.3 under Linux/Xfce4) promag: Tested ACK https://github.com/bitcoin/bitcoin/pull/16090/commits/36b0a2f2a6b49008c4f37866a9e3ab702eb34eda on macos 10.14.3. Resizing the window works as expected. Tree-SHA512: 26ec9700aa9116ec2c604f8ec7b825b30c83c1d497c21f2191d3585868db4a2e3921de607dea9f7cd9a1ea49361215d738e2aba1936566d85757d87112d73088
2019-06-03Merge #16122: gui: Enable console line edit on setClientModelWladimir J. van der Laan
2d8ad2f99710a8981e33fe2d6ce834b0076c4e80 gui: Enable console line edit on setClientModel (João Barbosa) Pull request description: Make console line edit disable by default, and only enable once `RPCConsole::setClientModel` is called. Fixes #16119. ACKs for commit 2d8ad2: fanquake: tACK https://github.com/bitcoin/bitcoin/pull/16122/commits/2d8ad2f99710a8981e33fe2d6ce834b0076c4e80 on macOS. Tree-SHA512: 1418ce3c120c08e5ec3e7a7a063572a24402ce0ec541bd4adc21f61d60c4e86b711e82e940ebf5f0445ab861f89c146c2a2e7990fb52bed2c65fc199a1981f71
2019-06-03qt: fix opening bitcoin.conf via Preferences on macOS; see #15409shannon1916
2019-06-02gui: Set progressDialog to nullptrJoão Barbosa
2019-05-30gui: Enable console line edit on setClientModelJoão Barbosa
2019-05-29Merge #15703: Update secp256k1 subtree to latest upstreamWladimir J. van der Laan
54245985fb3c89d72e285c4db39d38ed2f5fb0de Squashed 'src/secp256k1/' changes from 0b70241850..b19c000063 (Pieter Wuille) Pull request description: It's been 1.5 years since our secp256k1 subtree was updated, while the upstream project has undergone a number of incremental improvements (performance, tests, build system fixes), plus gained the groundwork for batch verification. As we're early in the 0.19 window, this seems like a good time to get these merged. ACKs for commit 99df27: fanquake: utACK 99df276 the subtree merge, still need to test the actual changes. laanwj: utACK 99df276da Tree-SHA512: 769a699366321635068ebfbd9d3f30f6e72401c4fcdc1fdc84e5b3fd888c3f01437748f6cd23a507ab47cf04c226cd504fd48aee654457c34bb106c9db7e5c09
2019-05-29Merge #16046: util: Add type safe GetTimeWladimir J. van der Laan
fa013664ae23d0682a195b9bded85bc19c99536e util: Add type safe GetTime (MarcoFalke) Pull request description: There are basically two ways to get the time in Bitcoin Core: * get the system time (via `GetSystemTimeInSeconds` or `GetTime{Millis,Micros}`) * get the mockable time (via `GetTime`) Both return the same type (a plain int). This can lead to (test-only) bugs such as 99464bc38e9575ff47f8e33223b252dcea2055e3. Fix that by deprecating `GetTime` and adding a `GetTime<>` that returns the mockable time in a non-int type. The new util function is currently unused, but new code should it where possible. ACKs for commit fa0136: promag: utACK fa013664. Tree-SHA512: efab9c463f079fd8fd3030c479637c7b1e8be567a881234bd0f555c8f87e518e3b43ef2466128103db8fc40295aaf24e87ad76d91f338c631246fc703477e95c
2019-05-29Merge #16056: mempool: remove unused magic number from consistency checkWladimir J. van der Laan
fadbc5d89562df7e34379f9d01a757e30db7bbe2 mempool: remove unused magic number from consistency check (Gregory Sanders) Pull request description: Unexplained magic numbers are no good. Since the exact number does not matter, opt for a constant that is less peculiar. Note that this could only possibly affect mempool consistency checks which is not active by default except on regtest. see discussion: https://github.com/bitcoin/bitcoin/issues/15080 ACKs for commit fadbc5: practicalswift: utACK fadbc5d89562df7e34379f9d01a757e30db7bbe2 Tree-SHA512: 80f95ebc284c5bcc5d825fab0e9f962457a411539946d68ef4c8bdea4b1f2f7f0ead88928fac0eaaa02a1175f01f5ef381613ce53b0f27c3098e90d76ecfe9af
2019-05-29Merge #16113: gui: move coin control "OK" to the right hand side of the dialogJonas Schnelli
d595b4aae gui: move coin control OK to the right (fanquake) Pull request description: Fixes #16101 The simplest fix seems to be to just drop the `sizePolicy` property, as we don't use that on any other instances of `QDialogButtonBox`. master (76e2cded477bc483ec610212bdadf21fe35292d4): ![master](https://user-images.githubusercontent.com/863730/58490351-fc26d380-813a-11e9-9906-043ff4f4959f.png) This PR: ![right-side](https://user-images.githubusercontent.com/863730/58490360-00eb8780-813b-11e9-80fb-2dab04a5ba54.png) ACKs for commit d595b4: hebasto: utACK d595b4aae9d6eca7094ed5612f4773d98e422057 jonasschnelli: utACK d595b4aae9d6eca7094ed5612f4773d98e422057 JosuGZ: tACK d595b4aae9d6eca7094ed5612f4773d98e422057 Tree-SHA512: 7099e21d58457bfcbc83237f5a47ddf18cfa6bd9d6194b357b314b4d54aed72fdbbf10cbe38223affd87c2542b8f364d37ce6a175e594dfbcd18c725b42a6d3e
2019-05-29Merge #15741: Batch write imported stuff in importmultiMeshCollider
0db94e55d wallet: Pass WalletBatch to CWallet::UnsetWalletFlag (João Barbosa) 6cb888b37 Apply the batch treatment to CWallet::SetAddressBook via ImportScriptPubKeys (Ben Woosley) 6154a09e0 Move some of ProcessImport into CWallet::Import* (Ben Woosley) ccb26cf34 Batch writes for importmulti (Andrew Chow) d6576e349 Have WalletBatch automatically flush every 1000 updates (Andrew Chow) 366fe0be0 Add AddWatchOnlyWithDB, AddKeyOriginWithDB, AddCScriptWithDB functions (Andrew Chow) Pull request description: Instead of writing each item to the wallet database individually, do them in batches so that the import runs faster. This was tested by importing a ranged descriptor for 10,000 keys. Current master ``` $ time src/bitcoin-cli -regtest -rpcwallet=importbig importmulti '[{"desc": "sh(wpkh([73111820/44h/1h/0h]tpubDDoT2SgEjaU5rerQpfcRDWPAcwyZ5g7xxHgVAfPwidgPDKVjm89d6jJ8AQotp35Np3m6VaysfUY1C2g68wFqUmraGbzhSsMF9YBuTGxpBaW/1/*))#3w7php47", "range": [0, 10000], "timestamp": "now", "internal": true, "keypool": false, "watchonly": true}]' ... real 7m45.29s ``` This PR: ``` $ time src/bitcoin-cli -regtest -rpcwallet=importbig4 importmulti '[{"desc": "pkh([73111820/44h/1h/0h]tpubDDoT2SgEjaU5rerQpfcRDWPAcwyZ5g7xxHgVAfPwidgPDKVjm89d6jJ8AQotp35Np3m6VaysfUY1C2g68wFqUmraGbzhSsMF9YBuTGxpBaW/1/*)#v65yjgmc", "range": [0, 10000], "timestamp": "now", "internal": true, "keypool": false, "watchonly": true}]' ... real 3.93s ``` Fixes #15739 ACKs for commit 0db94e: jb55: utACK 0db94e5 ariard: Tested ACK 0db94e5 Empact: re-utACK https://github.com/bitcoin/bitcoin/pull/15741/commits/0db94e55dcbbfc741df463c404818d9033b4fff1 only change is re the privacy of `UnsetWalletFlagWithDB` and `AddCScriptWithDB`. Tree-SHA512: 3481308a64c99b6129f7bd328113dc291fe58743464628931feaebdef0e6ec770ddd5c19e4f9fbc1249a200acb04aaf62a8d914d53b0a29ac1e557576659c0cc
2019-05-28gui: move coin control OK to the rightfanquake
2019-05-28wallet: Pass WalletBatch to CWallet::UnsetWalletFlagJoão Barbosa
2019-05-28Apply the batch treatment to CWallet::SetAddressBook via ImportScriptPubKeysBen Woosley
2019-05-28Move some of ProcessImport into CWallet::Import*Ben Woosley
This maintains encapsulation of CWallet::database in the face of batching, e.g. allows making the `WithDB` methods private.
2019-05-26Exceptions should be caught by reference, not by value.Kristaps Kaupe
2019-05-26Add vertical spacerJosu Goñi
2019-05-25Remove global symbols: Avoid using the global namespace if possiblepracticalswift
Rename CCriticalSection to RecursiveMutex (both are AnnotatedMixin<std::recursive_mutex>) ``` $ git grep -E '(typedef|using).*(CCriticalSection|RecursiveMutex)' src/sync.h:using RecursiveMutex = AnnotatedMixin<std::recursive_mutex>; src/sync.h:typedef AnnotatedMixin<std::recursive_mutex> CCriticalSection; ```
2019-05-23util: Add type safe GetTimeMarcoFalke
2019-05-23Merge #16034: refactoring: Rename LockAnnotation to LockAssertion and add ↵MarcoFalke
run-time check to it 9f85e9cb3d scripted-diff: Rename LockAnnotation to LockAssertion (practicalswift) de9b5dbca3 Make sure the compile-time locking promises given via LockAnnotation:s hold also in practice at runtime (ifdef DEBUG_LOCKORDER) (practicalswift) 3a809446b3 Move LockAnnotation to make it reflect the truth (practicalswift) cc2588579c Move LockAnnotation from threadsafety.h (imported code) to sync.h (our code) (practicalswift) Pull request description: `LockAnnotation lock(mutex);` is a guarantee to the compiler thread-analysis that `mutex` is locked (when it couldn't be determined otherwise). Before this PR it was possible to make the mistake of adding a `LockAnnotation` where the correct mutex is _not_ held. This in turn makes the thread-analysis reasoning being based on incorrect premises. This PR adds an assertion in the `LockAnnotation` ctor which checks that the guarantees given by us at compile-time are held also in practice (`ifdef DEBUG_LOCKORDER`). Issues like the one described in #16028 will be discovered immediately with this PR merged. Changes in this PR: * Move `LockAnnotation` from `threadsafety.h` (imported code) to `sync.h` (our code) * Move `LockAnnotation` in `wallet_tests` to make it reflect the truth * Make sure the compile-time locking promises given via `LockAnnotation`:s hold also in practice at runtime (`ifdef DEBUG_LOCKORDER`) * Rename `LockAnnotation` to `LockAssertion` ACKs for commit 9f85e9: ryanofsky: utACK 9f85e9cb3d687862128ddf464d2bc2462b8627f0. No changes at all since last review except clean rebase after base PR #16033 was merged Tree-SHA512: fb80e78fe362adfd6ea8405bcb142c09b99f834fe8be4397282b223ca2c3a2bb9719a074a47a043b44757f840b239a6fcd2f98d14771f8729204834ecf608c3a
2019-05-23Merge #16024: [rpc] deriveaddresses: Correction of descriptor checksum in ↵MarcoFalke
RPC example e23809a05b [rpc] deriveaddresses: Correct descriptor checksum in RPCExamples (Chris Capobianco) Pull request description: Trvial: This fixes the descriptor checksum found the in the deriveaddresses RPC example. The current checksum value does work, but only if the "h" used for the hardened derivation key origin are replaced with "'". Given the discussion to switch from "'" to "h" [here](https://github.com/bitcoin/bitcoin/issues/15740), I thought it made more sense to update the checksum rather then changing all the "h" to "'" in this example. ACKs for commit e23809: instagibbs: tACK https://github.com/bitcoin/bitcoin/pull/16024/commits/e23809a05b22a5eec354d63980bbddf040d67c3f Tree-SHA512: 06a2b9f3e714ecde9b9a80b3b7a4082eb072e71d8abcc455ff5387e470d48839f22a70b78bbae1cf9122cb133fee46830819b6f39d67aec8c3c8d5889ae94e04
2019-05-22Merge #16063: rpc: Mention getwalletinfo where a rescan is triggeredMarcoFalke
be4efb165a rpc: Mention getwalletinfo where a rescan is triggered (João Barbosa) Pull request description: ACKs for commit be4efb: jonasschnelli: utACK be4efb165ab7ff5824de9a46aa06eca654b7513f sipa: utACK be4efb165ab7ff5824de9a46aa06eca654b7513f Tree-SHA512: c9e5adda6fcb71dd64ad35cc5af89b0ed815aba440df26b61ef2018abd3b801c9e93cdbedf90db3938e88dc9af39f1577c4c7248bc77260d3afda5e2a0928e68
2019-05-22Merge #16073: refactor: Improve CRollingBloomFilter::reset by using std::fillWladimir J. van der Laan
df9e15f092c18a8047f09307576c2b77b9c8d01c refactor: Improve CRollingBloomFilter::reset by using std::fill (João Barbosa) d2dbc7da26e1ca40200521c05a0b1ca75578acd2 bench: Add benchmark for CRollingBloomFilter::reset (João Barbosa) Pull request description: Cleaner code. Also improves performance with `--enable-debug` (which is meaningless to non-developers). Before: ``` # Benchmark, evals, iterations, total, min, max, median RollingBloomReset, 5, 150, 19.3008, 0.0254917, 0.0259195, 0.0257395 ``` After: ``` # Benchmark, evals, iterations, total, min, max, median RollingBloomReset, 5, 150, 5.43269, 0.00720651, 0.00729697, 0.00724854 ``` ACKs for commit df9e15: MarcoFalke: re-utACK df9e15f092 jamesob: re-utACK https://github.com/bitcoin/bitcoin/pull/16073/commits/df9e15f092c18a8047f09307576c2b77b9c8d01c Tree-SHA512: 22038411dfd41afad77b17a3da9ee04476ffbd4d215dcf47bdd9f14588759bc328a55d958dcebc2036b52ce4c56f79b1284eae11e56ddfaf21f0b2ee1c6a914a
2019-05-22refactor: Improve CRollingBloomFilter::reset by using std::fillJoão Barbosa
2019-05-22bench: Add benchmark for CRollingBloomFilter::resetJoão Barbosa
2019-05-22Merge #16015: validation: Hold cs_main when reading chainActive in ↵MarcoFalke
RewindBlockIndex 1609809fb2 validation: Hold cs_main when reading chainActive in RewindBlockIndex (practicalswift) Pull request description: Fixes #15980. Hold `cs_main` when reading `chainActive` (via `::ChainActive()`) in `RewindBlockIndex`. ACKs for commit 160980: MarcoFalke: utACK 1609809fb2a4c2ec15b7c26dc328e2e666bd5d57 Tree-SHA512: 54f180ab391f92f04950735c2bb337f0b7495826d2096f7a0f9a2da50bc29d08747f404a0495e33ca4edd4c842efbab4c4730d5e1a8b9da3e1249cf884268f4b
2019-05-22rpc: Mention getwalletinfo where a rescan is triggeredJoão Barbosa
2019-05-22RPC: Hint for importmulti in help output of importpubkey and importaddressKristaps Kaupe
2019-05-21Merge #13555: Tests: parameterize adjustment period in ↵MarcoFalke
versionbits_computeblockversion 2c448d6bc7 parameterize hard coded numbers referring to miner conf window (Jordan Baczuk) Pull request description: Replace hard coded values (eg. 2016) with `mainnetParams.nMinerConfirmationWindow` where appropriate. This parameterizes hard coded values in the unit test that refer to the `Miner Confirmation Window`, which currently is `2016`. This includes values not exactly 2016 but which were derived from it. Also changed `int` to `uint32_t` where appropriate to avoid compiler warnings. This makes one source of truth, and also helps people who might be adjusting this value in testing so the unit tests don't break. ACKs for commit 2c448d: Tree-SHA512: 9262e0b89c1baf7857b49fe2221b2b00f948f61317b321c4871a9182a86d6f8aadeb59d6b133e8a213cc9b31b4a417888fb1ad31caef16ccbbab1de33c4b8459
2019-05-20parameterize hard coded numbers referring to miner conf windowJordan Baczuk
2019-05-20mempool: remove unused magic number from consistency checkGregory Sanders
2019-05-20Merge #16021: p2p: Avoid logging transaction decode errors to stderrWladimir J. van der Laan
fa2b52af32f6a4b9c22c270f36e92960c29ef364 Disallow extended encoding for non-witness transactions (take 3) (MarcoFalke) Pull request description: (previous title "p2p: Disallow extended encoding for non-witness transactions (take 3)") Remote peers can send us illegally encoded txs and thus have us write to stderr. Fix that by not writing to stderr. This is a follow up to the previous (incomplete) attempts at this: * Disallow extended encoding for non-witness transactions #14039 * Add test for superfluous witness record in deserialization #15893 ACKs for commit fa2b52: laanwj: utACK fa2b52af32f6a4b9c22c270f36e92960c29ef364 ryanofsky: utACK fa2b52af32f6a4b9c22c270f36e92960c29ef364. Would change title to something like "Avoid logging transaction decode errors to stderr" instead of "Disallow extended encoding for non-witness transactions." The current title is confusing because this PR isn't really allowing or disallowing anything, just logging the condition differently. "Disallow" also seems to contradict the "Allow exceptions from..." comments in the actual code. Tree-SHA512: c66990e69b432d00dc1c5510bf976a1188664d0890a32d1e5c6459094e7e27da82a5d227627afcbc203676f5540eec74b7d9b1d71d2c62d3b2069e1781824b4d
2019-05-20Merge #16001: Give WalletModel::UnlockContext move semanticsMeshCollider
0b09a57ae Give WalletModel::UnlockContext move semantics (Pieter Wuille) Pull request description: WalletModel::UnlockContext seems to implement "move upon copy" semantics; with C++11 this can be done more safely using move semantics (making attempts to actually copy fail instead). Not a big deal if this isn't worth review time. ACKs for commit 0b09a5: Empact: utACK https://github.com/bitcoin/bitcoin/pull/16001/commits/0b09a57aec4c56712711585a4314d73d4d9b6877 jonasschnelli: utACK 0b09a57aec4c56712711585a4314d73d4d9b6877 jb55: utACK 0b09a57aec4c56712711585a4314d73d4d9b6877 Tree-SHA512: f827856586afd03666c2d9f50320776afb3dd511ac1bcd293b330f015acd1588551b163dccc97b1351301e3295f4c74d90e5754bcee89faeadf6437d7db165c8
2019-05-19Merge #12980: Allow quicker shutdowns during LoadBlockIndex()Jonas Schnelli
af5fa82b6 Allow quicker shutdowns during LoadBlockIndex() (Jonas Schnelli) Pull request description: ACKs for commit af5fa8: promag: utACK af5fa82b676a36e60eda080ca0a946bdfffefd49. practicalswift: utACK af5fa82b676a36e60eda080ca0a946bdfffefd49 Tree-SHA512: 1c64dcc5d8a9d3411553257cd5a598dcd29be981660e5bca9283c1d957dc56798abcf41d9969cd573088137597a23e48e62a8c476c463d3f176b86a10048f47b
2019-05-18Batch writes for importmultiAndrew Chow
When writing all of the imported data to the wallet, use a common WalletBatch object so that batch writes are done and the writes finish more quickly. AddKeypoolPubkey is no longer needed so it is also removed
2019-05-18Have WalletBatch automatically flush every 1000 updatesAndrew Chow
Since it now automatically flushes, we don't need to have UpgradeKeyMetadata count and flush separately
2019-05-18Add AddWatchOnlyWithDB, AddKeyOriginWithDB, AddCScriptWithDB functionsAndrew Chow
AddWatchOnlyWithDB, AddKeyOriginWithDB, and AddCScriptWithDB add their respective data to the wallet using the provided WalletBatch instead of creating a new WalletBatch object every time. This allows for batching writes to the database.
2019-05-18Merge #15957: Show "No wallets available" in open menu instead of nothingJonas Schnelli
c3ef63a52 Show loaded wallets as disabled in open menu instead of nothing (MeshCollider) Pull request description: Fixes the confusing behavior reported in #15952 ![image](https://user-images.githubusercontent.com/3211283/57224284-0e8e7f80-705d-11e9-9554-2450cc3dbb8e.png) ACKs for commit c3ef63: jonasschnelli: Tested ACK c3ef63a52f304a600fff1f9c7caa5cb804d41d43 kristapsk: tACK c3ef63a52f304a600fff1f9c7caa5cb804d41d43 Tree-SHA512: fc2b94936ca32b89e8146c65e3629785883d78660afc8838818df652a4df9185ddca6b36ebf140a7159ab42b0fa5aa72867558d4572a009be06f0831fa813d1f
2019-05-18Merge #15224: Add RNG strengthening (10ms once every minute)Wladimir J. van der Laan
3cb9ce85d0c6d01217babf0df7efc2eabde1b12f Document strenghtening (Pieter Wuille) 1d207bc46f995ad3b5ae89bb504affaca09d10b1 Add hash strengthening to the RNG (Pieter Wuille) Pull request description: This patch improves the built-in RNG using hash strengthening. At startup, and once every minute, 32 bytes of entropy are produced from the RNG, repeatedly hashed using SHA512 for 10ms, and then fed back into the RNG, together with high-precision timestamps obtained every 1000 iterations. ACKs for commit 3cb9ce: pstratem: utACK 3cb9ce85d0c6d01217babf0df7efc2eabde1b12f Tree-SHA512: 4fb6f61639b392697beb81c5f0903f79f10dd1087bed7f34de2abb5c22704a671e37b2d828ed141492491863efb1e7d1fa04408a1d32c9de2f2cc8ac406bbe57
2019-05-17scripted-diff: Rename LockAnnotation to LockAssertionpracticalswift
-BEGIN VERIFY SCRIPT- git grep -l LockAnnotation | xargs sed -i 's/LockAnnotation/LockAssertion/' -END VERIFY SCRIPT-
2019-05-17Make sure the compile-time locking promises given via LockAnnotation:s hold ↵practicalswift
also in practice at runtime (ifdef DEBUG_LOCKORDER)
2019-05-17Move LockAnnotation to make it reflect the truthpracticalswift
2019-05-17Move LockAnnotation from threadsafety.h (imported code) to sync.h (our code)practicalswift
2019-05-17Merge #15999: init: Remove dead code in LoadChainTipMarcoFalke
fa86c8aec6 init: Remove dead code in LoadChainTip (MarcoFalke) Pull request description: `LoadChainTip` sets `::ChainActive()` based on `pcoinsTip`'s best block. `LoadChainTip` is never called when that block is null, so we can remove all code from within that method that is only executed when that block is null. Fixes #15967 Inconsistent locking behavior in LoadChainTip ACKs for commit fa86c8: promag: utACK fa86c8aec611a9b9d2f53960c92419cf2a8bb92d. practicalswift: utACK fa86c8aec611a9b9d2f53960c92419cf2a8bb92d Empact: utACK https://github.com/bitcoin/bitcoin/pull/15999/commits/fa86c8aec611a9b9d2f53960c92419cf2a8bb92d laanwj: utACK fa86c8aec611a9b9d2f53960c92419cf2a8bb92d ryanofsky: utACK fa86c8aec611a9b9d2f53960c92419cf2a8bb92d. LoadChainTip isn't called currently when pcoinsTip best block is null due to this line: jamesob: utACK https://github.com/bitcoin/bitcoin/pull/15999/commits/fa86c8aec611a9b9d2f53960c92419cf2a8bb92d Tree-SHA512: 8961c0e579800a52038ac5655478468852faac055299b64d6cfdf0c213d3bf09669c4889467d09d93457f6c8b073967bb0475a137f77ddd3a3a3c03ad90001c4
2019-05-17Merge #16033: Hold cs_main when reading chainActive via getTipLocator(). ↵MarcoFalke
Remove assumeLocked(). 9402ef0739 Remove temporary method assumeLocked(). Remove LockingStateImpl. Remove redundant cs_main locks. (practicalswift) 593a8e8a2c wallet: Use chain.lock() instead of temporary chain.assumeLocked() (practicalswift) Pull request description: Fixes #16028. Problem description: `LockAnnotation lock(::cs_main)` is a guarantee to the compiler thread analysis that `::cs_main` is locked (when it couldn't be determined otherwise). Despite being annotated with the locking guarantee ... https://github.com/bitcoin/bitcoin/blob/65526fc8666fef35ef908dbc225f706bef642c7e/src/interfaces/chain.cpp#L134-L138 ... `getTipLocator()` reads `chainActive` (via `::ChainActive()`) without holding `cs_main`. This can be verified by adding the following `AssertLockHeld(cs_main)`: ``` $ git diff diff --git a/src/interfaces/chain.cpp b/src/interfaces/chain.cpp index 59623284d..9fc693a0f 100644 --- a/src/interfaces/chain.cpp +++ b/src/interfaces/chain.cpp @@ -134,6 +134,7 @@ class LockImpl : public Chain::Lock CBlockLocator getTipLocator() override { LockAnnotation lock(::cs_main); + AssertLockHeld(::cs_main); return ::ChainActive().GetLocator(); } Optional<int> findLocatorFork(const CBlockLocator& locator) override $ make check ../build-aux/test-driver: line 107: 12881 Aborted "$@" > $log_file 2>&1 FAIL: qt/test/test_bitcoin-qt ``` ACKs for commit 9402ef: MarcoFalke: utACK 9402ef0739fdcd8e989c07c0595095e9608b243c ryanofsky: utACK 9402ef0739fdcd8e989c07c0595095e9608b243c. Changes are consolidating commits and removing redundant lock2 cs_main calls Tree-SHA512: 0a030bf0c07eb53194ecc246f973ef389dd42a0979f51932bf94bdf7e90c52473ae03be49718ee1629582b05dd8e0dc020b5a210318c93378ea4ace90c0f9f72
2019-05-16Remove temporary method assumeLocked(). Remove LockingStateImpl. Remove ↵practicalswift
redundant cs_main locks.
2019-05-16wallet: Use chain.lock() instead of temporary chain.assumeLocked()practicalswift
2019-05-16Merge #15970: Utils and libraries: fix static_assert for macro HAVE_THREAD_LOCALWladimir J. van der Laan
41ab2a892456f4f3e27128a7f9237bc45cc288dd fix static_assert for macro HAVE_THREAD_LOCAL (orient) Pull request description: Utils and libraries: fix static_assert for macro HAVE_THREAD_LOCAL if define DEBUG_LOCKCONTENTION ACKs for commit 41ab2a: laanwj: utACK 41ab2a892456f4f3e27128a7f9237bc45cc288dd Tree-SHA512: 6c1d20375a70cbdef1140c544f443106d6bf6c34b1da2ddc66739f2b662a0d6b800288f48bf451a3d5937bac7e40b8ecda3a4effcc978d0093fc497410447ea7
2019-05-16Merge #14047: Add HKDF_HMAC256_L32 and method to negate a private keyWladimir J. van der Laan
8794a4b3ae4d34a4cd21a7dee9f694eef7726a4f QA: add test for HKDF HMAC_SHA256 L32 (Jonas Schnelli) 551d489416339dae8f9d896013cd060a21406e2b Add HKDF HMAC_SHA256 L=32 implementations (Jonas Schnelli) 3b64f852e400c552f031697d6a86829dc6e74bd6 QA: add test for CKey::Negate() (Jonas Schnelli) 463921bb649d644f79f9d7f0f96f10aa0d165f76 CKey: add method to negate the key (Jonas Schnelli) Pull request description: This adds a limited implementation of `HKDF` (defined by rfc5869) that supports only HMAC-SHA256 and length output of 32 bytes (will be required for v2 transport protocol). This PR also includes a method to negate a private key which is useful to enforce public keys starting with 0x02 (or 0x03) (a requirement for the v2 transport protocol). The new `CKey::Negate()` method is pretty much a wrapper around `secp256k1_ec_privkey_negate()`. Including tests. This is a subset of #14032 and a pre-requirement for the v2 transport protocol. ACKs for commit 8794a4: Tree-SHA512: 5341929dfa29f5da766ec3612784baec6a3ad69972f08b5a985a8aafdae4dae36f104a2b888d1f5d1f33561456bd111f960d7e32c2cc4fd18e48358468f26c1a