Commit graph

378 commits

Author SHA1 Message Date
James Dorfman
67a5234365 Merge a063647413 into merged_master (Bitcoin PR bitcoin/bitcoin#23280) 2023-06-12 17:58:49 +00:00
Byron Hambly
f97b7f0c64 Merge 84d921e79c into merged_master (Bitcoin PR bitcoin/bitcoin#23465) 2023-06-06 09:00:13 +00:00
James Dorfman
9ff4b8e6d6 Merge eaf1c56502 into merged_master (Bitcoin PR bitcoin/bitcoin#23692) 2023-06-02 15:51:00 +00:00
Byron Hambly
858b1793b6 Merge 42b25025fa into merged_master (Bitcoin PR bitcoin/bitcoin#23644) 2023-06-02 11:28:46 +00:00
Byron Hambly
9b87adeca8 Merge df562d698a into merged_master (Bitcoin PR bitcoin/bitcoin#23637) 2023-06-01 10:00:47 +00:00
Byron Hambly
5a723e538b Merge 1c06e1a7b6 into merged_master (Bitcoin PR bitcoin/bitcoin#23437) 2023-06-01 09:15:23 +00:00
Byron Hambly
32a72637f7 Merge 16d698cdcf into merged_master (Bitcoin PR bitcoin/bitcoin#23517) 2023-05-31 09:33:07 +00:00
James Dorfman
c134b5a012 Merge 064c729a96 into merged_master (Bitcoin PR bitcoin/bitcoin#23512) 2023-05-31 06:23:55 +00:00
Byron Hambly
002abaf5a3 Merge 4018e23aa7 into merged_master (Bitcoin PR bitcoin/bitcoin#23573) 2023-05-30 15:39:59 +00:00
Byron Hambly
433090862e Merge d0923098c6 into merged_master (Bitcoin PR bitcoin/bitcoin#23491) 2023-05-26 11:00:12 +00:00
Byron Hambly
61e7d675db Merge cf63d635b1 into merged_master (Bitcoin PR bitcoin/bitcoin#23499) 2023-05-26 10:39:53 +00:00
Byron Hambly
c8c72768d0 Merge 7f0f853373 into merged_master (Bitcoin PR bitcoin/bitcoin#23005) 2023-05-25 08:59:33 +00:00
Byron Hambly
0b69a1e205 Merge 1ba74123f9 into merged_master (Bitcoin PR bitcoin/bitcoin#23004) 2023-05-25 08:24:05 +00:00
Byron Hambly
2da8f66309 Merge 38b2a0a3f9 into merged_master (Bitcoin PR bitcoin/bitcoin#23173) 2023-05-24 11:45:57 +00:00
Byron Hambly
8299bec8a2 Merge c001da306b into merged_master (Bitcoin PR bitcoin/bitcoin#23325) 2023-05-14 10:52:15 +00:00
Byron Hambly
2b8eef42dd Merge 1884ce2f4c into merged_master (Bitcoin PR bitcoin/bitcoin#22937) 2023-05-11 12:38:50 +00:00
Byron Hambly
a4b97d5a9b Merge ec4e43c21c into merged_master (Bitcoin PR #23235) 2023-05-11 10:44:10 +00:00
James Dorfman
4ffc594d4a Merge a9f6428708 into merged_master (Bitcoin PR bitcoin/bitcoin#23003) 2023-05-11 05:35:51 +00:00
Byron Hambly
9b7c9154fe Merge c4fc899442 into merged_master (Bitcoin PR bitcoin/bitcoin#22950) 2023-05-09 12:21:13 +00:00
Byron Hambly
498907a233 Merge 816e15ee81 into merged_master (Bitcoin PR bitcoin/bitcoin#22951) 2023-05-09 11:50:39 +00:00
Byron Hambly
cca3f919f8 Merge 9e530c6352 into merged_master (Bitcoin PR bitcoin/bitcoin#20487) 2023-05-09 11:22:04 +00:00
Byron Hambly
d1a87496d0 Merge cdb4dfcbf1 into merged_master (Bitcoin PR bitcoin/bitcoin#20452) 2023-05-09 10:47:06 +00:00
Byron Hambly
eea9829aa6 Merge 825f4a64e6 into merged_master (Bitcoin PR bitcoin/bitcoin#22976) 2023-04-24 11:40:49 +00:00
James Dorfman
7e2135c61c Merge 488e745560 into merged_master (Bitcoin PR bitcoin/bitcoin#12677) 2023-04-22 02:01:59 +00:00
Byron Hambly
c942f6af15 Merge cdf12c7b3d into merged_master (Bitcoin PR bitcoin/bitcoin#22895) 2023-04-21 12:03:29 +00:00
Byron Hambly
8d6c4da78c Merge 528e08119f into merged_master (Bitcoin PR bitcoin/bitcoin#22219) 2023-04-21 09:23:54 +00:00
Byron Hambly
b70d32b713 Merge e9d6eb1b80 into merged_master (Bitcoin PR bitcoin/bitcoin#22217) 2023-04-10 13:07:29 +00:00
James Dorfman
640ebd5e5a Merge 62cb4009c2 into merged_master (Bitcoin PR bitcoin/bitcoin#22215) 2023-04-10 02:27:52 +00:00
Byron Hambly
9768c23819 Merge eaf09bda4a into merged_master (Bitcoin PR bitcoin/bitcoin#22609) 2023-04-06 13:04:44 +00:00
James Dorfman
ea7450b099 Merge 4b1fb50def into merged_master (Bitcoin PR bitcoin/bitcoin#22528) 2023-03-31 18:53:21 +00:00
Byron Hambly
d60b269083 Merge 31fef69c03 into merged_master (Bitcoin PR bitcoin/bitcoin#22047) 2023-03-31 18:32:13 +00:00
James Dorfman
44df9bbb73 Merge 951850bebf into merged_master (Bitcoin PR #22371) 2023-03-16 14:23:27 +00:00
Pablo Greco
e7fea1d50b Fix underflow when blocks are ahead of headers 2023-02-21 06:22:25 -03:00
Glenn Willen
f5c79950a1 When people ask us for headers we do not have (over REST or RPC), do something reasonable. 2022-12-12 09:53:42 -08:00
Glenn Willen
7c555578b7 Add a flag for header-trimming; clear P2P network feature bits when enabled. 2022-12-12 09:46:07 -08:00
MarcoFalke
a063647413
Merge bitcoin/bitcoin#23280: init: Coalesce Chainstate loading sequence between {,non-}unittest codepaths
7f15eff2dd style-only: Remove redundant scope in *Chainstate (Carl Dong)
89bec827fd Collapse the 2 cs_main locks in LoadChainstate (Carl Dong)
3b1584b794 Remove all #include // for * comments (Carl Dong)
9a5a5a3d08 test/setup: Use LoadChainstate (Carl Dong)
c541da0d62 node/chainstate: Add options for in-memory DBs (Carl Dong)
ceb9790341 node/caches: Remove intermediate variables (Carl Dong)
ac4bf138b8 node/caches: Extract cache calculation logic (Carl Dong)
15f2e33bb3 validation: VerifyDB only needs Consensus::Params (Carl Dong)
4da9c076d1 node/chainstate: Decouple from ShutdownRequested (Carl Dong)
05441c2dc5 node/chainstate: Decouple from GetTime (Carl Dong)
2414ebc18b init: Delay RPC block notif until warmup finished (Carl Dong)
8d466a8504 Move -checkblocks LogPrintf to AppInitMain (Carl Dong)
aad8d59789 node/chainstate: Reduce coupling of LogPrintf (Carl Dong)
b345979a2b node/chainstate: Decouple from concept of uiInterface (Carl Dong)
ca7c0b934d Split off VerifyLoadedChainstate (Carl Dong)
adf4912d77 node/chainstate: Remove do/while loop (Carl Dong)
975235ca0a Move init logistics message for BAD_GENESIS_BLOCK to init.cpp (Carl Dong)
8715658983 Move mempool nullptr Assert out of LoadChainstate (Carl Dong)
9162a4f93e node/chainstate: Decouple from concept of NodeContext (Carl Dong)
c7a5c46e6f node/chainstate: Decouple from ArgsManager (Carl Dong)
ae9121f958 node/chainstate: Decouple from stringy errors (Carl Dong)
cbac28b72f node/chainstate: Decouple from GetTimeMillis (Carl Dong)
cb64af9635 node: Extract chainstate loading sequence (Carl Dong)

Pull request description:

  This PR:
  1. Coalesce the Chainstate loading sequence between `AppInitMain` and `*TestingSetup` (which makes it more tested)
  2. Makes the Chainstate loading sequence reusable in preparation for future work extracting out our consensus engine.

  Code-wise, this PR:
  1. Extracts `AppInitMain`'s Chainstate loading sequence into a `::LoadChainstateSequence` function
  2. Makes this `::LoadChainstateSequence` function reusable by
      1. Decoupling it from various concepts (`ArgsManager`, `uiInterface`, etc)
      2. Making it report errors using an `enum` rather than by setting a `bilingual_str`
  3. Makes `*TestingSetup` use this new `::LoadChainstateSequence`

  Reviewers: Aside from commentary, I've also included `git diff` flags of interest in the commit messages which I hope will aid review!

ACKs for top commit:
  ryanofsky:
    Code review ACK 7f15eff2dd. Thanks for updates!
  MarcoFalke:
    review ACK 7f15eff2dd 💳

Tree-SHA512: fb9a6cbd1c511a52b477c62a5e68e53a8be5dec2fff0e44a279966afb91efbab44bf1fe7c6b1519f8464ecc25f42dd4bae8e1efbf55ee91fc90fa0b92e3a83e2
2021-12-10 17:17:43 +01:00
Carl Dong
7f15eff2dd style-only: Remove redundant scope in *Chainstate
I strongly recommend reviewing with the following git-diff flags:
  --ignore-space-change
2021-12-07 14:48:49 -05:00
Carl Dong
89bec827fd Collapse the 2 cs_main locks in LoadChainstate 2021-12-07 14:48:49 -05:00
Carl Dong
3b1584b794 Remove all #include // for * comments 2021-12-07 14:48:49 -05:00
Carl Dong
c541da0d62 node/chainstate: Add options for in-memory DBs
[META] In a future commit, these options will be used in TestingSetup to
       ensure that the DBs are in-memory.
2021-12-07 14:48:49 -05:00
Carl Dong
ceb9790341 node/caches: Remove intermediate variables 2021-12-07 14:48:49 -05:00
Carl Dong
ac4bf138b8 node/caches: Extract cache calculation logic
I strongly recommend reviewing with the following git-diff flags:
  --color-moved=dimmed_zebra --color-moved-ws=allow-indentation-change

[META] In a future commit, this function will be re-used in TestingSetup
       so that the behaviour matches across test and non-test init
       codepaths.
2021-12-07 14:48:49 -05:00
Carl Dong
15f2e33bb3 validation: VerifyDB only needs Consensus::Params
Previously we were passing in CChainParams, when VerifyDB only needed
the Consensus::Params subset.
2021-12-07 14:48:49 -05:00
Carl Dong
4da9c076d1 node/chainstate: Decouple from ShutdownRequested
...instead allow optionally passing in a std::function<bool()>
2021-12-07 14:48:49 -05:00
Carl Dong
05441c2dc5 node/chainstate: Decouple from GetTime
...instead pass in a std::function<int64_t()>

Note that the static_cast is needed (apparently) for the compiler to
know which overloaded GetTime to choose.
2021-12-07 14:48:49 -05:00
Carl Dong
2414ebc18b init: Delay RPC block notif until warmup finished
See added code comment for more details.
2021-12-07 14:48:06 -05:00
Jon Atack
275e9390e1 mining, refactor: add m_mempool.cs thread safety lock assertions
in src/node/miner to:

- BlockAssembler::addPackageTxs()
- BlockAssembler::SkipMapTxEntry()
- BlockAssembler::UpdatePackagesForAdded()

These functions have thread safety lock annotations in
their declarations but are missing the corresponding
run-time lock assertions in their definitions.

Per doc/developer-notes.md: "Combine annotations in function
declarations with run-time asserts in function definitions."
2021-12-07 15:01:43 +01:00
MarcoFalke
42b25025fa
Merge bitcoin/bitcoin#23644: wallet: Replace confusing getAdjustedTime() with GetTime()
fa37e798b2 wallet: Replace confusing getAdjustedTime() with GetTime() (MarcoFalke)

Pull request description:

  Setting `nTimeReceived` to the adjusted time has several issues:

  * `m_best_block_time` is set to the "unadjusted" time, thus a comparison of the two times is like comparing apples to oranges. In the worst case this opens up an attack vector where remote peers can force a premature re-broadcast of wallet txs.
  * The RPC documentation for `"timereceived"` doesn't mention that the network adjusted time is used, possibly confusing users when the time reported by RPC is off by a few seconds compared to their local timestamp.

  Fix all issues by replacing the call with `GetTime()`. Also a style fix: Use non-narrowing integer conversion in the RPC method.

ACKs for top commit:
  theStack:
    Code-review ACK fa37e798b2
  shaavan:
    crACK fa37e798b2

Tree-SHA512: 8d020ba400521246b7aed4b6c41319fc70552e8c69e929a5994500375466a9edac02a0ae64b803dbc6695df22276489561a23bd6e030c44c97d288f7b9b2b3fa
2021-12-07 09:02:06 +01:00
Carl Dong
8d466a8504 Move -checkblocks LogPrintf to AppInitMain 2021-12-06 16:41:58 -05:00
Carl Dong
aad8d59789 node/chainstate: Reduce coupling of LogPrintf
...by moving the try/catch out of LoadChainstate

I strongly recommend reviewing with the following git-diff flags:
  --color-moved=dimmed_zebra --color-moved-ws=allow-indentation-change
2021-12-06 16:41:58 -05:00