Advertisement
s_SoMka_s

Untitled

Feb 20th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. pragma solidity ^0.5.0;
  2.  
  3. contract MyToken{
  4. struct Lot{
  5. address payable lotOwner;
  6. uint tokenCount;
  7. uint price;
  8. bool isActive;
  9. }
  10. uint lotsCount = 0;
  11. mapping (address => uint) public tokenOwners;
  12. address owner;
  13. uint sellingRate;
  14. uint totalSupply;
  15. bool isSaleOpen = true;
  16. mapping (uint => Lot) public lots;
  17.  
  18. constructor (uint _sellingRate) public{
  19. owner = msg.sender;
  20. if (_sellingRate == 1)
  21. sellingRate = 1;
  22. else
  23. sellingRate = _sellingRate;
  24. }
  25.  
  26.  
  27. function CreateLot (uint _price) public{
  28. require(tokenOwners[msg.sender] != 0);
  29. lots[lotsCount].lotOwner = msg.sender;
  30. lots[lotsCount].isActive = true;
  31. lots[lotsCount].price = _price;
  32. lots[lotsCount].tokenCount = tokenOwners[msg.sender];
  33. tokenOwners[msg.sender] = 0;
  34. lotsCount += 1;
  35. }
  36.  
  37. function AcceptLot (uint _lotInd) public payable{
  38. require(msg.value / lots[_lotInd].price >= lots[_lotInd].tokenCount);
  39. require(lots[_lotInd].isActive == true);
  40. tokenOwners[msg.sender] += lots[_lotInd].tokenCount;
  41. (lots[_lotInd].lotOwner).transfer(msg.value);
  42. lots[_lotInd].isActive = false;
  43. }
  44.  
  45. function RegSale (bool mode) public{
  46. require(msg.sender == owner);
  47. isSaleOpen = mode;
  48. }
  49.  
  50. function ChangeSellingRate (uint _sellingRate) public{
  51. require(msg.sender == owner);
  52. if (_sellingRate == 1)
  53. sellingRate = 1;
  54. else
  55. sellingRate = _sellingRate;
  56. }
  57.  
  58. function () external payable{
  59. require(isSaleOpen == true);
  60. require(msg.value >= sellingRate);
  61. tokenOwners[msg.sender] += msg.value / sellingRate;
  62. totalSupply += tokenOwners[msg.sender];
  63. }
  64.  
  65. function BalanceOf (address _person) public view returns(uint){
  66. return tokenOwners[_person];
  67. }
  68.  
  69. function TotalSupply () public view returns(uint){
  70. return totalSupply;
  71. }
  72.  
  73. function Transfer (address _to, uint _ammount) public{
  74. require(msg.sender != _to);
  75. require(tokenOwners[msg.sender] >= _ammount);
  76. tokenOwners[_to] += _ammount;
  77. tokenOwners[msg.sender] -= _ammount;
  78. }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement