Replies: 2 comments
-
TBH I don't really see what problem we are solving with "client proving he has funds for the order(s) he puts up":
Unless I'm missing something in there ^ funded broadcast is nice to have but not that helpful (so perhaps better put off until later) ? Side-note, I thought split-transactions (besides proving client is able to fund his order) are also needed for UTXO-based assets to make sure multiple matches can execute in parallel ? I guess that's not as important secondary thing it's fine to give up on |
Beta Was this translation helpful? Give feedback.
-
I agree with @norwnd.. the funding checks are not required if the reputation system is working well. I think we should get the mesh working without it, and we can add it after. |
Beta Was this translation helpful? Give feedback.
-
When users submit an order to dcrdex, they are required to provide proof of funds. For UTXO assets, this is a list of UTXOs with signatures proving ownership. Because the user's existing UTXOs are almost certainly not sized perfectly for the order's requirements, and because the server tracks the UTXOs the user has reserved for orders, this can result in an overlock, where the user has funds tied up in an order that could otherwise be used in other orders. To mitigate this, we have developed a system wherein we generate split txs at the time of order placement to create perfectly-sized outputs. This is not only tedious, but can be expensive for BTC, where tx fees are high.
But here's the thing... We don't actually need to do this. The only reason we need split txs is because we validate funding per order, instead of per user. It we would have designed the system such that when a user submits an order, they submit funding proof for the base and quote asset for not just the order being submitted, but for all of their booked and epoch orders and settling matches, there would be no need for split txs. The only downside with that scheme is that the user might be giving more information about their wallet holdings than is necessary. But that information is not passed along to other users with order book messaging anyway.
With Mesh, things are going to be a little different. Users will still prove funding when broadcasting an order, but with something called a funded broadcast. In a funded broadcast, the user will submit proof-of-funds with their broadcast, the Mesh server nodes will validate the e.g. UTXOs, and strip out any identifying info before passing on the broadcast. There's still some details to work out about how we will handle funding of orders on multiple markets, but that's the gist of it.
I'm opening this up for discussion, because of the privacy consideration, for Mesh design considerations, and because it has come up in Matrix discussions a number of times and it's somewhat complicated.
Beta Was this translation helpful? Give feedback.
All reactions