ERC20
This contract is an ERC20 token.
Name
WINGS
Symbol
WINGS
Decimals
18
Total Supply
100,000,000 WINGS
About
link
description
Wings (WINGS) is a cryptocurrency and operates on the Ethereum platform. Wings has a current supply of 100,000,000 with 99,999,993.8460583 in circulation. The last known price of Wings is 0.03719835 USD and is down -0.27 over the last 24 hours. It is currently trading on 6 active market(s) with $10,630.39 traded over the last 24 hours. More information can be found at https://wings.ai/.
Stats
Public Functions
13
Event Types
7
Code Size
10,070 bytes
Events (7) keyboard_arrow_up
State Variables (14) keyboard_arrow_up
Functions
transferOwner keyboard_arrow_up
balanceOf keyboard_arrow_up
allowance keyboard_arrow_up
transfer keyboard_arrow_up
Modifiers help
whenAllocation checks for the following:
Source Code
function transfer(address _to, uint256 _value)
whenAllocation(false)
returns (bool success)
{
return super.transfer(_to, _value);
}
transferFrom keyboard_arrow_up
Modifiers help
whenAllocation checks for the following:
Source Code
function transferFrom(
address _from,
address _to,
uint256 _value
) whenAllocation(false) returns (bool success) {
return super.transferFrom(_from, _to, _value);
}
approve keyboard_arrow_up
Modifiers help
whenAllocation checks for the following:
Source Code
function approve(address _spender, uint256 _value)
whenAllocation(false)
returns (bool success)
{
return super.approve(_spender, _value);
}
allocate keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
whenAllocation checks for the following:
whenAccountHasntAllocated checks for the following:
Source Code
function allocate(address user, uint256 balance)
onlyOwner()
whenAllocation(true)
whenAccountHasntAllocated(user)
{
balances[user] = balance;
accountsToAllocate--;
ALLOCATION(user, balance);
}
addPreminer keyboard_arrow_up
Parameters help
Modifiers help
onlyOwner checks for the following:
whenAllocation checks for the following:
whenPremineHasntAllocated checks for the following:
Source Code
function addPreminer(
address preminer,
address recipient,
uint256 initialBalance,
uint256 monthlyPayment
) onlyOwner() whenAllocation(true) whenPremineHasntAllocated(preminer) {
var premine = Preminer(recipient, monthlyPayment, 0, false, 0);
balances[recipient] = safeAdd(balances[recipient], initialBalance);
preminers[preminer] = premine;
accountsToAllocate--;
PREMINER_ADDED(preminer, premine.account, initialBalance);
}
disablePreminer keyboard_arrow_up
Parameters help
Modifiers help
onlyMultisignature checks for the following:
whenPreminerIsntDisabled checks for the following:
Requirements help
Source Code
function disablePreminer(
address _preminer,
address _newPreminer,
address _newRecipient
) onlyMultisignature() whenPreminerIsntDisabled(_preminer) {
var oldPreminer = preminers[_preminer];
if (
oldPreminer.account == address(0) ||
preminers[_newPreminer].account != address(0)
) {
throw;
}
preminers[_newPreminer] = oldPreminer;
preminers[_newPreminer].account = _newRecipient;
oldPreminer.disabled = true;
if (preminers[_newPreminer].disabled == true) {
throw;
}
for (uint256 i = 0; i < preminers[_newPreminer].allocationsCount; i++) {
preminers[_newPreminer].allocations[i] = oldPreminer.allocations[i];
}
PREMINER_CHANGED(_preminer, _newPreminer, _newRecipient);
}
addPremineAllocation keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
whenAllocation checks for the following:
whenPreminerIsntDisabled checks for the following:
Requirements help
Source Code
function addPremineAllocation(address _preminer, uint256 _time)
onlyOwner()
whenAllocation(true)
whenPreminerIsntDisabled(_preminer)
{
var preminer = preminers[_preminer];
if (
preminer.account == address(0) ||
_time == 0 ||
preminer.allocationsCount == MAX_ALLOCATIONS_COUNT
) {
throw;
}
if (preminer.allocationsCount > 0) {
var previousAllocation = preminer.allocations[
preminer.allocationsCount - 1
];
if (previousAllocation > _time) {
throw;
}
if (previousAllocation + DAYS_28 > _time) {
throw;
}
if (previousAllocation + DAYS_31 < _time) {
throw;
}
}
preminer.allocations[preminer.allocationsCount++] = _time;
PREMINE_ALLOCATION_ADDED(_preminer, _time);
}
getPreminer keyboard_arrow_up
Source Code
function getPreminer(address _preminer)
constant
returns (
address,
bool,
uint256,
uint256,
uint256
)
{
var preminer = preminers[_preminer];
return (
preminer.account,
preminer.disabled,
preminer.monthlyPayment,
preminer.latestAllocation,
preminer.allocationsCount
);
}
getPreminerAllocation keyboard_arrow_up
releasePremine keyboard_arrow_up
Parameters help
This function has no parameters.
Modifiers help
whenAllocation checks for the following:
whenPreminerIsntDisabled checks for the following:
Requirements help
Source Code
function releasePremine()
whenAllocation(false)
whenPreminerIsntDisabled(msg.sender)
{
var preminer = preminers[msg.sender];
if (preminer.account == address(0)) {
throw;
}
for (
uint256 i = preminer.latestAllocation;
i < preminer.allocationsCount;
i++
) {
if (preminer.allocations[i] < block.timestamp) {
if (preminer.allocations[i] == 0) {
continue;
}
balances[preminer.account] = safeAdd(
balances[preminer.account],
preminer.monthlyPayment
);
preminer.latestAllocation = i;
PREMINE_RELEASE(
preminer.account,
preminer.allocations[i],
preminer.monthlyPayment
);
preminer.allocations[i] = 0;
} else {
break;
}
}
}
Internal Functions
Internal functions are parts of the contract that can't be used directly, but instead are used by the public functions listed above.
internal SafeMath.safeMul keyboard_arrow_up
Requirements help
Source Code
function safeMul(uint256 a, uint256 b) internal returns (uint256) {
uint256 c = a * b;
assert(a == 0 || c / a == b);
return c;
}
internal SafeMath.safeSub keyboard_arrow_up
internal SafeMath.safeAdd keyboard_arrow_up
Source Code
function safeAdd(uint256 a, uint256 b) internal returns (uint256) {
uint256 c = a + b;
assert(c >= a && c >= b);
return c;
}