Skip to content

Enterprise-ready P2P networking for BSV blockchain—built on libp2p with DHT

License

Notifications You must be signed in to change notification settings

bsv-blockchain/go-p2p

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

160 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🛰  go-p2p

Enterprise-ready P2P networking for BSV blockchain—built on libp2p with DHT.


Release Go Version License


CI / CD    Build Last Commit      Quality    Go Report Coverage
Security    Scorecard Security      Community    Contributors Sponsor


Project Navigation

📦 Installation 🧪 Examples & Tests 📚 Documentation
🛠️ Code Standards ⚡ Benchmarks 🤖 AI Usage
🤝 Contributing 👥 Maintainers ⚖️ License

🧩 What's Inside

go-p2p is a comprehensive peer-to-peer networking library for BSV blockchain nodes, built on top of libp2p. It provides robust networking capabilities for distributed blockchain applications with support for both public and private networks.

Core Components

  • P2PNode - The main networking node implementation that manages peer connections, message routing, and network discovery
  • P2PNodeI - Interface defining the complete P2P networking API for testability and modularity
  • P2PConfig - Configuration structure for network parameters, bootstrap peers, and security settings
  • Handler - Function type for processing incoming topic messages in pub/sub communications

Key Features

  • Peer Discovery - Automatic peer discovery using Kademlia DHT (Distributed Hash Table)
  • Pub/Sub Messaging - Topic-based message distribution using GossipSub protocol
  • Direct Peer Communication - Stream-based messaging for direct peer-to-peer communication
  • Private Networks - Support for isolated private networks using pre-shared keys
  • Connection Management - Automatic connection handling, retry logic, and peer lifecycle management
  • Metrics & Monitoring - Built-in bandwidth tracking, peer statistics, and connection monitoring
  • Security - Message signing/verification, peer authentication, and encrypted communications

Network Modes

  • Public Network - Connect to the global IPFS DHT for open peer discovery
  • Private Network - Create isolated networks using shared keys for controlled environments
  • Hybrid Mode - Static peer connections combined with dynamic discovery

📦 Installation

go-p2p requires a supported release of Go.

go get -u github.com/bsv-blockchain/go-p2p

📚 Documentation


Development Build Commands

Get the MAGE-X build tool for development:

go install github.com/mrz1836/mage-x/cmd/magex@latest

View all build commands

magex help
Repository Features

This repository includes 25+ built-in features covering CI/CD, security, code quality, developer experience, and community tooling.

View the full Repository Features list →

Library Deployment

This project uses goreleaser for streamlined binary and library deployment to GitHub. To get started, install it via:

brew install goreleaser

The release process is defined in the .goreleaser.yml configuration file.

Then create and push a new Git tag using:

magex version:bump push=true bump=patch branch=master

This process ensures consistent, repeatable releases with properly versioned artifacts and citation metadata.

Pre-commit Hooks

Set up the Go-Pre-commit System to run the same formatting, linting, and tests defined in AGENTS.md before every commit:

go install github.com/mrz1836/go-pre-commit/cmd/go-pre-commit@latest
go-pre-commit install

The system is configured via modular env files in .github/env/ and provides 17x faster execution than traditional Python-based pre-commit hooks. See the complete documentation for details.

GitHub Workflows

All workflows are driven by modular configuration in .github/env/ — no YAML editing required.

View all workflows and the control center →

Updating Dependencies

To update all dependencies (Go modules, linters, and related tools), run:

magex deps:update

This command ensures all dependencies are brought up to date in a single step, including Go modules and any tools managed by MAGE-X. It is the recommended way to keep your development environment and CI in sync with the latest versions.


🧪 Examples & Tests

All unit tests and examples run via GitHub Actions and use Go version 1.24.x. View the configuration file.

Run all tests (fast):

magex test

Run all tests with race detector (slower):

magex test:race

⚡ Benchmarks

Run the Go benchmarks:

magex bench

Note: Comprehensive benchmarks for P2P operations (peer discovery, message throughput, connection establishment) are planned for future releases. The current focus is on correctness and stability of the networking implementation.


🛠️ Code Standards

Read more about this Go project's code standards.


🤖 AI Usage & Assistant Guidelines

Read the AI Usage & Assistant Guidelines for details on how AI is used in this project and how to interact with AI assistants.


👥 Maintainers

Siggi Galt MrZ
Siggi Dylan MrZ

🤝 Contributing

View the contributing guidelines and please follow the code of conduct.

How can I help?

All kinds of contributions are welcome 🙌! The most basic way to show your support is to star 🌟 the project, or to raise issues 💬.

Stars


📝 License

License

About

Enterprise-ready P2P networking for BSV blockchain—built on libp2p with DHT

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 6