The Ark Protocol: An Easy Introduction
The Ark protocol is surprisingly hard to approach when first encountering it. A lot of new jargon within the first few minutes; VTXOs, Forfeit Transactions, Connectors, Out-of-Round Payments. The docs out there go right in the weeds out of the gate, and the podcasts are also not outsider-friendly. After digging into it a little bit, it occurred to me that the core mechanics of Ark are fairly simple, and the rest is implementation details. Taking a first pass at Ark by focusing on the simple overarching idea is a great way to start; further layers can be tackled once the ground work has been laid out. This is exactly what we’ll do here.
1. Sharing UTXOs
The heart of the Ark Protocol is about sharing UTXOs. A bitcoin transaction onchain might have 1 input and 1 output, and yet that single output could in fact be made up of shares from 30 different people.
By “shared UTXO” here I don’t mean that we share the UTXO as in “you could take it for one week and I could take it for the next”, or “the 3 of us share that UTXO and at some point in the future we’ll divide it in some way when it comes time to spend it”. A shared UTXO here means that the UTXO total value can be clearly broken into its component parts, and each user that owns a portion of that UTXO owns a well-defined and predetermined amount.
As an example, let us imagine a transaction onchain that pays to one address (it has only one output), and that this output (UTXO) is in fact a shared UTXO owned by 3 people: Alice, Bob, and Charlie. The exact way this UTXO is cut into these 3 shares is not yet important. For now, let’s only assume that the shares are 2, 1, and 1 BTC respectively.
The three “shares” in the diagram above do not represent any specific bitcoin construction or script; they simply outline the nature of the shared UTXO that’s onchain (above the blue line). In Ark, these shares are called VTXOs (Virtual UTXOs).
2. Coordinators
Imagine a coordinator that prepares these transactions containing shared UTXOs. Moreover, this coordinator builds and broadcasts 1 of those transactions per day. The transactions do not spend each others' UTXOs or relate to each other in any way; they’re just independent transactions.
Before building that transaction, the coordinator takes requests for who would like to be included in the shared UTXO for that day. If you want to be part of it, your message to this coordinator/server would look something like “Can I get a $100 share on the UTXO for the transaction today?" and the coordinator would simply add you for a $100 share.
These transactions keep happening every day, and you just call this coordinator whenever you want to get a share of the shared UTXO for that day with the amount you’d like.
3. Forfeiting a share
Now imagine that you own a $10 share on the shared UTXO from October 1st, and you’d like to instead own a $10 share on the UTXO from October 7. The Ark protocol enables you to “give up” your share on a UTXO (effectively giving back the share to the coordinator), which in turns allows you to trade it for another. This is easily done by contacting the coordinator, and your message would be something like this: “I’d like to forfeit my $10 share of the UTXO from October 1st and get a new share for $10 on the upcoming transaction for October 7."
The coordinator doesn’t mind, and as long as you forfeit an amount equal to the one you are requesting on the new shared UTXO, all is good! Note that in reality the coordinator would charge a small fee for this transfer; I omit this fee in the diagrams to keep things simple.
4. Making payments
Now given that we can basically “redeem” a share in a current shared UTXO for a new share in an upcoming shared UTXO, why don’t we request for 2 new shares to be created when redeeming our share? This is in fact entirely possible, and is how Alice can make payments that also produce change.
Assume Alice now owns a 2 BTC share in the UTXO from October 7th. She can forfeit that share to the coordinator in exchange for 2 new shares in the upcoming UTXO for October 21st: one paying 1 BTC to her and one paying 1 BTC to her friend George.
When the transaction confirms on chain, George will be able to verify his ownership of the 1 BTC share in the UTXO from October 21st and accept it as a valid payment.
5. Hold on my man, that’s a lot of handwaving you just did up there
Yeah, I know. But hopefully this gave you a good feel for what Ark is roughly trying to achieve.
I did use a lot of handwaving and simplifications, and left out some questions that should be inquired about in your research into Ark. Here are a few to get you started:
- If you forfeit a share in a UTXO in order to get a new share in a future UTXO, how can you make sure those two operations happen together? You don’t want to give up something for nothing in return.
- In the examples the coordinator creates a shared UTXO once a day, implying you can only make payments once day. But couldn’t it create a lot more? Hint: yep, yep it could. How about once a block?
- If all those shared UTXOs are created by a coordinator, what are the privacy implications for users against this coordinator?
- How many VTXOs can realistically fit into a single shared UTXO? Are there theoretical and/or practical upper bounds?
- This coordinator as described is very central to the Ark protocol. What happens if it behaves maliciously, or simply goes offline?
- You might have heard that covenants can help simplify and potentially scale Ark. How does that work?
- In the examples, Alice redeems her VTXO for a new VTXO in a different shared UTXO. Can she maybe redeem it for something else, say a lightning payment or an onchain payment? Hint: absolutely.