A bitcoin wallet library that supports silent payments out of the box.
[!WARNING] This library is currently in an experimental stage and should be used with caution. It has not undergone extensive testing and may contain bugs, vulnerabilities, or unexpected behavior. Mainnet use is strictly NOT recommended.
Silent payments in Bitcoin is a new way to receive private payments from anyone on a single static address without on-chain linkability of payments or a need for on-chain notifications.
This library is a JavaScript/TypeScript implementation of silent payments. The library exposes core functionalities to send to a silent payment address, receive payments to a silent payment address and spend from a silent payment address. The library also provides a simple wallet implementation that provides support for silent payments out of the box.
Read more about silent payments in BIP 352 and Ruben Somsen's post.
The project is divided into four modules.
├── packages
│ ├── core
│ │ ├── src
│ │ └── test
│ ├── esplora
│ │ ├── src
│ │ └── test
│ ├── level
│ │ ├── src
│ │ └── test
│ └── wallet
│ ├── src
│ └── test
Directory | Description |
---|---|
packages/core |
Contains core library functions that are needed to support silent payment integration in a wallet. |
packages/esplora |
Provides an Esplora client which implements the network interface. |
packages/level |
Provides a file-based key value database which implements the db interface. |
packages/wallet |
Encompasses the wallet class which is responsible for all wallet-operations. |
The project is currently in a pre-alpha stage, intended for demonstration and prototyping. The wallet may have known/unknown bugs. Basic silent payments functionality works on regtest
and testnet
networks, but it's not recommended for mainnet
use.
If you're interested in contributing to the project, explore the open issues and submit a PR.
The project is under active development by a few motivated Bitcoin devs. Any contribution for features, tests, docs and other fixes/upgrades is encouraged and welcomed. The maintainers will use the PR thread to provide reviews and suggestions, and are generally proactive at merging good contributions.
Few directions for new contributors:
The list of issues is a good place to look for contributable tasks and open problems.
Issues marked with good first issue
are good places to get started.
Tests are a good place to start gathering a contextual understanding of the codebase.
Reviewing open PRs are a good place to understand the codebase and the contribution process.
Search for TODO
s in the codebase to find in-line marked code todos and smaller improvements.
The dev community lurks in a small corner of Discord here (say 👋, if you drop there from this readme).
Dev discussions predominantly happen via FOSS best practices, and by using Github as the Community Forum.
By using this library, you acknowledge the following: