Skip to content

Conversation

@PyGryhapoRbryDer
Copy link

@PyGryhapoRbryDer PyGryhapoRbryDer commented Jul 10, 2024

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.

…ines 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.
@PyGryhapoRbryDer PyGryhapoRbryDer changed the title Adding a parameter and model that limits a very large maker to be systematically included in every transaction. Adding a parameter and model that limits the ability fir a very large maker to be systematically included in every transaction. Jul 10, 2024
@PyGryhapoRbryDer PyGryhapoRbryDer changed the title Adding a parameter and model that limits the ability fir a very large maker to be systematically included in every transaction. Adding a parameter and model that limit the ability fir a very large maker to be systematically included in every transaction. Jul 10, 2024
@PyGryhapoRbryDer PyGryhapoRbryDer changed the title Adding a parameter and model that limit the ability fir a very large maker to be systematically included in every transaction. Adding a parameter and model that limit the ability for a very large maker to be systematically included in every transaction. Jul 10, 2024
… the number of desired counterparties before entering the algorithm that limits the maximum expected probability for large bond makers.

-Modifying which log statements are warning vs debug statements to reduce the number of lines printed on the console

-Adding an extra warning log statement that prints the number of large makers that have their weight constrained by tx_max_expected_probability
@3nprob
Copy link

3nprob commented Sep 26, 2025

Say we have malicious operator running maker m0 with bond amount b_m0, getting selected with probability p_m0.

Let's say after this change, their probability gets slashed to 0.2*p_m0.

Now, they make five new fidelity bonds b_m1 + b_m2 + b_m3 + b_m4 + b_m5 = b_m0 and set up five new makers m1 ... m5. Each should now get a probability 0.2*p_m0, so for the same monetary cost they get the same cumulative probability before this change as after.

So while it would be a one-time penalty for any existing actor, the sybil vector is still there and apart from having to split up their operations a bit more, nothing really changes to shift the incentives for an attacker for this vector.

Arguably it could make the situation worse in practice.

Combined with the impact on honest makers with larger bonds I believe this is why the response to this suggested approach has been lukewarm.

Am I missing something?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants