Monolith TKN
ERC20
This contract is an ERC20 token.
Name
Monolith TKN
Symbol
TKN
Decimals
8
Total Supply
39,406,760 TKN
About
link
description
Monolith is a decentralised banking alternative, powered by Ethereum. Monolith provides a non-custodial contract wallet to store Ethereum-based tokens securely. Users can then exchange them to fiat and load them onto their Monolith Visa debit card. The Contract Wallet is non-custodial, open-source, and decentralised. It enforces advanced security features which are designed to protect users funds in the event of an attack. The Monolith Visa debit card is accepted globally and currently available for EEA residents (31 countries within Europe).
The Monolith token, TKN, gives community members a chance to participate in the success of the Monolith card. TKN is backed by a growing basket of ERC-20 tokens that people use to pay for everyday purchases. Each time a Monolith card user spends any other token than TKN, a 1% contribution is sent to the TKN Community Chest. Holders of TKN can then cash and burn their tokens at any time to redeem their share of the chest.
Stats
Public Functions
26
Event Types
3
Code Size
10,000 bytes
Events (3) keyboard_arrow_up
Functions
changeOwner keyboard_arrow_up
acceptOwnership keyboard_arrow_up
Launch keyboard_arrow_up
setOwnerFreeDay keyboard_arrow_up
totalSupply keyboard_arrow_up
setRemainders keyboard_arrow_up
finalizeRemainders keyboard_arrow_up
setController keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function setController(address _controller) onlyOwner {
controller = _controller;
}
claimOwnerSupply keyboard_arrow_up
Parameters help
This function has no parameters.
Modifiers help
onlyOwner checks for the following:
Requirements help
Source Code
function claimOwnerSupply() onlyOwner {
if (now < ownerTokensFreeDay) throw;
if (remainingOwner == 0) throw;
if (!remaindersSet) throw; // must finalize remainders
balanceOf[owner] = safeAdd(balanceOf[owner], remainingOwner);
remainingOwner = 0;
}
claimAuctionableTokens keyboard_arrow_up
Modifiers help
onlyController checks for the following:
Requirements help
Source Code
function claimAuctionableTokens(uint amount) onlyController {
if (amount > remainingAuctionable) throw;
balanceOf[controller] = safeAdd(balanceOf[controller], amount);
currentSupply = safeAdd(currentSupply, amount);
remainingAuctionable = safeSub(remainingAuctionable,amount);
Transfer(0, controller, amount);
}
mint keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
onlyPayloadSize checks for the following:
Requirements help
Source Code
function mint(address addr, uint amount) onlyOwner onlyPayloadSize(2) {
if (mintingDone) throw;
balanceOf[addr] = safeAdd(balanceOf[addr], amount);
currentSupply = safeAdd(currentSupply, amount);
Transfer(0, addr, amount);
}
multiMint keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Requirements help
Source Code
function multiMint(uint[] data) onlyOwner {
if (mintingDone) throw;
uint supplyAdd;
for (uint i = 0; i < data.length; i++ ) {
address addr = address( data[i] & (D160-1) );
uint amount = data[i] / D160;
balanceOf[addr] += amount;
supplyAdd += amount;
Transfer(0, addr, amount);
}
currentSupply += supplyAdd;
}
completeMinting keyboard_arrow_up
transfer keyboard_arrow_up
Modifiers help
isLaunched checks for the following:
notPaused checks for the following:
onlyPayloadSize checks for the following:
Source Code
function transfer(address _to, uint _value) isLaunched notPaused
onlyPayloadSize(2)
returns (bool success) {
if (balanceOf[msg.sender] < _value) return false;
if (_to == 0x0) return false;
balanceOf[msg.sender] = safeSub(balanceOf[msg.sender], _value);
balanceOf[_to] = safeAdd(balanceOf[_to], _value);
Transfer(msg.sender, _to, _value);
return true;
}
transferFrom keyboard_arrow_up
Modifiers help
isLaunched checks for the following:
notPaused checks for the following:
onlyPayloadSize checks for the following:
Source Code
function transferFrom(address _from, address _to, uint _value) isLaunched notPaused
onlyPayloadSize(3)
returns (bool success) {
if (_to == 0x0) return false;
if (balanceOf[_from] < _value) return false;
var allowed = allowance[_from][msg.sender];
if (allowed < _value) return false;
balanceOf[_to] = safeAdd(balanceOf[_to], _value);
balanceOf[_from] = safeSub(balanceOf[_from], _value);
allowance[_from][msg.sender] = safeSub(allowed, _value);
Transfer(_from, _to, _value);
return true;
}
approve keyboard_arrow_up
Modifiers help
onlyPayloadSize checks for the following:
Source Code
function approve(address _spender, uint _value)
onlyPayloadSize(2)
returns (bool success) {
//require user to set to zero before resetting to nonzero
if ((_value != 0) && (allowance[msg.sender][_spender] != 0)) {
return false;
}
allowance[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
increaseApproval keyboard_arrow_up
Modifiers help
onlyPayloadSize checks for the following:
Source Code
function increaseApproval (address _spender, uint _addedValue)
onlyPayloadSize(2)
returns (bool success) {
uint oldValue = allowance[msg.sender][_spender];
allowance[msg.sender][_spender] = safeAdd(oldValue, _addedValue);
Approval(msg.sender, _spender, allowance[msg.sender][_spender]);
return true;
}
decreaseApproval keyboard_arrow_up
Modifiers help
onlyPayloadSize checks for the following:
Source Code
function decreaseApproval (address _spender, uint _subtractedValue)
onlyPayloadSize(2)
returns (bool success) {
uint oldValue = allowance[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowance[msg.sender][_spender] = 0;
} else {
allowance[msg.sender][_spender] = safeSub(oldValue, _subtractedValue);
}
Approval(msg.sender, _spender, allowance[msg.sender][_spender]);
return true;
}
approveAndCall keyboard_arrow_up
Source Code
function approveAndCall(address _spender, uint256 _amount, bytes _extraData
) returns (bool success) {
if (!approve(_spender, _amount)) throw;
ApproveAndCallFallBack(_spender).receiveApproval(
msg.sender,
_amount,
this,
_extraData
);
return true;
}
lockTokenHolder keyboard_arrow_up
setTokenHolder keyboard_arrow_up
burn keyboard_arrow_up
Source Code
function burn(uint _amount) notPaused returns (bool result) {
if (_amount > balanceOf[msg.sender]) return false;
balanceOf[msg.sender] = safeSub(balanceOf[msg.sender], _amount);
currentSupply = safeSub(currentSupply, _amount);
result = tokenholder.burn(msg.sender, _amount);
if (!result) throw;
Transfer(msg.sender, 0, _amount);
}
claimTokens keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function claimTokens(address _token) onlyOwner {
if (_token == 0x0) {
owner.transfer(this.balance);
return;
}
Token token = Token(_token);
uint balance = token.balanceOf(this);
token.transfer(owner, balance);
logTokenTransfer(_token, owner, balance);
}