Barking on signet
Signet is a bitcoin test network where coins are free and plenty. It provides a good opportunity to test Ark without risking real money.
In this tutorial you will use bark to send and receive signet coins using the Ark protocol.
Create your wallet
To ensure that bark is installed, run bark --version
. Follow the installation instructions if you need to.
The first step is to create a new signet wallet. You need to tell the wallet the URL of your Ark server and where it can find chain data.
Note
Use bark --help
to see what the command-line program can do. For example, when you want to create a wallet, running bark create --help
will give you more info.
Esplora is the easiest chain source to configure. But you can also use your own signet node if you prefer.
Don't switch the esplora instance. We are running a version that includes package relay which will be merged in soon.
bark create --signet --asp ark.signet.2nd.dev --esplora esplora.signet.2nd.dev
This requires bitcoind v28.0 or greater.
Your node must use the -txindex
option.
bark create --signet --asp ark.signet.2nd.dev --bitcoind <url-to-your-bitcoin-node> --bitcoind-cookie: <path-to-your-cookie>
This requires bitcoind v28.0 or greater.
Your node must use the -txindex
option
bark create --signet --asp ark.signet.2nd.dev --bitcoind <url-to-your-bitcoin-node> --bitcoind-user <username> --bitcoind-pass <password>
Board the Ark and see your balance increase
Let's check your balance.
bark balance
Oh, you are broke! Let's fix that!
To receive money on Ark you need to share your VTXO pubkey which you can find using the following command.
bark vtxo-pubkey
You can get sats using our signet faucet. You will need to authenticate using your GitHub account and provide the VTXO pubkey you obtained above.

https://signet.2nd.dev/
Check your balance again to confirm you have received the funds.
bark balance
Congratulations! You have boarded the Ark. Notice that you received the balance instantly and you didn't need to pay any transaction fees.
What's a VTXO?
A traditional bitcoin wallet manages unspent transaction outputs (UTXOs). Your Ark wallet manages "virtual unspent transaction outputs" (VTXOs). A VTXO is a UTXO that could make it onchain but hasn't so far.
You can inspect your newly received VTXO.
bark vtxos
The output looks similar to:
[
{
"id": "686968ff18425065c6fb42ff34d4eafc71fbcd38f32884a2eef72245bae1f9aa:0",
"amount_sat": 12345,
"vtxo_type": "arkoor",
"utxo": "686968ff18425065c6fb42ff34d4eafc71fbcd38f32884a2eef72245bae1f9aa:0",
"user_pubkey": "02fcab896c628dc66b6567c69b1dcb2f4d66c97478cf93e3761cc623ea9affdb4e",
"asp_pubkey": "03a13f76b02b22b61e25d27d61ae61ed9c778950af429492677b9d3101b0aaa618",
"expiry_height": 238165,
"exit_delta": 12
},
]
The VTXO is of type arkoor
which indicates the VTXO was received
out-of-round. The advantage of this approach is that it works
instantly and no on-chain transaction is required. However, it comes
with a security trade-off. Your funds are secure as long as the Ark
server and the sender don't collude. If you don't like this security
model you can immediately refresh.
The VTXO has a value of 12345
sats and an id which looks like
686...9aa:0
. As mentioned before, a VTXO is an output of a normal
bitcoin transaction. It is output at index 0
of the transaction with
id 686...9aa
. However, if you look up the transaction in a
block-explorer.
you will not be able to find it. The transaction isn't confirmed
onchain and will hopefully never be broadcast to the mempool. Ark is
an off-chain protocol and if everything works out well it should never
go onchain.
Your VTXO also has an expiry. Up until block-height
expiry_height
only the owner can claim the VTXO by exiting
unilaterally. But after the expiry the Ark server could claim the
funds and sweep them.
Refresh in a round
The Ark server will coordinate rounds periodically. You can participate in a round to swap your old, soon-to-expire VTXO for a brand new one.
Our signet Ark server is configured to do a round every minute. When you run
the refresh
command, you have to wait until the next round starts.
bark refresh --all
You can run bark vtxos
again. You should see the old VTXO has disappeared
and a new VTXO of type round
has been created. Note that the vtxo_type
is now round
which has the strongest trust model.
In the current implementation users must refresh coins manually, but any production-quality wallet will handle this automatically.
Spend your money and buy a treat for Byte
A good bitcoin wallet should allow you to spend your bitcoin.

We'd like you to buy our mascot, Byte, a treat. You can order one in the store.

https://signet.2nd.dev/store
After creating an order, the shop will give you a BOLT11 invoice, which can be paid using the following command.
bark send <bolt11-invoice>
You can use bark to pay:
- a BOLT11 invoices to pay using Lightning
- a LNURL to pay using Lightning
- a bitcoin address to onchain
- a VTXO pubkey to pay within the same Ark
Receiving Lightning
It's not possible yet. But we are working hard to make this a reality.
Getting your money out, aka off-boarding
The cheapest and fastest way to get your money out of Ark is using an offboard. In this process, you can (atomically) forfeit VTXOs in return for an onchain UTXO in a round.
bark offboard --all
This is the fastest and cheapest option. However, this is only possible if the Ark server cooperates.
What if the server disappears or refuses to cooperate? You always maintain full control of your funds. You can exit your vtxos at any time using the unilateral exit procedure, even if the server is not cooperative. For more details on the unilateral exit, proceed to the advanced section.
Share your feedback
You've now completed testing the full lifecycle of transactions on Ark—we're excited to see what applications you come up with! Let us know if there's any more guides you'd like to see, and please share any feedback on the developer experience.