ledgerloops / strategy-pit

Testing ground for LedgerLoop strategies
Apache License 2.0
0 stars 0 forks source link

Lift Negotiation favours the Initiator #22

Closed michielbdejong closed 5 months ago

michielbdejong commented 5 months ago

Any incoming Propose is a competitor to a Propose you mint yourself, since the initiator has the best chances of making a profit. So we would expect high rejection rates when nobody is in a rush to lift

michielbdejong commented 5 months ago

Or rather than rejections, probably very high markups

michielbdejong commented 5 months ago

Here is a related article, except which fits if bids are repeated: https://www.rasmusen.org/papers/mixedpie.pdf In a Lift, each participants receives an incoming amount and pays an outgoing amount. One participant is the initiator. In simple lift negotiation there is just one lift which either happens or it doesn't. Everybody except the initiator claims a profit and all remaining profit goes to the initiator. If that amount is negative, the initiator will reject and the lift fails.

So the initiator starts proposing to receive/pay (?, 1). The next participant along the loop will have an exchange rate X1 and a proposed profit P1, so they propose (1, X1*P1) for themselves. The one after that will propose (X1*P1, X1*P1*X2*P2), etc. Suppose it was a triangle, then now the initiator will see they can get (X1*P1*X2*P2, 1). In the simple lift negotiation scenario, the initiator has exchange rate X0 and is OK as long as they make at least P0 profit, so they will accept if X1*P1*X2*P2*X0*P0 >= 1.

This means that it's very close to what game theory calls "dividing the dollar" or "splitting a pie" but as such not the same:

In our case, all participants except the initiator either get Pi or nothing, and the initiator either gets all the left-overs, or nothing.

If we could only improve lift negotiation to remove the initiator's advantage, then it would be a lot fairer.

michielbdejong commented 5 months ago

MyCHIPs solves this by imposing a single currency, the CHIP, similar to my previous endeavours with Unicurn.

michielbdejong commented 5 months ago

Another way to spread the initiator advantage could be if the information about which exchange rate the initiator is getting, and how much of that is profit, is somehow spread across the loop. But to do this you would first have to measure the exchange rate accurately, and if you see the exchange rate as a result of the market then the profit is even theoretically zero.

So if the lifts market along a loop is liquid enough then the initiator's advantage approaches zero. Maybe that's the best solution path to aim for.

michielbdejong commented 5 months ago

Another way to force nodes to bid their value might be to make it a two-way promise for a small amount.

michielbdejong commented 5 months ago

So the initiator proposes an amount of 1 cent, but if the amount that arrives is 0.8 cent, could the participating parties be held to it?

The two phase commit would have to work differently, because you can't conditionally promise to receive an amount. The conditional promise to move money clockwise has to be made to the clockwise neighbour, and the conditional promise to move money anti-clockwise has to be made to the anti-clockwise neighbour.

If revealing identities is OK, then participants could just disclose their exchange rates in signed messages along the loop. Or maybe this can be done in an accumulative way? A sort of bidirectional hashlock?

So I see two ways forward here - splitting this issue into two follow-ups: