Skip to content

ark-bitcoin/bark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bark: Ark on bitcoin

Bark: Ark on bitcoin

Fast, low-cost, self-custodial payments on bitcoin.


Docs · Issues · Website · Blog · YouTube

Release Project Status License PRs welcome Community


Bark is an implementation of the Ark protocol on bitcoin, led by Second. 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

Warning
This repository contains experimental code. Using it with real bitcoin is reckless and can result in loss of funds.

  • Updating bark or captaind may corrupt your wallet-we prioritize development velocity over backward compatibility.
  • Known bugs and vulnerabilities can still lead to loss of funds.

Get started

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

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.

An example of an Ark transaction tree from a refresh 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 for dependencies, style guidelines, and code hygiene expectations.

Questions or issues

If you run into any issues at all, let us know:

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.

License

Released under the CC0 1.0 Universal license-see the LICENSE file for details.