mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-11 12:22:39 -03:00
rpc: warn that nodes ignore requests for old stale blocks
This is an anti-fingerprinting measure. See BlockRequestAllowed in net_processing. It has been around since 2014, but alternative clients might still serve these blocks. See also:d8b4b49667
,85da07a5a0
,a2be3b66b5
,3788a8479b
This commit is contained in:
parent
5291933fed
commit
f39d9269eb
2 changed files with 5 additions and 1 deletions
|
@ -1738,6 +1738,8 @@ std::optional<std::string> PeerManagerImpl::FetchBlock(NodeId peer_id, const CBl
|
|||
LOCK(cs_main);
|
||||
|
||||
// Mark block as in-flight unless it already is (for this peer).
|
||||
// If the peer does not send us a block, vBlocksInFlight remains non-empty,
|
||||
// causing us to timeout and disconnect.
|
||||
// If a block was already in-flight for a different peer, its BLOCKTXN
|
||||
// response will be dropped.
|
||||
if (!BlockRequested(peer_id, block_index)) return "Already requested from this peer";
|
||||
|
|
|
@ -428,7 +428,9 @@ static RPCHelpMan getblockfrompeer()
|
|||
"getblockfrompeer",
|
||||
"Attempt to fetch block from a given peer.\n\n"
|
||||
"We must have the header for this block, e.g. using submitheader.\n"
|
||||
"Subsequent calls for the same block and a new peer will cause the response from the previous peer to be ignored.\n\n"
|
||||
"Subsequent calls for the same block and a new peer will cause the response from the previous peer to be ignored.\n"
|
||||
"Peers generally ignore requests for a stale block that they never fully verified, or one that is more than a month old.\n"
|
||||
"When a peer does not respond with a block, we will disconnect.\n\n"
|
||||
"Returns an empty JSON object if the request was successfully scheduled.",
|
||||
{
|
||||
{"blockhash", RPCArg::Type::STR_HEX, RPCArg::Optional::NO, "The block hash to try to fetch"},
|
||||
|
|
Loading…
Reference in a new issue