
Bark: Ark on bitcoin
Fast, low-cost, self-custodial payments on bitcoin.
Docs ·
Issues ·
Website ·
Blog ·
YouTube
[](https://gitlab.com/ark-bitcoin/bark/tags)
[](LICENSE)
[](CONTRIBUTING.md)
[](https://community.second.tech)
Bark is an implementation of the Ark protocol on bitcoin, led by [Second](https://second.tech). The Ark protocol is a bitcoin layer 2 for making fast, low-cost, self-custodial payments at scale. Ark uses a client-server model to enable users to transact off-chain while still being able to "exit" their balances on-chain at any time.
The project consists of:
- The Ark wallet: **bark**
- The Ark server: **captaind**
- A set of libraries containing all protocol primitives
## Get started
- [**Make your first Ark transactions**](https://docs.second.tech/getting-started/): Step-by-step guide to set up a CLI wallet, get sats from [our faucet](https://signet.2nd.dev), and buy some treats from [our test store](https://signet.2nd.dev/store).
- [**Compile from source**](https://docs.second.tech/getting-started/optional/compile-from-source/)
- [**Set up an Ark server**](https://docs.second.tech/run-ark-server/): For patient folks looking to do more in-depth testing!
## What if I don't speak Rust?
No Rust, no problem!
**barkd** is an Ark wallet that runs as a daemon and exposes a REST API over HTTP. It's well suited for power users and great for automation—think web shops, Telegram/Discord bots, and similar use cases. The [barkd-clients repository](https://gitlab.com/ark-bitcoin/barkd-clients) provides clients in TypeScript and C#.
**uniffi-bindings** are the better choice if you're building a native desktop or mobile application. The bindings are available in the [bark-ffi repository](https://gitlab.com/ark-bitcoin/bark-ffi). These are still experimental, but stabilizing quickly.
## Why Ark?
As bitcoin adoption grows, on-chain fees spike during busy periods, making everyday transactions impractical. While Lightning has been revolutionary for bitcoin scaling, it's beginning to show its limitations-channel management and liquidity requirements create complexity for developers and users.
Ark offers a complementary scaling solution that simplifies bitcoin self-custody:
🏃♂️ **Smooth onboarding**: No channels to open, no on-chain setup required-create a wallet and start transacting
🤌 **Simplified UX**: Send and receive without managing channels, liquidity, or routing
🌐 **Universal payments**: Send Ark, Lightning, and on-chain payments from a single off-chain balance
🔌 **Easier integration**: Client-server architecture reduces complexity compared to P2P protocols
💸 **Lower costs**: Instant payments at a fraction of on-chain fees
🔒 **Self-custodial**: Users maintain full control of their funds at all times
Perfect for users who want self-custody without the hassle, and developers who want to build bitcoin apps without the complexity.
[Learn more about Ark's benefits →](https://second.tech)
## How does Ark work?
The Ark protocol enables multiple users to share control of a single bitcoin UTXO through a tree of pre-signed, off-chain transactions. This allows instant, off-chain payments while maintaining self-custody-users can always withdraw their bitcoin either cooperatively with the Ark server or unilaterally on-chain.
For a detailed technical explanation, see our [protocol documentation](https://second.tech/docs/learn/intro).

_A transaction tree showing how Ark enables multiple users to share control of a single UTXO through pre-signed transactions._
## Minimum supported Rust version (MSRV)
Most of our crates do not yet specify a MSRV, but we will commit to one once we make an official release.
The `ark-lib` crate (and by extension the `bark-bitcoin-ext` crate) have a MSRV of v1.74.0.
## Contributing
Thinking of opening a pull request? See our [contribution guide](CONTRIBUTING.md) for dependencies, style guidelines, and code hygiene expectations.
### Security
Please report any vulnerability or any bug that could potentially affect the
security of users' funds by e-mail to [`security@second.tech`](mailto:security@second.tech).
You may use the following PGP keys to encrypt your e-mail:
- `8CC974D9CFD034DCEED213B02A57E0A610D7F19C` (Steven Roose)
- `011E7F59B45397C4654D81298F44B2DD98E18528` (Erik De Smedt)
Both keys can be found on the [keys.openpgp.org](https://keys.openpgp.org/) keyserver.
## Questions or issues
If you run into any issues at all, let us know:
- [Community forum](https://community.second.tech)
- [Community chat](https://chat.second.tech)
- [Issue tracker](https://gitlab.com/ark-bitcoin/bark/issues)
## Security policy and responsible disclosure
**The Ark protocol code is experimental and must not be used in production.**
If you happen to find a vulnerability we invite you to [file a public issue](https://gitlab.com/ark-bitcoin/bark/issues/new).
## License
Released under the **MIT** license-see the [LICENSE](LICENSE) file for details.