Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Pricing protocol should not gate connections from bootnode-mode peers

Open
#5,496 0 comments 0 reactions 1 assignee View on GitHub

Maintainers usually reply within 2 days

@acud is already working on this.

Since Jul 22, 2026.

Assessment

This issue has not been assessed yet.

Description

seen

Context

Bee's libp2p layer disconnects peers whose pricing ConnectIn / ConnectOut hook returns an error (pkg/p2p/libp2p/libp2p.go around the notifier paths, with the ErrThresholdTooLow / "protocol not supported" failure modes from pkg/pricing/pricing.go). The pricing init always opens a stream to the remote: if the remote does not advertise /swarm/pricing/1.0.0/pricing, bee tears the connection down immediately after handshake.

This makes pricing a hard prerequisite for any peer that wants to stay connected to a bee node — including bootnodes, which conceptually do not participate in chunk accounting at all (they have no payment state to advertise and no incentive to forward chunks). Independent Rust implementations like vertex have a choice between (a) carrying a pricing stub in every bootnode just to satisfy bee's connect notifier, or (b) being forced to disconnect after handshake.

What we are asking for

Make the pricing protocol optional for connections where at least one side advertises itself as a bootnode (whether via the existing BootnodeMode flag, the node type that already drives hive's peersHandler early return, or any other signal bee already has). Concretely: skip the pricing init step entirely when the local node is bootnode-mode, and tolerate "protocol not supported" from the remote when the remote signals bootnode-mode. That removes the requirement for a downstream impl to carry a pricing stub purely for connection-keepalive.

Why this is the right shape

  • Pricing's semantic content is chunk accounting; bootnodes are explicitly outside that subsystem. There is no event a bootnode would generate that pricing needs to observe, and no threshold a bootnode has to announce.
  • Bootnodes already short-circuit hive ingestion via BootnodeMode (pkg/hive/hive.go:283-284). Doing the same for pricing closes a parallel "bootnodes do not participate in this accounting subsystem" hole.
  • Independent implementations are forced to maintain a stub today purely as a compatibility shim. Removing the requirement upstream makes the cross-impl story cleaner and removes a class of "stub kept the connection alive but contributed nothing to operator visibility" bugs.

Acceptance criteria

  • A bee node configured in BootnodeMode does not initiate a pricing stream on outbound / inbound connection establishment.
  • A bee node connecting to a peer that does not advertise /swarm/pricing/1.0.0/pricing does not disconnect on that grounds alone when the remote is signalled as bootnode-mode.
  • Existing pricing / accounting flows between non-bootnode peers are unchanged.
Dominant language
Go
Stars
1.5k
Forks
390
Avg merge
2d 11h
Merged PRs (30d)
23

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ethersphere/bee

All issues in ethersphere/bee

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.