Make simple counter-coordination to p+epsilon bribe contract #6
Description
Make a simple counter-coordination (CC) to respond to a p+epsilon attack, as suggested in https://blog.ethereum.org/2015/01/28/p-epsilon-attack/
The version described here is compatible with public, non-commit and reveal vote model/absence of anti-pre-relevation mechanisms.
Roughly:
Parameters: Deposit D (which will be larger than the deposit d for the main game), Margin of error E, Target margin of victory F (will require F<=E), contract address and disputeID for dispute on which to countercoordinate, outcome that attacker is trying to obtain (again denote by Y, denote the othe outcome by X), epsilon
- Pull period lengths from relevant dispute
During the voting phase of the relevant dispute.
-
Jurors submit deposit of D to cc contract.
-
Let S be the number of jurors participating in cc. If S>=M/2+E continue, if not abort and release deposits to participants.
-
Use an (upredictable) RNG to choose ceiling(M/2)+F from among the S participants to vote X in the dispute. The remaining S-ceiling(M/S)-F participants are instructed to vote Y.
During the execution peirod, once the final results are known:
-
If X wins the dispute (which will be the case as long as no more than F of the CC participants that are ordered to vote X defect and vote Y), then including the bribes paid to the Y voters, the only difference between the payoffs to the CC partipants is the epsilon. Any CC participants who deviate from ordered vote lose deposit D. Pay to each X voter D+DnumberCCdefectors/(S-numberCCdefectors)+epsilonnumberCCYvotes/numberCCXvotes. Pay to each Y voter D+DnumberCCdefectors/(S-numberCCdefectors)+epsilon(numberCCYvotes/numberCCXvotes-1).
-
If Y wins dispute, the contract has at least (F+1)D to distribute to the participants to cover/minimize their losses. Calculate the sum of B=totalpayoutspaidtoYCCvoters-dnumberofXCCvoters+D(numberofCCdefectors). Pay to each non-defecting X voter D+d+B/(S-numberCCdefectors). Pay to each non-defecting Y voter D-coherencepayout+B/(S-numberCCdefectors).