-
Notifications
You must be signed in to change notification settings - Fork 141
Updated Ark protocol page: major rewrite for accuracy and updated sources #2503
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…and clarity. Updated primary sources to reflect the two implementations and their documentation.
_topics/en/ark.md
Outdated
|
||
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. |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
_topics/en/ark.md
Outdated
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. |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
_topics/en/ark.md
Outdated
|
||
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. |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
_topics/en/ark.md
Outdated
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. |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
_topics/en/ark.md
Outdated
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s/transaction/UTXO?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Definitely better 👍
Left last comment otherwise ACK on my end. |
Clarifies that cooperative exits result in receiving a UTXO rather than a transaction, per contributor feedback.
Fixes CI/build warnings about trailing spaces on multiple lines.
There was a problem hiding this 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
No problem, totally makes sense. Sorry for nuking the hard coded wrap! |
This PR refreshes the Ark protocol page with a significant rewrite:
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.