An open API service indexing awesome lists of open source software.

https://github.com/bsv-blockchain/go-p2p

Enterprise-ready P2P networking for BSV blockchain—built on libp2p with DHT
https://github.com/bsv-blockchain/go-p2p

bitcoinsv bsv go p2p teranode

Last synced: 6 months ago
JSON representation

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

Awesome Lists containing this project

README

          

# 🛰  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](https://libp2p.io/). 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](https://golang.org/doc/devel/release.html#policy).
```shell script
go get -u github.com/bsv-blockchain/go-p2p
```


## 📚 Documentation

- **API Reference** – Dive into the godocs at [pkg.go.dev/github.com/bsv-blockchain/go-p2p](https://pkg.go.dev/github.com/bsv-blockchain/go-p2p)
- **Usage Examples** – Browse practical patterns in the [examples directory](examples) showing how to create and configure P2P nodes
- **Interface Documentation** – Review the [P2PNodeI interface](interface.go) for the complete API specification
- **Core Implementation** – Examine the main [P2P node implementation](node.go) and [configuration types](types.go)


Development Build Commands

Get the [MAGE-X](https://github.com/mrz1836/mage-x) build tool for development:
```shell script
go install github.com/mrz1836/mage-x/cmd/magex@latest
```

View all build commands

```bash script
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 →](.github/docs/repository-features.md)**

Library Deployment

This project uses [goreleaser](https://github.com/goreleaser/goreleaser) for streamlined binary and library deployment to GitHub. To get started, install it via:

```bash
brew install goreleaser
```

The release process is defined in the [.goreleaser.yml](.goreleaser.yml) configuration file.

Then create and push a new Git tag using:

```bash
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](.github/AGENTS.md) before every commit:

```bash
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/`](.github/env/README.md) and provides 17x faster execution than traditional Python-based pre-commit hooks. See the [complete documentation](http://github.com/mrz1836/go-pre-commit) for details.

GitHub Workflows

All workflows are driven by modular configuration in [`.github/env/`](.github/env/README.md) — no YAML editing required.

**[View all workflows and the control center →](.github/docs/workflows.md)**

Updating Dependencies

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

```bash
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](https://github.com/mrz1836/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](examples) run via [GitHub Actions](https://github.com/bsv-blockchain/go-p2p/actions) and use [Go version 1.24.x](https://go.dev/doc/go1.24). View the [configuration file](.github/workflows/fortress.yml).

Run all tests (fast):

```bash script
magex test
```

Run all tests with race detector (slower):
```bash script
magex test:race
```


## ⚡ Benchmarks

Run the Go benchmarks:

```bash script
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](.github/CODE_STANDARDS.md).


## 🤖 AI Usage & Assistant Guidelines
Read the [AI Usage & Assistant Guidelines](.github/tech-conventions/ai-compliance.md) for details on how AI is used in this project and how to interact with AI assistants.


## 👥 Maintainers
| [Siggi](https://github.com/icellan) | [Galt](https://github.com/galt-tr) | [MrZ](https://github.com/mrz1836) |
|:--------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------:|
| [Siggi](https://github.com/icellan) | [Dylan](https://github.com/galt-tr) | [MrZ](https://github.com/mrz1836) |


## 🤝 Contributing
View the [contributing guidelines](.github/CONTRIBUTING.md) and please follow the [code of conduct](.github/CODE_OF_CONDUCT.md).

### How can I help?
All kinds of contributions are welcome :raised_hands:!
The most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon:.

[![Stars](https://img.shields.io/github/stars/bsv-blockchain/go-p2p?label=Please%20like%20us&style=social&v=1)](https://github.com/bsv-blockchain/go-p2p/stargazers)


## 📝 License

[![License](https://img.shields.io/badge/license-OpenBSV-blue?style=flat&logo=springsecurity&logoColor=white)](LICENSE)