2

From the perspective of a full node participant in the network, why is it a bad idea to convey to a peer that a transaction has been rejected because its either a conflict transaction/high fee transaction or a transaction which already known to it?

I noticed that in the Bitcoin Core source code that REJECT_CONFLICT is set at 0x102 which is greater than REJECT_INTERNAL.

if (state.GetRejectCode() < REJECT_INTERNAL) // Never send AcceptToMemoryPool's internal codes over P2P
    pfrom->PushMessage(NetMsgType::REJECT, strCommand, (unsigned char)state.GetRejectCode(),
                       state.GetRejectReason().substr(0, MAX_REJECT_MESSAGE_LENGTH), inv.hash);

Bitcoin Core code excerpt from src/main.cpp.

cdecker
  • 9,498
  • 1
  • 39
  • 61
rny
  • 2,418
  • 1
  • 15
  • 26

1 Answers1

2

Because it is a waste of bandwidth to convey information that your peers should be calculating themselves anyways. It is also a bad idea to rely on peer's calculations of whether a transaction should be rejected or not because they could be lying to you.

k kurokawa
  • 2,072
  • 15
  • 28