Skip to main content

Welcome to Bark

Bark is a Rust implementation of the Ark protocol on Bitcoin, led by Second. The Ark protocol is a Bitcoin Layer 2 solution for making fast, low-cost, self-custodial payments at scale.
Experimental Software: 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.

What is Ark?

Ark uses a client-server model to enable users to transact off-chain while maintaining the ability to “exit” their balances on-chain at any time. It 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.

Why use Bark?

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.

Project components

Bark consists of three main components:

bark CLI wallet

A command-line wallet for end users to send and receive Ark payments. Perfect for testing and getting familiar with the protocol.
bark balance
bark send <address> <amount>
bark address

barkd REST daemon

An Ark wallet that runs as a daemon and exposes a REST API over HTTP. Well suited for power users and great for automation—think web shops, Telegram/Discord bots, and similar use cases.
barkd --port 3000
curl http://localhost:3000/api/v1/wallet/balance
Client libraries available in TypeScript and C#.

captaind server

The Ark server implementation that coordinates rounds and enables the protocol. For those looking to run their own Ark service provider.
captaind --config captaind.toml

ark-lib primitives

The core Rust library containing all protocol primitives. Published to crates.io for integration into your own applications.
[dependencies]
ark-lib = "0.1.0-beta.7"
bark-wallet = "0.1.0-beta.7"

Integration options

Choose the integration method that best fits your use case:

Rust SDK

Integrate directly using the bark-wallet crate

REST API

Use barkd’s HTTP API from any language

CLI

Command-line wallet for users and scripting

FFI bindings

Native mobile/desktop apps (experimental, see bark-ffi)

Get started

Quickstart

Make your first Ark transaction in minutes

Installation

Install bark, barkd, or compile from source

Core concepts

Learn how the Ark protocol works

Wallet integration

Integrate Bark into your application

Resources

Next steps

Ready to get started? Head over to the quickstart guide to make your first Ark transaction, or dive into the core concepts to understand how Ark works under the hood.

Build docs developers (and LLMs) love