Remove incentive for makers to cheat by creating multiple bots
This was discussed in Issue #1790.
This change removes the incentive of makers to cheat through creating multiple makers/bots. This is done by restoring JM creator Chris Belcher's original bond value exponent of 2.0 in his fidelity bond paper. This also reduces the sybil attack surface. The exponent had been set to 1.3 to address a perception that too many offers were going to a handful of makers. This was in an environment where only a handful of makers had fidelity bonds. With the maturity of the marketplace and fidelity bonds being around for years now, the default setting should be restored to help reduce maker cheating and sybil attacks. It seems pretty obvious that cheating is occurring through multiple makers being created/controlled by the same entity.
This pull request also incorporates seamo1's necessary pull request #1792 to remove spam bots from JM by setting default bondless makers to 0. Fidelity bonds have been around long enough where makers can easily set one up.
For current users, I strongly urge you to update your joinmarket.cfg file as such: bondless_makers_allowance = 0.0 bond_value_exponent = 2.0
Before changing the exponent back to 2.0 we should all read issue #1247 to see why it was reduced to 1.3 in the first place. Yes 2.0 is Chris Belcher's original value but it was also Chris Belcher who proposed reducing it. I dont see how "maturity of the marketplace" would change that. The centralizing incentive happens because larger fidelity bonds get disproportionately more fees, and that doesnt change if you just add more fidelity bonds.
This idea has been discussed before in #1325 which people should read. There's some good points made about how if we keep changing the value it will open the door to endless debates. And any change should have good evidence, ideally a simulation.
I agree something weird is going on with multiple makers controlled by the same entity. The value 1.3 SHOULD work because its bigger than one so makers that split up their coins across multiple fidelity bonds should be penalized. Why hasnt it worked? We should figure this out. If it hasnt worked then why would 2.0 work? Before changing anything I think we need an explanation for why 1.3 doesnt seem to be working.
Before changing the exponent back to 2.0 we should all read issue #1247 to see why it was reduced to 1.3 in the first place. Yes 2.0 is Chris Belcher's original value but it was also Chris Belcher who proposed reducing it. I dont see how "maturity of the marketplace" would change that. The centralizing incentive happens because larger fidelity bonds get disproportionately more fees, and that doesnt change if you just add more fidelity bonds.
Actually the issue you linked to shows someone else (not Chris) proposing to reduce it from 2.0 to 1.3. Chris did later on in the thread say that an exponent of 1.3 was 'good with him', but it wasn't something he proposed. Small detail but an important distinction. And the person who proposed it surmised: "Erring on the lower side is in my opinion the correct decision here, at least for now... This direction will of course reduce the quantitatively assessed 'defence against Sybiling' for now. Based on a lot of conversation and looking at the market, I think that it makes sense."
This was seen as temporary ("at least for now"), and was based on looking at the market at that point in time. In analyzing that discussion with the benefit of hindsight, usage of fidelity bonds when that discussion occured was still very immature.
At that time there were few makers with bonds, and a large variation between the size of the bonds, such that some makers would be soaking up many of the coinjoins. The change was proposed then to make it more fair by amplifying smaller makers' chances by reducing the exponent. They understood that by doing this, it would reduce the defence against Sybil attacks. There was an implicit understanding that as the market conditions changed, we would adjust accordingly.
Today we have many legitimate makers with bonds, and the distribution of bond sizes are more 'smooth' from largest to smallest. So going back to the 2.0 exponent, we wouldn't have the fairness issue years ago where the richest makers would consistently be involved in most coinjoins. There would be more variation simply due to number of unique legitimate makers. Most JM coinjoins do not exceed more than 10 different makers, so when you have many more legitimate makers with bond sizes close to each other, and a very limited number (10 or less) can be included in a JM coinjoin, it is a lot less reliable for any one maker to be consistently involved.
However, having a 2.0 exponent will penalize the spam makers. It will incentivize keeping one maker with a bigger fidelity bond instead of splitting it up into x makers with smaller fidelity bonds that still get considered with a 1.3 exponent. To me it seems like a clear win here. We no longer need the 1.3 exponent since the market has matured, and going back to 2.0 will preserve fairness and reduce cheating.
This idea has been discussed before in #1325 which people should read. There's some good points made about how if we keep changing the value it will open the door to endless debates. And any change should have good evidence, ideally a simulation.
That was a discussion 3+ years ago, before the emergence of spam maker attacks. We need to update the software based on current needs. Right now the market is broken. Requiring all makers to have fidelity bonds to be considered as part of joins and restoring the bond value exponent to 2.0 will provide stronger Sybil protection for the current market, and remove the incentive for these spam attacks. It makes sense for these two changes to go hand-in-hand, because both will be required to fully address the issue of spam makers.
I agree something weird is going on with multiple makers controlled by the same entity. The value 1.3 SHOULD work because its bigger than one so makers that split up their coins across multiple fidelity bonds should be penalized. Why hasnt it worked? We should figure this out. If it hasnt worked then why would 2.0 work? Before changing anything I think we need an explanation for why 1.3 doesnt seem to be working.
Well we have seen what the market looks like with the current settings. Now that fidelity bonds have matured in the marketplace, reverting to 2.0 will decrease Sybil attacks and reduce the incentive for spam makers, and still provide fairness for legitimate makers since adoption of fidelity bonds is widespread.
I believe Chris was a visionary and was ahead of his time. The 2.0 exponent was correct - the market just had to catch up to it.