Advertisement
Guest User

Untitled

a guest
Feb 19th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. pragma solidity ^0.4.18;
  2.  
  3. contract TokenShares {
  4.     uint private dividend;
  5.     uint private price;
  6.     address private owner;
  7.     mapping(address=>uint) private sharesPerAddress;
  8.     mapping(address=>bool) private addressesAllowedToWithdrawFunds;
  9.     address[] private shareholders;
  10.    
  11.     function TokenShares(uint initialSupply, uint pricePerShare, uint _dividend) public {
  12.         owner = msg.sender;
  13.         sharesPerAddress[owner] = initialSupply;
  14.         price = pricePerShare * 1 ether;
  15.         dividend = _dividend * 1 ether;
  16.     }
  17.    
  18.     function getPricePerShare() public view returns(uint) {
  19.         return price / 1 ether;
  20.     }
  21.    
  22.     function calculateTransactionWorth(uint amount) public view returns(uint) {
  23.         return(amount * price) / 1 ether;
  24.     }
  25.    
  26.     function buyShares(uint amount) public payable {
  27.         assert(sharesPerAddress[owner] >= amount);
  28.         assert(sharesPerAddress[msg.sender] + amount >= sharesPerAddress);??
  29.         assert(msg.value == );???
  30.         sharesPerAddress[owner] -= amount;
  31.         sharesPerAddress[msg.sender] += amount;
  32.         shareholders.push(msg.sender);
  33.     }
  34.    
  35.     function getShareholders() public view returns(address[]) {
  36.         require(msg.sender == owner);
  37.         return shareholders;
  38.     }
  39.    
  40.     function allowWithdraw(address addr) public {
  41.         require(msg.sender == owner);
  42.         addressesAllowedToWithdrawFunds[addr] = true;
  43.     }
  44.    
  45.     function depositEarnings() public payable {
  46.         require(msg.sender == owner);
  47.     }
  48.    
  49.     function getBalance() public view returns(uint) {
  50.         require(msg.sender == owner);
  51.         return this.balance / 1 ether;
  52.     }
  53.    
  54.     function getNumberOfShares(address addr) public view returns(uint) {
  55.         require(msg.sender == addr || msg.sender == owner);
  56.         return sharesPerAddress[addr];
  57.     }
  58.    
  59.     function withdraw() public {
  60.         require(sharesPerAddress[msg.sender] > 0);
  61.         require(this.balance >= sharesPerAddress[msg.sender] * 1 ether?????);
  62.         require(addressesAllowedToWithdrawFunds[msg.sender] == true);
  63.         msg.sender.transfer(sharesPerAddress[msg.sender] * 1 ether ????);
  64.         addressesAllowedToWithdrawFunds[msg.sender] = false;
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement