• Rust 94.6%
  • PLpgSQL 3.2%
  • Shell 1%
  • Dockerfile 0.3%
  • Nix 0.3%
  • Other 0.6%
Find a file
BERJAYA Erik De Smedt 66035445cf Merge branch 'security' into 'master'
Add security section to readme

See merge request ark-bitcoin/bark!2039
2026-05-12 00:04:59 +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 ci: drop compat-bark-0.1.3 job 2026-05-07 15:55:39 +02:00
assets Updated transaction tree diagram 2025-08-19 14:12:57 +07:00
bark bark: reconnect round-event streams gracefully on idle timeout 2026-05-11 14:39:34 +02:00
bark-cli Fix all public rustdocs warnings 2026-05-08 14:25:47 +01:00
bark-json Fix all public rustdocs warnings 2026-05-08 14:25:47 +01:00
bark-rest Merge branch 'vendored-swagger-ui' into 'master' 2026-05-11 13:41:29 +00:00
bark-rest-client Fix all public rustdocs warnings 2026-05-08 14:25:47 +01:00
bip321 testing: add extension test 2026-04-29 17:47:18 +02:00
bitcoin-ext Fix all public rustdocs warnings 2026-05-08 14:25:47 +01:00
CHANGELOG bark: Add graceful idle streams changelog. 2026-05-11 14:45:37 +02: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 Bump versions to v0.1.4 2026-04-28 17:05:14 +01:00
lib Fix all public rustdocs warnings 2026-05-08 14:25:47 +01:00
nix Merge branch 'vendored-swagger-ui' into 'master' 2026-05-11 13:41:29 +00:00
server Fix all public rustdocs warnings 2026-05-08 14:25:47 +01:00
server-log Merge branch 'wallet-with-sync-manager' into 'master' 2026-05-06 15:31:07 +01:00
server-rpc Merge branch 'proto-doc-nits' into 'master' 2026-05-07 15:03:03 +01:00
testing testing: wait for captaind wallet sync in fund_captaind 2026-05-11 16:03:49 +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 Mark Cargo.lock as not generated so that it expands in gitlab 2026-05-07 09:49:10 +01:00
.gitignore contrib: Add CI debugging skill and artifact download script 2026-02-12 17:39:37 +01:00
.gitlab-ci.yml ci: Use new base image. 2026-05-11 00:59:31 +01:00
ark_demo.sh Rename asp to server in README files 2025-08-07 21:47:38 +01:00
Cargo.lock rest: use vendored swagger ui assets 2026-05-10 14:19:18 -05:00
Cargo.toml deps: Upgrade bitcoind-async-client 2026-05-07 11:33:19 +01:00
CHANGELOG.md changelog: Make entry for v0.1.4 2026-04-28 17:05:46 +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: Update flake and bitcoind to v31 2026-05-11 00:59:31 +01:00
flake.nix flake: Update input to nixos-25.11 & nix flake update 2026-02-27 10:10:56 +02:00
justfile bark, bark-json, bark-rest, server-rpc: Add transport-less mode to decouple native/wasm features from bark-json 2026-04-21 04:07:17 +01:00
LICENSE Re-license all crates under the MIT license 2026-02-10 20:22:10 -03:00
README.md readme: Add security section 2026-05-11 17:48:24 +02:00

bark: Ark on bitcoin

Bark: Ark on bitcoin

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


Docs · Issues · Website · Blog · YouTube

Release 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

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.

Security

Please report any vulnerability or any bug that could potentially affect the security of users' funds by e-mail to 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 keyserver.

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.