Skip to content

BSV Blockchain Wire Protocol

License

Notifications You must be signed in to change notification settings

bsv-blockchain/go-wire

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

253 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🛜  go-wire

BSV Blockchain Wire Protocol


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
🤝 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.

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

📚 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 environment files 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

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.


🤖 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

BSV Blockchain Wire Protocol

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 5

Languages