Open-Source Non-Custodial Hosted Wallet for the BSV Blockchain (UTXOs, xPubs, Paymail & More!)

·

The Bitcoin SV (BSV) blockchain continues to evolve as a powerful platform for scalable digital currency and decentralized applications. At the heart of this ecosystem lies spv-wallet, an open-source, non-custodial hosted wallet solution designed for developers, businesses, and power users who demand control, security, and flexibility.

Built with scalability and developer experience in mind, spv-wallet supports core BSV features such as UTXOs (Unspent Transaction Outputs), extended public keys (xPubs), Paymail integration, and more—enabling seamless interaction with the BSV network while maintaining full user sovereignty over funds.

Whether you're building a payment gateway, issuing digital assets, or integrating blockchain into enterprise systems, spv-wallet offers a robust foundation for secure and efficient wallet management.

What Is spv-wallet?

spv-wallet is a comprehensive, self-hosted wallet service that operates without custody of user funds—meaning you retain full control of your private keys at all times. It’s built on the principles of decentralization and transparency, leveraging the power of Simplified Payment Verification (SPV) to validate transactions efficiently without downloading the entire blockchain.

This makes it ideal for lightweight applications, backend services, and scalable infrastructure that require fast, reliable access to BSV blockchain data.

👉 Discover how spv-wallet can power your next blockchain project

Key Features

Installation & Setup

To get started with spv-wallet, ensure you have a supported version of Go installed (preferably Go 1.19.x or later).

Install the package using:

go get -u github.com/bitcoin-sv/spv-wallet

Build the Binary

Once downloaded, compile the project:

go build -o spv-wallet cmd/*

Run the Service

After building, execute the binary:

./spv-wallet

By default, the service runs with built-in configurations optimized for development use, including SQLite for persistence and freecache for performance.

Configuration Options

spv-wallet supports multiple configuration methods, allowing flexible deployment across environments.

1. Configuration File

A sample configuration file is available at config.example.yaml. Copy this to config.yaml to customize settings like database type, API endpoints, Paymail settings, and authentication.

The default config path is the project root directory with filename config.yaml, but you can override it:

go run ./cmd/main.go -C /my/custom/config.yaml

2. Environment Variables

Override any configuration value using environment variables prefixed with SPVWALLET_. Use uppercase with underscores (_) to represent nested fields.

For example, to change the admin key under auth:

SPVWALLET_AUTH_ADMIN_KEY="your_xpub_here"

This allows secure configuration in CI/CD pipelines or cloud environments without exposing secrets in files.

3. Command-Line Flags

Limited flags are supported for essential operations:

-C, --config_file string    Custom config file path
-h, --help                  Show help message
-v, --version               Display version info
-d, --dump_config           Export current config to file specified by -C

Use --dump_config to generate a default config file from runtime values:

./spv-wallet -d -C config.yaml

Docker Compose Quickstart

For fast local setup, spv-wallet includes a start.sh script powered by Docker Compose. This launches the full stack: web frontend, backend API, database, cache, and optional Block Headers Service.

Run interactively:

./start.sh

Or use flags for automated setup:

./start.sh -db postgresql -c redis -sw true -b false

Available options:

Ports used:

You can also load previous configurations via .env.config using the -l flag.

👉 See how enterprise wallets leverage similar architectures on modern platforms

Built-in Capabilities

Paymail Integration

Paymail simplifies payments by replacing complex addresses with user-friendly identifiers. With spv-wallet’s built-in Paymail support:

UTXO Management

Precise UTXO handling allows:

Authentication & Security

The wallet supports xPub-based authentication schemes with optional request signing to prevent tampering. Admin keys can be rotated or restricted based on operational needs.

Testing & Development

All unit and integration tests are executed via GitHub Actions using Go 1.19.x. The workflow is defined in .github/workflows/run-tests.yml.

To run tests locally:

go test ./...

For benchmarks:

go test -bench=.

This ensures performance consistency across releases.

Contributing to spv-wallet

As an open-source project under active development, contributions are welcome from developers worldwide.

To contribute:

  1. Review the code standards.
  2. Follow the contributing guidelines.
  3. Adhere to the code of conduct.

Whether fixing bugs, improving docs, or adding features, your input helps strengthen the BSV ecosystem.

Frequently Asked Questions

Q: Is spv-wallet truly non-custodial?
A: Yes. No private keys are ever stored or accessed by the service. You control your xPubs and derived keys entirely.

Q: Can I use spv-wallet in production?
A: Absolutely. Its modular design and support for PostgreSQL and Redis make it suitable for high-availability deployments.

Q: Does it support testnet?
A: Yes. Configure network settings in config.yaml to switch between mainnet and testnet.

Q: How do I integrate Paymail?
A: Enable Paymail in config and set up DNS records for your domain. The service handles resolution and payment routing automatically.

Q: What databases are supported?
A: SQLite (default), PostgreSQL. Caching options include freecache and Redis.

Q: Is there a GUI available?
A: Yes. The Docker setup includes a web frontend accessible on port 3002.

👉 Explore advanced wallet solutions compatible with BSV standards

Final Thoughts

spv-wallet stands out as a versatile, secure, and developer-friendly tool in the Bitcoin SV ecosystem. By combining non-custodial principles with modern deployment practices like Docker and API-first design, it empowers teams to build scalable blockchain applications without sacrificing control or security.

Whether you're launching a fintech product, managing enterprise wallets, or experimenting with Paymail protocols, spv-wallet provides the foundation you need to succeed on BSV.

Core Keywords: spv-wallet, BSV blockchain, non-custodial wallet, Paymail, UTXO, xPub, open-source wallet, Bitcoin SV