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.

1 Answer 1


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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.