Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 54 additions & 26 deletions _topics/en/ark.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: Ark
title: Ark protocol

## Optional. Shorter name to use for reference style links e.g., "foo"
## will allow using the link [topic foo][]. Not case sensitive
# shortname: foo
shortname: ark

## Optional. An entry will be added to the topics index for each alias
#title-aliases:
Expand All @@ -17,8 +17,18 @@ topic-categories:
## Optional. Produces a Markdown link with either "[title][]" or
## "[title](link)"
primary_sources:
- title: "Basis Of Ark Technology (BOATs)"
link: https://github.com/ark-network/boats

- title: "Arkade implementation"
link: https://github.com/arkade-os

- title: "Arkade technical documentation"
link: https://docs.arkadeos.com

- title: "Second implementation"
link: https://codeberg.org/ark-bitcoin

- title: "Second technical documentation"
link: https://docs.second.tech/

## Optional. Each entry requires "title" and "url". May also use "feature:
## true" to bold entry and "date"
Expand Down Expand Up @@ -58,30 +68,48 @@ see_also:
## Required. Use Markdown formatting. Only one paragraph. No links allowed.
## Should be less than 500 characters
excerpt: >
**Ark** is a trustless joinpool-style protocol where a large number
of users share a UTXO by accepting a counterparty as a co-signer on
all transactions within a certain time period. This spreads the cost
of onchain fees from using that UTXO across many users, minimizing
their individual costs.
In the **Ark protocol**, a large number of users trustlessly share onchain UTXOs
using trees of pre-signed, offchain transactions. By sharing UTXOs and transacting
offchain, Ark users can spread the cost of onchain fees across multiple participants,
minimizing individual transaction costs while maintaining self-custody of their bitcoin.

---
The users can either unilaterally withdraw their bitcoins onchain
after the expiry of the time period or instantly and trustlessly
transfer them offchain to the counterparty before the end of the time
period. Normally, a user will simply roll their bitcoins into another
contract with the counterparty, which can be highly fee efficient when
done with many other users at the same time. Alternatively, the
counterparty may help the user make a payment onchain, through LN, or
through any other protocol supported by the counterparty. Presumably,
the counterparty would pass along to the user any fees the
counterparty had to pay for using the payment protocol, e.g.
forwarding fees if LN was used.

Ark can be implemented on Bitcoin with no consensus changes required,
but it will support a larger number of users---making it much more fee
efficient---if a [covenant][topic covenants] feature like
[OP_CHECKTEMPLATEVERIFY][topic op_checktemplateverify] is added to
Bitcoin.
Ark transaction trees are constructed periodically through an interactive
process known as "rounds". Each round involves multiple users and a counterparty
(an Ark operator), who together construct and sign the transaction tree, then
broadcast the root transaction onchain. Users securely store their branch and
leaf transactions offchain. This package of offchain transactions is known as a
VTXO (virtual UTXO), which serves as the core unit of value on Ark.

To unilaterally withdraw bitcoin from Ark, a user broadcasts their branch and
leaf transactions in sequence, ultimately releasing their portion of the shared
UTXO to an onchain output under their sole control. However, under normal
operations, users will typically prefer cooperative exits, where they spend
their VTXO to receive an onchain UTXO from the Ark operator.

VTXOs "expire" according to an absolute timelock. After this timelock expires,
both the Ark operator and users can unilaterally spend the bitcoin. To maintain
trustlessness, users must ensure their VTXOs are spent into a new transaction
tree before expiry. This expiry mechanism allows the Ark operator to efficiently
recover liquidity that has been allocated to previous rounds and external
spending operations.

Payments between Ark users are handled as offchain, pre-signed extensions of the
transaction tree. Each payment transaction requires co-signatures from both the
sender and the Ark operator, meaning receivers must trust that the sender will
not collude with the operator to double-spend.

Users can chain these payments by spending a received VTXO before it's included
in a new round. In payment chains, any sender in the chain could collude with
the operator to double-spend the entire chain.

Upon receiving a VTXO, users can either roll it into a new round to regain
trustlessness, or spend it to another user before the expiry deadline.

Ark can be implemented on Bitcoin without requiring consensus changes, but would
support significantly more users—and achieve greater fee efficiency—if covenant
features like [OP_CHECKTEMPLATEVERIFY][topic op_checktemplateverify] were added
to Bitcoin.

{% include references.md %}
{% include linkers/issues.md issues="" %}