Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pragma solidity ^0.5.0;
- contract MyToken{
- struct Lot{
- address payable lotOwner;
- uint tokenCount;
- uint price;
- bool isActive;
- }
- uint lotsCount = 0;
- mapping (address => uint) public tokenOwners;
- address owner;
- uint sellingRate;
- uint totalSupply;
- bool isSaleOpen = true;
- mapping (uint => Lot) public lots;
- constructor (uint _sellingRate) public{
- owner = msg.sender;
- if (_sellingRate == 1)
- sellingRate = 1;
- else
- sellingRate = _sellingRate;
- }
- function CreateLot (uint _price) public{
- require(tokenOwners[msg.sender] != 0);
- lots[lotsCount].lotOwner = msg.sender;
- lots[lotsCount].isActive = true;
- lots[lotsCount].price = _price;
- lots[lotsCount].tokenCount = tokenOwners[msg.sender];
- tokenOwners[msg.sender] = 0;
- lotsCount += 1;
- }
- function AcceptLot (uint _lotInd) public payable{
- require(msg.value / lots[_lotInd].price >= lots[_lotInd].tokenCount);
- require(lots[_lotInd].isActive == true);
- tokenOwners[msg.sender] += lots[_lotInd].tokenCount;
- (lots[_lotInd].lotOwner).transfer(msg.value);
- lots[_lotInd].isActive = false;
- }
- function RegSale (bool mode) public{
- require(msg.sender == owner);
- isSaleOpen = mode;
- }
- function ChangeSellingRate (uint _sellingRate) public{
- require(msg.sender == owner);
- if (_sellingRate == 1)
- sellingRate = 1;
- else
- sellingRate = _sellingRate;
- }
- function () external payable{
- require(isSaleOpen == true);
- require(msg.value >= sellingRate);
- tokenOwners[msg.sender] += msg.value / sellingRate;
- totalSupply += tokenOwners[msg.sender];
- }
- function BalanceOf (address _person) public view returns(uint){
- return tokenOwners[_person];
- }
- function TotalSupply () public view returns(uint){
- return totalSupply;
- }
- function Transfer (address _to, uint _ammount) public{
- require(msg.sender != _to);
- require(tokenOwners[msg.sender] >= _ammount);
- tokenOwners[_to] += _ammount;
- tokenOwners[msg.sender] -= _ammount;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement