• Rust 94.4%
  • PLpgSQL 3.2%
  • Shell 1.1%
  • Dockerfile 0.4%
  • Nix 0.3%
  • Other 0.6%
Find a file
Image Erik De Smedt 93801aabb8 Merge branch 'fix/broken-link' into 'master'
fix: broken link

Closes #1381

See merge request ark-bitcoin/bark!1933
2026-04-18 14:19:14 +00:00
.cargo lib: Add wasm feature 2025-11-24 09:36:16 -03:00
.config testing: add nextest profiles with per-test timeouts and retries 2026-03-06 07:53:38 +01:00
.gitlab Merge branch 'bump-nix' into 'master' 2026-04-16 17:32:14 +01:00
assets Updated transaction tree diagram 2025-08-19 14:12:57 +07:00
bark testing: fix cancel lightning test on filestore 2026-04-16 01:16:12 +02:00
bark-cli bark: Add raw-vtxo command to show raw vtxo in hex 2026-04-16 17:07:33 +01:00
bark-json Merge branch 'cli-watch' into 'master' 2026-04-16 15:02:51 +01:00
bark-rest Merge branch 'cli-watch' into 'master' 2026-04-16 15:02:51 +01:00
bark-rest-client Merge branch 'cli-watch' into 'master' 2026-04-16 15:02:51 +01:00
bitcoin-ext Update crate versions to 0.1.2 2026-04-09 21:27:30 +01:00
CHANGELOG Merge branch 'cli-watch' into 'master' 2026-04-16 15:02:51 +01:00
cln-rpc ci: Fix cargo:rerun-if-changed directives in build scripts 2026-02-26 23:34:33 +01:00
contrib contrib: Add EXIT_ON_FAILURE to flake-finder 2026-04-16 17:44:51 +01:00
CONTRIBUTING Merge branch 'bark-example' into 'master' 2025-11-05 22:10:42 +01:00
docs bark/movements: Populate received_on for arkoor receives 2026-02-09 09:50:51 +02:00
fuzz Update crate versions to 0.1.2 2026-04-09 21:27:30 +01:00
lib Merge branch 'introduce-vtxo-tree-update-builder' into 'master' 2026-04-15 17:15:19 +01:00
nix Merge branch 'bump-nix' into 'master' 2026-04-16 17:32:14 +01:00
server Merge branch '2026-04-isforfeitedcolumn' into 'master' 2026-04-16 21:56:37 +04:00
server-log server: add gRPC to cancel a pending lightning receive 2026-04-10 22:40:00 +02:00
server-rpc bark, server, server-rpc: Enforce maximum exit depth for VTXOs to prevent DDoS vector 2026-04-14 16:26:43 +02:00
testing Merge branch 'wm-test-flake' into 'master' 2026-04-17 10:26:26 +00: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 contrib: Add CI debugging skill and artifact download script 2026-02-12 17:39:37 +01:00
.gitlab-ci.yml ci: Bump base image version. 2026-04-16 10:44:55 +02:00
ark_demo.sh Rename asp to server in README files 2025-08-07 21:47:38 +01:00
Cargo.lock bark: add indexed_db implementation 2026-04-14 11:10:34 +02:00
Cargo.toml Add barkdebug profile for building fast debug-enabled binaries 2026-04-09 11:13:38 +01:00
CHANGELOG.md changelog: Add section for v0.1.2 2026-04-09 21:28:37 +01:00
CLAUDE.md contrib: Add Claude Code project configuration 2026-02-12 14:58:38 +01:00
CONTRIBUTING.md nix: Move sccache to dev shell and make optional 2026-03-16 16:01:34 +01:00
flake.lock nix: Bump inputs, esplora and hal 2026-04-13 12:06:10 +01:00
flake.nix flake: Update input to nixos-25.11 & nix flake update 2026-02-27 10:10:56 +02:00
justfile ci: build docs with onchain and indexed db 2026-04-14 11:10:36 +02:00
LICENSE Re-license all crates under the MIT license 2026-02-10 20:22:10 -03:00
README.md fix: broken link 2026-04-18 10:59:20 +01: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 MIT license-see the LICENSE file for details.