Skip to content
This repository was archived by the owner on Mar 16, 2022. It is now read-only.
This repository was archived by the owner on Mar 16, 2022. It is now read-only.

Make simple counter-coordination to p+epsilon bribe contract #6

Open
@whwgeorge

Description

@whwgeorge

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

  1. Pull period lengths from relevant dispute

During the voting phase of the relevant dispute.

  1. Jurors submit deposit of D to cc contract.

  2. Let S be the number of jurors participating in cc. If S>=M/2+E continue, if not abort and release deposits to participants.

  3. 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:

  1. 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).

  2. 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).

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions