Skip to content

Experiment with IDONTWANT on Publish() #610

Closed
@raulk

Description

@raulk

The IDONTWANT control signal was recently introduced to instruct peers to suppress the propagation of messages that a node has already received from other sources (or that it is otherwise aware of). This mechanism aims to reduce unnecessary message duplication within the network.

Currently, go-libp2p-pubsub emits ⁠IDONTWANT signals only while processing incoming messages. These signals are dispatched early in the inbound pipeline (specifically, during RPC prevalidation and before messages are handed off to the application). Tests performed in controlled environments by various groups have confirmed measurable reductions in redundant traffic from this new feature.

However, there is an additional opportunity to further decrease superfluous network traffic: sending an ⁠IDONTWANT signal to mesh peers when the app invokes ⁠Publish. In this scenario, the ⁠IDONTWANT would precede the corresponding Publish RPC (in fact, the Publish RPC itself may even be discarded if the peer had previously signalled disinterest via an ⁠IDONTWANT).

This optimization is particularly useful in highly synchronized environments, such as the Ethereum network. When a block is produced, CL nodes typically race to source blobs locally (from the EL), construct sidecars, and disseminate them to peers. In 60–70% of cases the required data is already present in the local EL. In these situations, the application issues a ⁠Publish and does not need to receive the same message from its peers, so triggering an IDONTWANT would correctly signal that.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions