Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //JDCoin ICO
- pragma solidity ^0.4.0;
- contract jdcoin_ico {
- // Maximum number of JDCoins
- uint public max_jdcoins = 1000000;
- // The USD to JDCoin Conversion Rate
- uint public usd_to_jdcoins = 1000;
- // Total No. of JDCoins to be held by investors
- uint public total_jdcoins_bought = 0;
- // Mapping from the investor address to its equity in JDCoins and USD
- mapping(address => uint) equity_jdcoins;
- mapping(address => uint) equity_usd;
- // Check if an investor can buy JDCoins
- modifier can_buy_jdcoins(uint usd_invested) {
- require(usd_invested * usd_to_jdcoins + total_jdcoins_bought <= max_jdcoins);
- _;
- }
- // Check if an investor can sell JDCoins
- modifier can_sell_jdcoins(uint jdcoins_sold) {
- require(jdcoins_sold <= total_jdcoins_bought);
- _;
- }
- // Get the equity in JDCoins of an investor
- function equity_in_jdcoins(address investor) external constant returns(uint) {
- return equity_jdcoins[investor];
- }
- // Get the equity in USD of an investor
- function equity_in_usd(address investor) external constant returns(uint) {
- return equity_usd[investor];
- }
- // Buy JDCoin - No return value from this function
- function buy_jdcoins(address investor, uint usd_invested) external
- can_buy_jdcoins(usd_invested) {
- uint jdcoins_bought = usd_invested * usd_to_jdcoins;
- equity_jdcoins[investor] += jdcoins_bought;
- equity_usd[investor] = equity_jdcoins[investor] / usd_to_jdcoins;
- total_jdcoins_bought += jdcoins_bought;
- }
- // Sell JDCoin
- function sell_jdcoins(address investor, uint jdcoins_sold) external
- can_sell_jdcoins(jdcoins_sold) {
- equity_jdcoins[investor] -= jdcoins_sold;
- equity_usd[investor] = equity_jdcoins[investor] / usd_to_jdcoins;
- total_jdcoins_bought -= jdcoins_sold;
- }
- }
Add Comment
Please, Sign In to add comment