libp2p / libp2p/cpp-libp2p

update gossipsub

Open
#297 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
492
Forks
130
PR merge metrics
No merged PRs in 30d

Description

  • general
    • (compare with other versions, e.g. rust)
    • allow multiple protocol versions in config, remember peer protocol version
  • /floodsub/1.0.0 (spec)
    • broadcast message to all floodsub peers
  • /meshsub/1.0.0 (spec)
    • publish to fanout when not subscribed
  • /meshsub/1.1.0 (spec)
    • (check PRUNE backoff works as expected)
    • explicit peers - always connect and broadcast without GRAFT
    • flood publishing - broadcast authored message to all connected peers
    • peer scoring
    • adaptive gossip dissemination - gossip to percentage of peers instead of count
    • opportunistic GRAFT to improve mesh median score
    • maintain specified number of outbound connections to avoid eclipse attack
  • /meshsub/1.2.0 (spec)
    • IDONTWANT to prevent duplicate broadcast
      • broadcast IDONTWANT to mesh peers after receiving full message
      • don't broadcast these message to that peer after receiving IDONTWANT
    • IDONTWANT to cancel IWANT
      • send IDONTWANT to cancel pending IWANT after receiving full message
      • don't reply to IWANT for these messages for that peer after receiving IDONTWANT
    • config max IDONTWANT messages

Contributor guide

No contributing guide indexed for this repository

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.

Research direction

Start by comparing the existing gossipsub implementation with the linked Rust implementation and the gossipsub v1.0, v1.1, and v1.2 specifications. Work through the checklist for protocol negotiation, message propagation, peer scoring, mesh behavior, and IDONTWANT handling; done means the requested protocol versions and behaviors are implemented and verified.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
distributed-systems, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.