Skip to content

Clarify how unilateral exit works #87

@basantagoswami

Description

@basantagoswami

In all the places in docs.spark.money that I looked, it is mentioned that a user can unilaterally exit by broadcasting their exit transaction.

From https://docs.spark.money/learn/withdrawals#unilateral-exit

Unilateral Exit
If the SE is unavailable or uncooperative, the user can perform a unilateral exit using the pre-signed exit transactions created during the deposit and transfer processes.

  1. Broadcasting Branch Transaction: The user broadcasts the branch transaction that was signed during the deposit process.
  2. Waiting for Confirmation: Once the branch transaction is confirmed, the user waits for the relative timelock to expire.
  3. Broadcasting Exit Transaction: After the timelock expires, the user broadcasts the exit transaction that was signed during the deposit or most recent transfer.
  4. Confirmation: Once confirmed, the funds are available in the user’s Bitcoin address.

Reading it, I get the impression that user needs to broadcast only two transaction to unilaterally exit, but reading the code, it seems like the user might have to broadcast up to 50 (!) txns to exit because it's not a exit transaction but rather a chain of transactions leading up to the exit transaction

The more hands the statechain has changed, the worse it gets

Is that correct?

If so, then a user using Spark doesn't have much of a exit guarantee and must rely on the operators to collaboratively exit. The system, thus is not any better than a completely custodial system for most of the users.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions