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
- Non-custodial architecture: Users maintain complete ownership of their keys and funds.
- Paymail support: Send and receive payments using human-readable email-style addresses (e.g.,
[email protected]). - xPub management: Hierarchical deterministic (HD) wallet support via extended public keys for secure key derivation.
- UTXO tracking: Full visibility and control over unspent outputs for precise transaction construction.
- Configurable storage: Choose between SQLite, PostgreSQL, Redis, or freecache for database and caching layers.
- API-first design: RESTful interface enables easy integration with web, mobile, and backend systems.
- Docker-ready: Comes with
docker-compose.ymland startup scripts for rapid deployment.
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-walletBuild the Binary
Once downloaded, compile the project:
go build -o spv-wallet cmd/*Run the Service
After building, execute the binary:
./spv-walletBy 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.yaml2. 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 -CUse --dump_config to generate a default config file from runtime values:
./spv-wallet -d -C config.yamlDocker 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.shOr use flags for automated setup:
./start.sh -db postgresql -c redis -sw true -b falseAvailable options:
-db: Choose database (sqlite, postgresql)-c: Select cache (freecache, redis)-sw: Run SPV Wallet core service-b: Enable Block Headers Service
Ports used:
3002: Web frontend8180: Web backend (API)3003: Core SPV Wallet service5432: PostgreSQL6379: Redis8080: Block Headers Service
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:
- Users can register and resolve Paymail addresses.
- Signing can be enabled or disabled based on security requirements.
- BEEF (Batched Encrypted Extensible Format) support ensures rich transaction metadata.
UTXO Management
Precise UTXO handling allows:
- Real-time balance calculation.
- Efficient coin selection strategies.
- Custom transaction building for advanced use cases.
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:
- Review the code standards.
- Follow the contributing guidelines.
- 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