joinmarket-clientserver icon indicating copy to clipboard operation
joinmarket-clientserver copied to clipboard

Adding a parameter and model that limit the ability for a very large maker to be systematically included in every transaction.

Open PyGryhapoRbryDer opened this issue 1 year ago • 1 comments

Adding support for tx_max_expected_probability, a parameter that defines the maximum expected probability for a single maker to be included in a collaborative transaction. A value of 1 (100%) for this probability corresponds to the previous behavior. A value smaller than 1 allows to prevent a large maker from always being included in a transaction. For a given total amount of fidelity bonds, this mechanism allows to reduce the ability of an attacker to be systematically included in a transaction, and also to be the only entity included as makers in the transaction.

The maximum probability of a maker to be included in each maker draw is calculated based on the number of remaining draws and the probability for such a maker to have been excluded so far in the transaction's previous single maker draws. This maximum probability per draw is used to effectively cap the fidelity bond values of makers that could be otherwise included in every single transaction. It makes it more expensive for an attacker to either prevent transactions or to be the only entity used as counter-party (it increases the total value of bonds required to be distributed across more maker bots in order to achieve the same attack. This is partly due to bond_value_exponent). Makers with less oversized bond values are unaffected by the cap and their incentives remain exactly the same as previously. The bond value cap rises with the median value of bonds and also with the number of makers that hold bonds whose values are distributed as such.

PyGryhapoRbryDer avatar Jul 10 '24 01:07 PyGryhapoRbryDer