HI there,
i think i have a more elegant solution.
(if i got the point correct.)
feel free to rip it apart or build on it.
droptable.
to explain this, it feels a little like a hen-egg-problem, please so don´t throw die idea away before finish reeding.
okay.
We start by saying, that you can no longer choose how many rounds your stuff should be mixed. Why? - explained later. We decide that the
target for rounds to mix is 8.
The user submits his funds (example 10DRK) to the first masternode and pays a fee.
For the fee his funds are now marked as "payed in advance" an get a flag [double], i will here call
RTC (roundsToCome). If the RTC falls below 1, it will be no longer mixed.
The RTC for a newly submittet 10DRK is 13. [8+(2xstandart deviation] (more later)
The masternode now waits for 3 other 10DRK´s and mixes it.
Now one round has to be substracted from the RTC-count. But how, without giving away, which 10drk are which?
easy: ((rtc1+trc2+rtc3+rtc4) / 4) -1
INCOMING
fund1: 10DRK -RTC: 13 <- "our" funds
fund2: 10DRK -RTC: 12
fund3 10DRK -RTC: 11
fund4; 10DRK -RTC 12
OUTGOING
xa: 10DRK -RTC -RTC 11
xb: 10DRK -RTC -RTC 11
xc: 10DRK -RTC -RTC 11
xd: 10DRK -RTC -RTC 11
so the RTC for all funds included in this round is just the average of all (minus one, since it got mixed).
RESTRICTIONS:
1) The masternode only uses funds to mix, if the span between the highest RTC and the lowest RTC in this round is <= 2;
2) (already mentioned
You can only start with a target of 8 -> RTC of 13.
3) New denomination method (explained below)
why (1,2)? ->
If you are allowed to start multiple low RTC transactions you can artificially shorten the time other funds are in the mixing-period.
So everyone HAS to start with the same RTC. Otherwise you can cheat other funds out of their mixing-period.
The same goes for the max. span of 2.
Otherwise you can bring down a found to an RTC below 3 in less than 3 rounds.
if we start with an RTC of 13 the minimum Rounds is 7.
The average is 13, and the maximum is pretty high.
-> 3) new denomination method:
All funds will be split in to:
5
2
1
1
[1]
and the last 1
split into
5
2
1
1
[1]
and so on.
we can stop at 1 DRK or we go to 0.1
//explanation
you dakrsend 100DRK with a depth of 3:
50, 20, 10, 10, 5, 2, 1, 1, 0.5, 0.2, 0.1, 0.1
-> a) wich meens your funds will be mixed with the 50ts and twentys and tens of the guy who darksends his 1000DRK.
no more "i m mixing 1000DRK, can somebody please do the same"
-> b) since it is "harder" for a masternode to find corresponding funds (rtc1-rtc2 <= |2| ) it is necessary to make more "allike" darksend-funds.
-> c) It makes it even harder to "observe".
*same goes for "
not-only-zero-and-ones--numbers":
380 = 100 + 200 + 50 + 20 + [10]
additional:
Y1) The RTC happens offchain, just by masternode cencus.
Y2) Does it take long for all the transactions -> HEY "WE HAVE" instantTX
ps: THANKS EVAN FOR ALL YOUR WORK