Skip to main content

Welcome to Ark

A second-layer solution designed to scale Bitcoin transactions

Why Ark?

Bitcoin is the world's most secure and censorship-resistant blockchain. However, it's not the fastest or the cheapest. Ark is a second-layer solution designed to scale Bitcoin transactions. It uses a shared UTXO model for confidential and off-chain payments through an intermediary server that cannot access your funds.

Try it

Start by downloading a compatible binary.

Available binaries

Move it to somewhere on your PATH:

$ mv <file> /usr/local/bin/ark
$ chmod +x /usr/local/bin/ark

Configure the CLI

The CLI requires an initial setup to initialize the wallet and connect to the ASP:

$ ark init --password <password> --ark-url

You can also restore a wallet by specifying the hex encoded private key with the --prvkey flag.

View balance

You can see both the onchain and offchain balance of the wallet with:

$ ark balance

To see your balance with your VTXOs expiration details use --expiry-details:

$ ark balance --expiry-details

Receive funds

You can print your onchain and offchain receiving addresses with:

$ ark receive

Add funds to the ark wallet:

Fund the onchain_address from previous command with

Onboard the ark

$ ark onboard --amount <amount>

This command will send funds from your onchain balance to your offchain balance.

After confirmation, your ark wallet will be funded and ready to spend offchain.

Use sats

Amount is always specified in sats unit.

Make payments

You can make a payment by sending to either one or many receivers:

$ ark send --to <address> --amount <amount>
$ ark send --receivers '[{"to": "<address>", "amount": <amount>}, ...]'

You can send funds to onchain or offchain addresses:

  • funds to onchain addresses will come from your onchain balance
  • funds to offchain addresses will come from your offchain balance

Collaborative redemption

You can redeem your funds onchain collaborating with the ASP:

$ ark redeem --address <onchain_address> --amount <amount>

This command will send funds from your offchain balance to your onchain balance.


Any change produced with this operation goes to your offchain address.

Unilateral redemption

If the ASP is unresponsive you can redeem all your offchain funds unilaterally:

$ ark redeem --address <onchain_address> --force

The tag --force will make ark ignore --amount and redeem all funds.


You can see all available commands with help:

$ ark help

Create a second CLI

To create a second CLI, on a different terminal use a different datadir by exporting the env var ARK_WALLET_DATADIR:

$ export ARK_WALLET_DATADIR=path/to/custom
$ ark init --password <password> --ark-url

By default the CLI uses the following datadir:

  • POSIX (Linux/BSD): ~/.Ark-cli
  • Mac OS: $HOME/Library/Application Support/Ark-cli
  • Windows: %LOCALAPPDATA%\Ark-cli
  • Plan 9: $home/Ark-cli :::