Advertisement
Guest User

AugurParasite.sol

a guest
Apr 9th, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. contract IMarket {
  2. function getWinningPayoutNumerator(uint256 _outcome) public view returns (uint256);
  3. }
  4.  
  5. contract AugurParasite {
  6.  
  7. address market;
  8.  
  9. address player1;
  10. address player2;
  11.  
  12. uint256 amount1;
  13. uint256 amount2;
  14.  
  15. bool funded1;
  16. bool funded2;
  17.  
  18. constructor(address _player1, address _player2, uint256 _amount1, uint256 _amount2, address _market) public {
  19. player1 = _player1;
  20. player2 = _player2;
  21. amount1 = _amount1;
  22. amount2 = _amount2;
  23. market = _market;
  24. }
  25.  
  26. function() external {
  27. if (msg.sender == player1) {
  28. require(msg.value == amount1, "Wrong amount sent by player 1");
  29. funded1 = true;
  30. } else if (msg.sender == player1) {
  31. require(msg.value == amount2, "Wrong amount sent by player 2");
  32. funded2 = true;
  33. } else {
  34. revert("Payer was not one of the expected players");
  35. }
  36. }
  37.  
  38. function settle() external {
  39. require(funded1 && funded2);
  40. if (IMarket(market).getWinningPayoutNumerator(0) == 100) {
  41. player1.transfer(address(this).balance);
  42. } else {
  43. player2.transfer(address(this).balance);
  44. }
  45. }
  46.  
  47. function forfeit() external {
  48. require(funded1 && funded2);
  49. if (msg.sender == player1) {
  50. player1.transfer(address(this).balance/100);
  51. player2.transfer(address(this).balance);
  52. } else if (msg.sender == player2) {
  53. player2.transfer(address(this).balance/100);
  54. player1.transfer(address(this).balance);
  55. } else {
  56. revert();
  57. }
  58. }
  59.  
  60. function abort() external {
  61. if (msg.sender == player1) {
  62. require(funded1);
  63. require(!funded2);
  64. funded1 = false;
  65. player1.transfer(amount1);
  66. } else if (msg.sender == player2) {
  67. require(funded2);
  68. require(!funded1);
  69. funded2 = false;
  70. player2.transfer(amount2);
  71. } else {
  72. revert("Payer was not one of the expected players");
  73. }
  74. }
  75.  
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement