Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pragma solidity ^0.4.18;
- contract TokenShares {
- uint private dividend;
- uint private price;
- address private owner;
- mapping(address=>uint) private sharesPerAddress;
- mapping(address=>bool) private addressesAllowedToWithdrawFunds;
- address[] private shareholders;
- function TokenShares(uint initialSupply, uint pricePerShare, uint _dividend) public {
- owner = msg.sender;
- sharesPerAddress[owner] = initialSupply;
- price = pricePerShare * 1 ether;
- dividend = _dividend * 1 ether;
- }
- function getPricePerShare() public view returns(uint) {
- return price / 1 ether;
- }
- function calculateTransactionWorth(uint amount) public view returns(uint) {
- return(amount * price) / 1 ether;
- }
- function buyShares(uint amount) public payable {
- assert(sharesPerAddress[owner] >= amount);
- assert(sharesPerAddress[msg.sender] + amount >= sharesPerAddress);??
- assert(msg.value == );???
- sharesPerAddress[owner] -= amount;
- sharesPerAddress[msg.sender] += amount;
- shareholders.push(msg.sender);
- }
- function getShareholders() public view returns(address[]) {
- require(msg.sender == owner);
- return shareholders;
- }
- function allowWithdraw(address addr) public {
- require(msg.sender == owner);
- addressesAllowedToWithdrawFunds[addr] = true;
- }
- function depositEarnings() public payable {
- require(msg.sender == owner);
- }
- function getBalance() public view returns(uint) {
- require(msg.sender == owner);
- return this.balance / 1 ether;
- }
- function getNumberOfShares(address addr) public view returns(uint) {
- require(msg.sender == addr || msg.sender == owner);
- return sharesPerAddress[addr];
- }
- function withdraw() public {
- require(sharesPerAddress[msg.sender] > 0);
- require(this.balance >= sharesPerAddress[msg.sender] * 1 ether?????);
- require(addressesAllowedToWithdrawFunds[msg.sender] == true);
- msg.sender.transfer(sharesPerAddress[msg.sender] * 1 ether ????);
- addressesAllowedToWithdrawFunds[msg.sender] = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement