Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. pragma solidity ^0.4.18;
  2.  
  3. contract Ownable {
  4. address public owner;
  5.  
  6. function Ownable() public {
  7. owner = msg.sender;
  8. }
  9.  
  10. modifier onlyOwner() {
  11. require(msg.sender == owner);
  12. _;
  13. }
  14.  
  15. function transferOwnership(address newOwner) public onlyOwner {
  16. owner = newOwner;
  17. }
  18. }
  19.  
  20. contract FinQueue is Ownable {
  21. uint256 public price = 1e17;
  22. uint256 public max_size = 2;
  23.  
  24. function increasePrice() private {
  25. price = price*3/2;
  26. }
  27.  
  28. function forReturn() private returns(uint256) {
  29. return price*4/5;
  30. }
  31.  
  32.  
  33. mapping (uint256 => address) queue;
  34. uint256 public curr = 0;
  35. uint256 public size = 0;
  36.  
  37. function add() payable public {
  38. require(msg.value >= price);
  39.  
  40. if (size == max_size) {
  41. address outer = queue[curr];
  42. outer.transfer(forReturn());
  43. }
  44. else {
  45. size++;
  46. }
  47. queue[curr] = msg.sender;
  48. curr = (curr + 1) % max_size;
  49.  
  50. if (msg.value > price) {
  51. msg.sender.transfer(msg.value - price);
  52. }
  53. owner.transfer(this.balance);
  54. }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement