Skip to content

Commit e2c31ac

Browse files
nwoodfinenwoodfinebitschmidty
authored
Topics: update Ark entry (#2503)
* Updated the Ark protocol excerpt and description to improve accuracy and clarity. Updated primary sources to reflect the two implementations and their documentation. Co-authored-by: nwoodfine <neil@second.tech> Co-authored-by: Mike Schmidt <schmidty@gmail.com>
1 parent 3e241ac commit e2c31ac

File tree

1 file changed

+54
-26
lines changed

1 file changed

+54
-26
lines changed

_topics/en/ark.md

Lines changed: 54 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
---
2-
title: Ark
2+
title: Ark protocol
33

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

88
## Optional. An entry will be added to the topics index for each alias
99
#title-aliases:
@@ -17,8 +17,18 @@ topic-categories:
1717
## Optional. Produces a Markdown link with either "[title][]" or
1818
## "[title](link)"
1919
primary_sources:
20-
- title: "Basis Of Ark Technology (BOATs)"
21-
link: https://github.com/ark-network/boats
20+
21+
- title: "Arkade implementation"
22+
link: https://github.com/arkade-os
23+
24+
- title: "Arkade technical documentation"
25+
link: https://docs.arkadeos.com
26+
27+
- title: "Second implementation"
28+
link: https://codeberg.org/ark-bitcoin
29+
30+
- title: "Second technical documentation"
31+
link: https://docs.second.tech/
2232

2333
## Optional. Each entry requires "title" and "url". May also use "feature:
2434
## true" to bold entry and "date"
@@ -58,30 +68,48 @@ see_also:
5868
## Required. Use Markdown formatting. Only one paragraph. No links allowed.
5969
## Should be less than 500 characters
6070
excerpt: >
61-
**Ark** is a trustless joinpool-style protocol where a large number
62-
of users share a UTXO by accepting a counterparty as a co-signer on
63-
all transactions within a certain time period. This spreads the cost
64-
of onchain fees from using that UTXO across many users, minimizing
65-
their individual costs.
71+
In the **Ark protocol**, a large number of users trustlessly share onchain UTXOs
72+
using trees of pre-signed, offchain transactions. By sharing UTXOs and transacting
73+
offchain, Ark users can spread the cost of onchain fees across multiple participants,
74+
minimizing individual transaction costs while maintaining self-custody of their bitcoin.
6675
6776
---
68-
The users can either unilaterally withdraw their bitcoins onchain
69-
after the expiry of the time period or instantly and trustlessly
70-
transfer them offchain to the counterparty before the end of the time
71-
period. Normally, a user will simply roll their bitcoins into another
72-
contract with the counterparty, which can be highly fee efficient when
73-
done with many other users at the same time. Alternatively, the
74-
counterparty may help the user make a payment onchain, through LN, or
75-
through any other protocol supported by the counterparty. Presumably,
76-
the counterparty would pass along to the user any fees the
77-
counterparty had to pay for using the payment protocol, e.g.
78-
forwarding fees if LN was used.
79-
80-
Ark can be implemented on Bitcoin with no consensus changes required,
81-
but it will support a larger number of users---making it much more fee
82-
efficient---if a [covenant][topic covenants] feature like
83-
[OP_CHECKTEMPLATEVERIFY][topic op_checktemplateverify] is added to
84-
Bitcoin.
77+
Ark transaction trees are constructed periodically through an interactive
78+
process known as "rounds". Each round involves multiple users and a counterparty
79+
(an Ark operator), who together construct and sign the transaction tree, then
80+
broadcast the root transaction onchain. Users securely store their branch and
81+
leaf transactions offchain. This package of offchain transactions is known as a
82+
VTXO (virtual UTXO), which serves as the core unit of value on Ark.
83+
84+
To unilaterally withdraw bitcoin from Ark, a user broadcasts their branch and
85+
leaf transactions in sequence, ultimately releasing their portion of the shared
86+
UTXO to an onchain output under their sole control. However, under normal
87+
operations, users will typically prefer cooperative exits, where they spend
88+
their VTXO to receive an onchain UTXO from the Ark operator.
89+
90+
VTXOs "expire" according to an absolute timelock. After this timelock expires,
91+
both the Ark operator and users can unilaterally spend the bitcoin. To maintain
92+
trustlessness, users must ensure their VTXOs are spent into a new transaction
93+
tree before expiry. This expiry mechanism allows the Ark operator to efficiently
94+
recover liquidity that has been allocated to previous rounds and external
95+
spending operations.
96+
97+
Payments between Ark users are handled as offchain, pre-signed extensions of the
98+
transaction tree. Each payment transaction requires co-signatures from both the
99+
sender and the Ark operator, meaning receivers must trust that the sender will
100+
not collude with the operator to double-spend.
101+
102+
Users can chain these payments by spending a received VTXO before it's included
103+
in a new round. In payment chains, any sender in the chain could collude with
104+
the operator to double-spend the entire chain.
105+
106+
Upon receiving a VTXO, users can either roll it into a new round to regain
107+
trustlessness, or spend it to another user before the expiry deadline.
108+
109+
Ark can be implemented on Bitcoin without requiring consensus changes, but would
110+
support significantly more users—and achieve greater fee efficiency—if covenant
111+
features like [OP_CHECKTEMPLATEVERIFY][topic op_checktemplateverify] were added
112+
to Bitcoin.
85113

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

0 commit comments

Comments
 (0)