-
Notifications
You must be signed in to change notification settings - Fork 0
/
Potatoken.sol
132 lines (108 loc) · 4.87 KB
/
Potatoken.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
/*
This file is part of the DPS.
The DPS is free software: you can redistribute it and/or modify
it under the terms of the GNU lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
The DPS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU lesser General Public License for more details.
You should have received a copy of the GNU lesser General Public License
along with the DPS. If not, see <http://www.gnu.org/licenses/>.
*/
/*
Basic, standardized Potatoken contract with no "premine". Defines the functions to
check Potatoken balances, send Potatokens, send Potatokens on behalf of a 3rd party and the
corresponding approval process. Potatokens need to be created by a derived
contract (e.g. PotatokenCreation.sol).
Thank you ConsenSys, this contract originated from:
https://github.com/ConsenSys/Potatokens/blob/master/Potatoken_Contracts/contracts/Standard_Potatoken.sol
Which is itself based on the Ethereum standardized contract APIs:
https://github.com/ethereum/wiki/wiki/Standardized_Contract_APIs
*/
/// @title Standard Potatoken Contract.
contract PotaPotatokenInterface {
mapping (address => uint256) balances;
mapping (address => mapping (address => uint256)) allowed;
/// Total amount of Potatokens
uint256 public totalSupply;
/// @param _owner The address from which the balance will be retrieved
/// @return The balance
function balanceOf(address _owner) constant returns (uint256 balance);
/// @notice Send `_amount` Potatokens to `_to` from `msg.sender`
/// @param _to The address of the recipient
/// @param _amount The amount of Potatokens to be transferred
/// @return Whether the transfer was successful or not
function transfer(address _to, uint256 _amount) returns (bool success);
/// @notice Send `_amount` Potatokens to `_to` from `_from` on the condition it
/// is approved by `_from`
/// @param _from The address of the origin of the transfer
/// @param _to The address of the recipient
/// @param _amount The amount of Potatokens to be transferred
/// @return Whether the transfer was successful or not
// function transferFrom(address _from, address _to, uint256 _amount) returns (bool success);
/// @notice `msg.sender` approves `_spender` to spend `_amount` Potatokens on
/// its behalf
/// @param _spender The address of the account able to transfer the Potatokens
/// @param _amount The amount of Potatokens to be approved for transfer
/// @return Whether the approval was successful or not
// function approve(address _spender, uint256 _amount) returns (bool success);
/// @param _owner The address of the account owning Potatokens
/// @param _spender The address of the account able to transfer the Potatokens
/// @return Amount of remaining Potatokens of _owner that _spender is allowed
/// to spend
/*function allowance(
address _owner,
address _spender
) constant returns (uint256 remaining);*/
event Transfer(address indexed _from, address indexed _to, uint256 _amount);
/*event Approval(
address indexed _owner,
address indexed _spender,
uint256 _amount
);*/
}
contract Potatoken is PotatokenInterface {
// Protects users by preventing the execution of method calls that
// inadvertently also transferred ether
modifier noEther() {if (msg.value > 0) throw; _}
function balanceOf(address _owner) constant returns (uint256 balance) {
return balances[_owner];
}
function transfer(address _to, uint256 _amount) noEther returns (bool success) {
if (balances[msg.sender] >= _amount && _amount > 0) {
balances[msg.sender] -= _amount;
balances[_to] += _amount;
Transfer(msg.sender, _to, _amount);
return true;
} else {
return false;
}
}
/*function transferFrom(
address _from,
address _to,
uint256 _amount
) noEther returns (bool success) {
if (balances[_from] >= _amount
&& allowed[_from][msg.sender] >= _amount
&& _amount > 0) {
balances[_to] += _amount;
balances[_from] -= _amount;
allowed[_from][msg.sender] -= _amount;
Transfer(_from, _to, _amount);
return true;
} else {
return false;
}
}
function approve(address _spender, uint256 _amount) returns (bool success) {
allowed[msg.sender][_spender] = _amount;
Approval(msg.sender, _spender, _amount);
return true;
}*/
/*function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
return allowed[_owner][_spender];
}*/
}