-
Notifications
You must be signed in to change notification settings - Fork 1
/
Flipcoin20.sol
146 lines (111 loc) · 3.1 KB
/
Flipcoin20.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/******************************************************************************
* COINFLIP MEMBERSHIP TOKEN
* FLIPCOIN [v1.0.0]
* Created: July 17, 2017 04:18
*
* Jack Kasbeer (@jcksber)
* Jethro Au
*
*
******************************************************************************/
import "../lib/Stoppable.sol";
import "../lib/Security.sol";
import "../lib/SafeMath.sol";
import "./Flipcoin_Standard.sol";
pragma solidity ^0.4.11;
contract Flipcoin20 is Stoppable, Flipcoin_Standard(0) {
// Name the token
string public name = "Flipcoin";
// Declare symbol
string public symbol = "FLP";
// Assign decimal #
uint8 public decimals = 18; // standard
// minting lock
bool public mintingLocked = false;
event Mint(address index to, uint256 amount);
event MintFinished();
// constructor function call
function Flipcoin20()
{
super.stop();
}
// Receive ether != bueno
function () { revert(); }
/////////////////////////////
/*--------STOPPABLE--------*/
/////////////////////////////
/*
FLIPCOINS ARE UN-TRADEABLE UNTIL SALE IS FINALIZED
- all functions in this sub-section must have the stoppable modifier
*/
// ERC20 call forwards
function transfer(address dst, uint pot)
stoppable
note
returns (bool)
{
return super.transfer(dst, pot);
}
function transferFrom(address src, address dst, uint pot)
stoppable
note
returns (bool)
{
return super.transferFrom(src, dst, pot);
}
// Alis to approve
function approve(address addy, uint pot)
stoppable
note returns (bool)
{
return super.approve(addy, pot);
}
// Alias to transfer
function push(address dst, uint pot)
stoppable
returns (bool)
{
return transfer(dst, pot);
}
// Alias to transferFrom
function pull(address src, uint pot)
stoppable
returns (bool) {
return transferFrom(src, msg.sender, pot);
}
/////////////////////////////
/*--------MINTING--------*/
/////////////////////////////
/*
ALL FUNCTIONS BELOW ARE FOR MINTING PURPOSES AND WILL BE USED ONLY DURING CROWDSALE
- all functions below must have minting_not_locked modifier
- mint function is only used during crowdsale period
*/
// Create Flipcoins in msg.sender
function mint(address reciever, uint pot)
auth
minting_not_locked
note
{
_balances[reciever] = add(_balances[reciever], pot);
_supply = add(_supply, pot);
Mint(reciever, pot);
}
// lock minting - can be only called once
function finalized()
auth
minting_not_locked
returns (bool)
{
mintingLocked = true;
super.start();
MintFinished():
return true;
}
// modifier for mint lock -- to be only used for mint function
modifier minting_not_locked
{
require(!mintingLocked);
_;
}
}