-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathaylacoin_ico.sol
62 lines (51 loc) · 1.8 KB
/
aylacoin_ico.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//SPDX-License-Identifier: GPL-3.0-or-later
// Aylacoin'n ICO
//version
pragma solidity ^0.8.7;
contract aylacoin_ico {
// Introduce the max num of aylacoin for sale
uint32 public max_aylacoins = 1000000;
// conversion USD/AC parity
uint32 public usd_to_aylacoin = 100;
//amount of Aylacoins bought by investors
uint32 public total_aylacoins_bought = 0;
// mapping from investor address to its equity in Aylacoin and USD
mapping(address => uint32) equity_aylacoins;
mapping(address => uint32) equity_usd;
// check if investor can buy aylacoin
modifier can_buy_aylacoin(uint32 usd_invested) {
require(
usd_invested * usd_to_aylacoin + total_aylacoins_bought <=
max_aylacoins
);
_;
}
// getting the equity in aylacoins of an investor
function equity_in_aylacoins(address investor)
external
view
returns (uint32)
{
return equity_aylacoins[investor];
}
// getting the equity in usd of an investor
function equity_in_usd(address investor) external view returns (uint32) {
return equity_usd[investor];
}
// Buying Aylacoin
function buy_aylacoin(address investor, uint32 usd_invested)
external
can_buy_aylacoin(usd_invested)
{
uint32 aylacoin_bought = usd_invested * usd_to_aylacoin;
equity_aylacoins[investor] += aylacoin_bought;
equity_usd[investor] = equity_aylacoins[investor] / 100;
total_aylacoins_bought += aylacoin_bought;
}
//selling AylaCoin
function sell_aylacoin(address investor, uint32 aylacoin_sold) external {
equity_aylacoins[investor] -= aylacoin_sold;
equity_usd[investor] = equity_aylacoins[investor] / 100;
total_aylacoins_bought -= aylacoin_sold;
}
}