Back to HomeToken Name Unicorns Symbol 🦄 Decimals 0
Deployed February 11, 2016 (10 years ago)Block 988,921
Unicorns token by avsa (Alex Van de Sande). Ethereum.org Advanced Token template without payable fallback.
Token Information
Key Facts
Deployment Transaction: 0x9cfdcb07930f9030...9ea2a80bccf8d7c1
Source Verified
SolidityNear-exact bytecode match
Compiler: solc ~v
Source reconstructed from bytecode. Same ethereum.org Advanced Token template as 1830b siblings, minus payable fallback. Compiled with unknown Mist-embedded compiler snapshot.
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Detected Type: Token
Has ERC-20-like patterns
Frontier Era
The initial release of Ethereum. A bare-bones implementation for technical users.
Block span: 0 — 1,149,999
July 30, 2015 — March 14, 2016
Bytecode Overview
Opcodes2,574
Unique Opcodes172
Jump Instructions122
Storage Operations78
Verified Source Available
This contract has verified source code.
View Verification ProofShow source code (Solidity)
contract MyToken {
address public owner;
string public name;
string public symbol;
uint8 public decimals;
uint256 public totalSupply;
mapping (address => uint256) public balanceOf;
mapping (address => bool) public frozenAccount;
mapping (address => mapping (address => uint256)) public allowance;
mapping (address => mapping (address => uint256)) public spentAllowance;
event Transfer(address indexed from, address indexed to, uint256 value);
event FrozenFunds(address target, bool frozen);
function MyToken(uint256 initialSupply, string tokenName, uint8 decimalUnits, string tokenSymbol, address centralMinter) {
owner = msg.sender;
if(centralMinter != 0 ) owner = centralMinter;
balanceOf[msg.sender] = initialSupply;
totalSupply = initialSupply;
name = tokenName;
symbol = tokenSymbol;
decimals = decimalUnits;
}
function transfer(address _to, uint256 _value) {
if (balanceOf[msg.sender] < _value) throw;
if (balanceOf[_to] + _value < balanceOf[_to]) throw;
if (frozenAccount[msg.sender]) throw;
balanceOf[msg.sender] -= _value;
balanceOf[_to] += _value;
Transfer(msg.sender, _to, _value);
}
function approve(address _spender, uint256 _value) returns (bool success) {
allowance[msg.sender][_spender] = _value;
}
function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
if (balanceOf[_from] < _value) throw;
if (balanceOf[_to] + _value < balanceOf[_to]) throw;
if (frozenAccount[_from]) throw;
if (spentAllowance[_from][msg.sender] + _value > allowance[_from][msg.sender]) throw;
balanceOf[_from] -= _value;
balanceOf[_to] += _value;
spentAllowance[_from][msg.sender] += _value;
Transfer(msg.sender, _to, _value);
}
function mintToken(address target, uint256 mintedAmount) {
if (msg.sender != owner) throw;
balanceOf[target] += mintedAmount;
totalSupply += mintedAmount;
Transfer(owner, target, mintedAmount);
}
function freezeAccount(address target, bool freeze) {
if (msg.sender != owner) throw;
frozenAccount[target] = freeze;
FrozenFunds(target, freeze);
}
function transferOwnership(address newOwner) {
if (msg.sender != owner) throw;
owner = newOwner;
}
}