bitcoin/src/rpc
fanquake 51c050787f
Merge bitcoin/bitcoin#27626: Parallel compact block downloads, take 3
d7f359b35e Add tests for parallel compact block downloads (Greg Sanders)
03423f8bd1 Support up to 3 parallel compact block txn fetchings (Greg Sanders)
13f9b20b4c Only request full blocks from the peer we thought had the block in-flight (Greg Sanders)
cce96182ba Convert mapBlocksInFlight to a multimap (Greg Sanders)
a90595478d Remove nBlocksInFlight (Greg Sanders)
86cff8bf18 alias BlockDownloadMap for mapBlocksInFlight (Greg Sanders)

Pull request description:

  This is an attempt at mitigating https://github.com/bitcoin/bitcoin/issues/25258 , which is a revival of https://github.com/bitcoin/bitcoin/pull/10984, which is a revival of https://github.com/bitcoin/bitcoin/pull/9447.

  This PR attempts to mitigate a single case, where high bandwidth peers can bail us out of a flakey
  peer not completing blocks for us. We allow up to 2 additional getblocktxns requests per unique block.
  This would hopefully allow the chance for an honest high bandwidth peer to hand us the transactions
  even if the first in flight peer stalls out.

  In contrast to previous effort:

  1) it will not help if subsequent peers send block headers only, so only high-bandwidth peers this time. See: https://github.com/bitcoin/bitcoin/pull/10984/files#diff-6875de769e90cec84d2e8a9c1b962cdbcda44d870d42e4215827e599e11e90e3R1411
  2)  `MAX_GETBLOCKTXN_TXN_AFTER_FIRST_IN_FLIGHT` is removed, in favor of aiding recovery during turbulent mempools
  3) We require one of the 3 block fetching slots to be an outbound peer. This can be the original offering peer, or subsequent compact blocks given by high bandwidth peers.

ACKs for top commit:
  sdaftuar:
    ACK d7f359b35e
  mzumsande:
    Code Review ACK d7f359b35e

Tree-SHA512: 54980eac179e30f12a0bd49df147b2c3d63cd8f9401abb23c7baf02f76eeb59f2cfaaa155227990d0d39384de9fa38663f88774e891600a3837ae927f04f0db3
2023-05-24 10:09:09 +01:00
..
blockchain.cpp Support up to 3 parallel compact block txn fetchings 2023-05-23 13:07:49 -04:00
blockchain.h refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00
client.cpp rpc: add descriptorprocesspsbt rpc 2023-05-04 13:06:39 -04:00
client.h refactor: use string_view for RPC named argument values 2023-01-18 17:08:58 +00:00
external_signer.cpp scripted-diff: Remove unused chainparamsbase includes 2023-05-09 15:49:19 +02:00
fees.cpp rpc: Run type check against RPCArgs 2023-01-11 17:42:09 +01:00
mempool.cpp scripted-diff: Use UniValue::find_value method 2023-05-09 18:47:14 +02:00
mempool.h
mining.cpp scripted-diff: Use UniValue::find_value method 2023-05-09 18:47:14 +02:00
mining.h
net.cpp Merge bitcoin/bitcoin#27491: refactor: Move chain constants to the util library 2023-05-09 15:42:21 +01:00
node.cpp doc: remove mention of glibc 2.10+ 2023-05-17 15:02:51 +01:00
output_script.cpp rpc: extract wallet "warnings" fields to a util helper 2023-04-10 10:41:35 -07:00
protocol.h
rawtransaction.cpp Merge bitcoin/bitcoin#25796: rpc: add descriptorprocesspsbt rpc 2023-05-22 11:28:11 -04:00
rawtransaction_util.cpp Fix clang-tidy performance-unnecessary-copy-initialization warnings 2023-05-09 18:48:52 +02:00
rawtransaction_util.h wallet: add outputs arguments to bumpfee and psbtbumpfee 2023-01-17 13:28:53 +02:00
register.h scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
request.cpp Fix clang-tidy performance-unnecessary-copy-initialization warnings 2023-05-09 18:48:52 +02:00
request.h
server.cpp move-only: Extract common/args and common/config.cpp from util/system 2023-04-19 10:48:30 +02:00
server.h
server_util.cpp move-only: Extract common/args and common/config.cpp from util/system 2023-04-19 10:48:30 +02:00
server_util.h net: add Ensure{any}Banman 2023-02-09 17:14:01 -03:00
signmessage.cpp
txoutproof.cpp refactor: Move functions to BlockManager methods 2023-05-10 19:06:53 +02:00
util.cpp Merge bitcoin/bitcoin#25796: rpc: add descriptorprocesspsbt rpc 2023-05-22 11:28:11 -04:00
util.h rpc: add descriptorprocesspsbt rpc 2023-05-04 13:06:39 -04:00