A Rust implementation of the Ark protocol on bitcoin
Find a file
Steven Roose 64adc7830c Merge branch 'merge-changelogs' into 'master'
changelog: Merge into release specific files.

See merge request ark-bitcoin/bark!1460
2025-12-24 14:46:27 +00:00
.cargo lib: Add wasm feature 2025-11-24 09:36:16 -03:00
.woodpecker Merge branch 'ci-nightly' into 'master' 2025-12-18 14:21:24 +00:00
assets Updated transaction tree diagram 2025-08-19 14:12:57 +07:00
bark Assigning 0.1.0-beta.5 2025-12-24 10:22:45 +01:00
bark-cli Assigning 0.1.0-beta.5 2025-12-24 10:22:45 +01:00
bark-json Assigning 0.1.0-beta.5 2025-12-24 10:22:45 +01:00
bark-rest Assigning 0.1.0-beta.5 2025-12-24 10:22:45 +01:00
bark-rest-client Assigning 0.1.0-beta.5 2025-12-24 10:22:45 +01:00
bitcoin-ext Assigning 0.1.0-beta.5 2025-12-24 10:22:45 +01:00
CHANGELOG changelog: Merge into release specific files. 2025-12-24 15:04:01 +01:00
cln-rpc all: Rename cancelled -> canceled 2025-12-11 13:51:04 +00:00
contrib ci: base image update for CLN. 2025-12-15 16:35:42 +01:00
CONTRIBUTING Merge branch 'bark-example' into 'master' 2025-11-05 22:10:42 +01:00
docs docs: Add movement documentation 2025-12-11 13:56:26 +00:00
lib Assigning 0.1.0-beta.5 2025-12-24 10:22:45 +01:00
nix nix: Update hold plugin and cln hashes 2025-12-17 16:53:03 +02:00
server Assigning 0.1.0-beta.5 2025-12-24 10:22:45 +01:00
server-log Assigning 0.1.0-beta.5 2025-12-24 10:22:45 +01:00
server-rpc Assigning 0.1.0-beta.5 2025-12-24 10:22:45 +01:00
testing testing: Fix intra-ark test to use receive_htlc_forward_timeout over invoice_expiry 2025-12-23 11:29:56 +02:00
.dockerignore Create Dockerfile for aspd and bark 2025-01-03 21:38:24 +01:00
.editorconfig nix: Use tabs for nix file 2024-10-01 19:35:58 +01:00
.gitattributes bark-rest-client: change barkd rust client crate name 2025-11-28 16:12:50 +01:00
.gitignore Add DS_Store to gitignore 2025-10-18 08:01:57 +01:00
.gitlab-ci.yml ci: Do not use REF_SLUG. 2025-11-29 15:22:45 +01:00
ark_demo.sh Rename asp to server in README files 2025-08-07 21:47:38 +01:00
Cargo.lock Assigning 0.1.0-beta.5 2025-12-24 10:22:45 +01:00
Cargo.toml server: Implement unified mailbox delivery. 2025-12-10 17:01:14 +01:00
CHANGELOG.md changelog: Merge into release specific files. 2025-12-24 15:04:01 +01:00
CONTRIBUTING.md Introduce a coding style document 2025-08-13 16:08:33 +01:00
flake.lock nix: Migrate rust-overlay to fenix and move dev-shell file 2025-10-05 17:03:28 +01:00
flake.nix nix: Add toolchain changes for WASM 2025-11-24 09:36:16 -03:00
justfile justfile: Add bark-cli and bark-rest to the clean target 2025-12-19 11:15:20 -03:00
LICENSE Boilerplate done 2024-03-14 17:59:20 +00:00
README.md Small wording and punctuation adjustments, removed hard line breaks 2025-12-02 22:32:01 +07:00

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.