This is the definition of a pool transaction taken from https://arkpill.me/deep-dive:

Pool transactions are created by Ark service providers perpetually every 5 seconds, which are effectively blinded, footprint-minimal, rapid coinjoin rounds.

ASP funds the coinjoin with their own on-chain funds in exchange for vTXOs redemptions. Therefore, the coinjoin transaction that hits on-chain has only one or a few inputs provided by the ASP.

The pool transaction has three outputs: vTXOs output, connectors output, and ASP change. Service providers place vTXOs for the intended recipients to claim (under the vTXOs output) and connectors for senders to connect (under the connectors output) in their pools.

The doc says that all inputs of a pool tx are owned by the ASP. When Alice joins the ark by onboarding/lifting, how does this actually work if her on-chain funds are not used as inputs of the pool tx?

The most obvious explanation to me (I'm pretty sure it's not the right one though) is that Alice sent her funds to the ASP in a prior tx, but how could she be sure that the ASP will create the vtxos for her in the pool tx?

1 Answer 1


In Ark there is a process called lifting. When a user lift funds they take an onchain utxo (unspent transaction output) and getting an ark vtxo (virtual transaction output) in return.

To explain lifting it is crucial to understand what a vtxo is.

First of all, a vtxo is a specific type of bitcoin-transaction. We call it virtual because the transaction is supposed to never go on chain.

In Ark, a vtxo has a very specific design. The design allows the owner to spend the coins in the vtxo-unilaterally. However, there is some kind of an expiry date. After 4 weeks the vtxo expires and the Ark Service Provider is allowed to grab the funds.

Now we understand what a vtxo is. Creating a lifting protocol isn't that hard. Together, the user and ASP can create a virtual transaction that has a vtxo as an output. They also create a lifting transaction that can only be used to fund the virtual transaction.

At this point the transactions are created but aren't funded yet. The user has seen the transactions and knows that unilateral exit path exist. The user can safely sign and broadcast the transaction. The user has lifted their funds and has a vtxo that can be used.

However, it is not exactly like a vtxo yet. The ASP will only allow the user to spend the vtxo once the on-chain lifting transaction is confirmed. The ASP doesn't want to be the victim of a double-spend attack.

The double-spend attack is also exactly why the pool transaction must be fully funded by the ASP. If users would fund the pool transactions directly. An evil user could double-spend and prevent the pool-transaction from making it on chain.

  • so lifting transactions are the pool transactions ? and they need to be signed by the users joining the Ark? Commented Oct 4, 2023 at 16:02
  • No, they are two different kind of transactions. Both go on chain though
    – Erik
    Commented Oct 4, 2023 at 19:01
  • 1
    To summarize, you can lift your own on-chain utxo directly into a vtxo and then you can use this vtxo just like any other vtxo that was the result of an Ark round: you can spend it in an Ark round in return for other vtxos Commented Oct 10, 2023 at 16:44
  • > The ASP will only allow the user to spend the vtxo once the on-chain lifting transaction is confirmed. How is this enforced?
    – altafan
    Commented Oct 13, 2023 at 14:27
  • Spending a vtxo is like an atomic swap between an old and a new vtxo. The ASP can just decide to not provide the new vtxo
    – Erik
    Commented Oct 13, 2023 at 15:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.