https://github.com/bsv-blockchain/go-wire
BSV Blockchain Wire Protocol
https://github.com/bsv-blockchain/go-wire
bitcoin blockchain bsv go-wire golang protocol teranode
Last synced: 4 months ago
JSON representation
BSV Blockchain Wire Protocol
- Host: GitHub
- URL: https://github.com/bsv-blockchain/go-wire
- Owner: bsv-blockchain
- License: isc
- Created: 2025-06-30T15:55:29.000Z (12 months ago)
- Default Branch: master
- Last Pushed: 2026-01-30T18:26:50.000Z (5 months ago)
- Last Synced: 2026-01-31T11:24:29.150Z (5 months ago)
- Topics: bitcoin, blockchain, bsv, go-wire, golang, protocol, teranode
- Language: Go
- Homepage:
- Size: 1.18 MB
- Stars: 3
- Watchers: 0
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: .github/SECURITY.md
- Support: .github/SUPPORT.md
- Agents: .github/AGENTS.md
Awesome Lists containing this project
README
### Project Navigation
📦 Installation
🧪 Examples & Tests
📚 Documentation
🤝 Contributing
🛠️ Code Standards
⚡ Benchmarks
🤖 AI Usage
📝 License
👥 Maintainers
## 🧩 What's Inside
Package wire implements the bitcoin wire protocol. A comprehensive suite of
tests with 100% test coverage is provided to ensure proper functionality.
This package has intentionally been designed so it can be used as a standalone
package for any projects needing to interface with bitcoin peers at the wire
protocol level.
## 📦 Installation
**go-wire** requires a [supported release of Go](https://golang.org/doc/devel/release.html#policy).
```shell script
go get -u github.com/bsv-blockchain/go-wire
```
## 📚 Documentation
- **API Reference** – Dive into the godocs at [pkg.go.dev/github.com/bsv-blockchain/go-wire](https://pkg.go.dev/github.com/bsv-blockchain/go-wire)
- **Usage Examples** – Browse practical patterns either the [examples directory](examples) or view the example functions
- **Benchmarks** – Check the latest numbers in the [benchmark results](#benchmark-results)
- **Test Suite** – Review both the [unit tests](common_test.go) and [fuzz tests](wire_fuzz_test.go) (powered by [`testify`](https://github.com/stretchr/testify))
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 environment files](.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-wire/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](wire_benchmark_test.go):
```bash script
magex bench
```
### Benchmark Results
| Benchmark | Iterations | ns/op | B/op | allocs/op |
|--------------------|-----------:|-----------:|--------:|----------:|
| WriteVarInt1 | 39,459,027 | 29.66 | 0 | 0 |
| WriteVarInt3 | 20,199,483 | 58.82 | 0 | 0 |
| WriteVarInt5 | 19,839,806 | 60.09 | 0 | 0 |
| WriteVarInt9 | 20,289,205 | 58.85 | 0 | 0 |
| ReadVarInt1 | 34,616,506 | 34.46 | 0 | 0 |
| ReadVarInt3 | 16,991,710 | 70.22 | 0 | 0 |
| ReadVarInt5 | 17,296,663 | 69.03 | 0 | 0 |
| ReadVarInt9 | 17,292,540 | 68.81 | 0 | 0 |
| ReadVarStr4 | 19,168,129 | 61.24 | 8 | 2 |
| ReadVarStr10 | 17,873,167 | 66.25 | 32 | 2 |
| WriteVarStr4 | 26,292,486 | 44.63 | 8 | 1 |
| WriteVarStr10 | 24,418,180 | 48.74 | 16 | 1 |
| ReadOutPoint | 28,408,053 | 41.95 | 0 | 0 |
| WriteOutPoint | 37,229,792 | 31.65 | 0 | 0 |
| ReadTxOut | 11,092,542 | 108.00 | 0 | 0 |
| WriteTxOut | 19,576,215 | 61.21 | 0 | 0 |
| ReadTxIn | 8,187,141 | 148.00 | 0 | 0 |
| WriteTxIn | 12,787,064 | 93.58 | 0 | 0 |
| DeserializeTxSmall | 2,368,681 | 510.50 | 208 | 5 |
| SerializeTx | 4,343,654 | 277.00 | 0 | 0 |
| ReadBlockHeader | 7,429,682 | 160.40 | 0 | 0 |
| WriteBlockHeader | 7,074,567 | 169.20 | 12 | 3 |
| DecodeGetHeaders | 198,742 | 5896.00 | 20480 | 2 |
| DecodeHeaders | 2,761 | 431936.00 | 229380 | 2 |
| DecodeGetBlocks | 197,142 | 5944.00 | 20480 | 2 |
| DecodeAddr | 8,107 | 144051.00 | 89730 | 1002 |
| DecodeInv | 464 | 2573857.00 | 2203667 | 2 |
| DecodeNotFound | 463 | 2583316.00 | 2203666 | 2 |
| DecodeMerkleBlock | 736,904 | 1598.00 | 4368 | 3 |
| TxHash | 2,120,943 | 566.40 | 256 | 2 |
| DoubleHashB | 6,433,498 | 186.70 | 32 | 1 |
| DoubleHash | 6,658,620 | 182.00 | 0 | 0 |
> These benchmarks reflect fast, allocation-free lookups for most retrieval functions, ensuring optimal performance in production environments.
> Performance benchmarks for the core functions in this library, executed on an Apple M1 Max (ARM64).
## 🛠️ 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
| [
](https://github.com/icellan) | [
](https://github.com/galt-tr) | [
](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:.
[](https://github.com/bsv-blockchain/go-wire/stargazers)
## 📝 License
[](LICENSE)