-
Notifications
You must be signed in to change notification settings - Fork 62
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
[tracking] Implement the Split and Merge swap. #382
Comments
I have a question about the manual utxo selection. How manual the process has to be? I mean, was thinking of providing the user the ability to list available UTXOs and pick them up and then, start coinswap off that. Other option I'm considering is the ability to provide a flag to branch off the swaps if need. Do you have any expected UX/workflow in mind? |
Good question. In my head it's a combination of both. Example workflow:
Note the the split/merge has to be distributed across the hops. So it's not just only the It will be more cost efficient if all the intermediate makers just create singleinput-singleoutput funding txs. And only the last maker of the hop create their funding tx as per the split/merge request. |
Thanks for the quick response and the clarification but I have a couple of questions and comments. You can correct me if I got it wrong.
Yeah, here we're pretty much aligned. I envision an interactive workflow allowing the user to choose UTXOS from a list of Outpoints and their respective values. $ taker coinswap --amount 1500000000 --makers 3 --interactive
List of UTXOs:
[ ] 635ddfa1456a006ab66f711f7c002e31b262a77283685b589d3e20d4d438647a:3 - 600000000
[x] de55e0488bf765b41570c304a20ac6700a59f99b699f3ffcac6df130024953ad:5 - 800000000
[ ] 7f65f53b0b24c73bbd8678b6867805a7021b3ef38074189beea527d051373531:8 - 100000000
...
I think we're already here, I think this is what
From my perspective, the branching strategy is more meaningful when the
From my opinion, the
And this is pretty much for the last
I don't agree with this statement. Correct me if I'm wrong, but from my perspective, the
When it comes to this one, isn't this susceptible to amount correlation attacks? I mean, singleinputs-singleoutputs txs wouldn't mean sending the same amount every hop making it easier for chain analysts to trace back the original transaction? Well, this approach could trick chain analysts into thinking that the last hop was the one before the very last one, but still. Let me know your thoughts and again thanks for the quick and detailed response @mojoX911 |
This is even better than my idea of choosing by index number. Yes, an interactive flow will be perfect.
Yes, you are correct. This is already possible.
Yes, but we can generalize the logic also. Why cannot I branch off 5 utxos into 10? 1-to-many branching is then just the special case of selecting only one utxo in input.
yes, could be, my concern is it should be intuitive for the users to choose this properly to determine the "shape of the swap". If you take in the above diagram, split number 2 is giving 6 outputs. So no. of output = split_number * maker parallel paths. I think its simpler to make the split_number = Total output chunks a swap client will receive at the end. So the above diagram will be a split_number = 6. This is something we need to decide. I am open to other opinions also.
Yes. Thats it.
You are right. I framed it wrong. This applies if we control the internal hops' concurrent paths too. All this info will have to be conveyed to the makers.
Yes, and we are in a constant tradeoff between amount-correlation and cost-of-swap. Doing this kind of split paths increases the swap cost in multiple of split_number. We can put this as an extra flag for the user to choose. As mentioned in #427 there will be randomization in the maker fees and tx fees. That will create some randomness. But still >1 utxos will always be better in terms of privacy. Also note, there's two ways of doing splits. Multiple utxos in the same tx, or multiple independent txs. 2nd option has more resistance against amount-correlations and also its more costly We need to hit a balance here, max correlation resistance within reasonable costs. |
Split and Merge ProposalWith all the information gathered, I think it's time for a proposal, before any change in the code. Scenario 1 - simplest use caseThis is the simplest scenario, from the user perspective where nothing changes.
This where we are today. Scenario 2 - Efficiency ModeIn this scenario, the
Scenario 3 - BranchingIn this scenario is where the branching comes in.
Scenario 4 - Merging
In this scenario, the
Scenario 5 - Branching and Merging combinedIn this scenario both branching and merging are used combined, this means, the coinswap will branch off x times, and at the end the makers will send singleoutput transactions back to the taker.
Scenario 6 - InteractiveIn this case, the
|
The concept of split/merge swap is described here. https://gist.github.com/chris-belcher/9144bd57a91c194e332fb5ca371d0964#combining-multi-transaction-with-routing
Task
The text was updated successfully, but these errors were encountered: