Skip to content

Conversation

nwoodfine
Copy link
Contributor

This PR refreshes the Ark protocol page with a significant rewrite:

  • Updated excerpt and description to be more in line with the latest design and status of the Ark protocol
  • Updated primary sources: split into two implementations with direct links to their repos and documentation

Note that I made an effort to generalize the terminology so that it's applicable to both existing implementations of the protocol—while the mechanics are similar, terminology used by Arkade and Second are very different.

Full transparency: I work at Second.

…and clarity. Updated primary sources to reflect the two implementations and their documentation.

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.

Transactions between Ark users are handled as offchain, pre-signed extensions of the transaction tree. Each transfer is co-signed by the sender and the Ark operator using a statechain-like trust model. Upon receiving a VTXO, users can choose to either include the received balance in a new round's transaction tree or spend the VTXO to another user (thereby extending the chain) before the expiry deadline.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's preferable to spell out the trust model here instead of relying on the statechain analogy as a peg which has served a purpose early on but also leads to a lot of confusion about the underlying mechanism.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, new version has more explicit explanation of the payment trust model. It's tough navigating some generalized language here, but see what you think.

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 either an onchain or Lightning payment from the Ark operator.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lightning interoperability is implementation specific and out-of-scope for this document.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Noted and Lightning reference removed.


Transactions between Ark users are handled as offchain, pre-signed extensions of the transaction tree. Each transfer is co-signed by the sender and the Ark operator using a statechain-like trust model. Upon receiving a VTXO, users can choose to either include the received balance in a new round's transaction tree or spend the VTXO to another user (thereby extending the chain) 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.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Latter part of the sentence is out-of-scope for this document IMO.

Copy link
Contributor Author

@nwoodfine nwoodfine Sep 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

This language was from the original Ark page, I just streamlined it a bit. Given that CTV was such a crucial part of the original design, and the ongoing confusion that Ark needs covenants (although that seems to be subsiding now), I think it's worth keeping in here for reference?

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.
The **Ark protocol** is a joinpool-style protocol where 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.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Joinpool is a very ill defined, obscure, idea. Not sure how helpful the comparison is.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was from the original Ark page, I kept it in because I assumed it was relevant, but I've removed in the new version.

- Remove joinpool-style reference as requested
- Remove Lightning payment reference (out of scope)
- Add explicit explanation of payment trust model instead of statechain analogy
- Clarify double-spend risks in payment chains
- Maintain CTV reference as it was part of original design
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 either an onchain or Lightning payment from the Ark operator.
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 transaction from the Ark operator.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/transaction/UTXO?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Definitely better 👍

@brg444
Copy link

brg444 commented Sep 18, 2025

Left last comment otherwise ACK on my end.

Clarifies that cooperative exits result in receiving a UTXO rather than a transaction, per contributor feedback.
nwoodfine and others added 3 commits September 29, 2025 16:37
Fixes CI/build warnings about trailing spaces on multiple lines.
Copy link
Contributor

@bitschmidty bitschmidty left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @nwoodfine and @brg444

I pushed a commit to wrap the text.
I pushed another commit to change the title to "Ark protocol". The "The" part causes these to be alphabetically be in "T" which actually caught me off guard when looking to review this PR's contents locally in the topic list. Let me know if thats an issue @nwoodfine

@nwoodfine
Copy link
Contributor Author

No problem, totally makes sense. Sorry for nuking the hard coded wrap!

@bitschmidty bitschmidty merged commit e2c31ac into bitcoinops:master Oct 2, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants