Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- contract IMarket {
- function getWinningPayoutNumerator(uint256 _outcome) public view returns (uint256);
- }
- contract AugurParasite {
- address market;
- address player1;
- address player2;
- uint256 amount1;
- uint256 amount2;
- bool funded1;
- bool funded2;
- constructor(address _player1, address _player2, uint256 _amount1, uint256 _amount2, address _market) public {
- player1 = _player1;
- player2 = _player2;
- amount1 = _amount1;
- amount2 = _amount2;
- market = _market;
- }
- function() external {
- if (msg.sender == player1) {
- require(msg.value == amount1, "Wrong amount sent by player 1");
- funded1 = true;
- } else if (msg.sender == player1) {
- require(msg.value == amount2, "Wrong amount sent by player 2");
- funded2 = true;
- } else {
- revert("Payer was not one of the expected players");
- }
- }
- function settle() external {
- require(funded1 && funded2);
- if (IMarket(market).getWinningPayoutNumerator(0) == 100) {
- player1.transfer(address(this).balance);
- } else {
- player2.transfer(address(this).balance);
- }
- }
- function forfeit() external {
- require(funded1 && funded2);
- if (msg.sender == player1) {
- player1.transfer(address(this).balance/100);
- player2.transfer(address(this).balance);
- } else if (msg.sender == player2) {
- player2.transfer(address(this).balance/100);
- player1.transfer(address(this).balance);
- } else {
- revert();
- }
- }
- function abort() external {
- if (msg.sender == player1) {
- require(funded1);
- require(!funded2);
- funded1 = false;
- player1.transfer(amount1);
- } else if (msg.sender == player2) {
- require(funded2);
- require(!funded1);
- funded2 = false;
- player2.transfer(amount2);
- } else {
- revert("Payer was not one of the expected players");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement