Back to HomeToken Name ShitToken Symbol SHIT Decimals 18 Deployer 0xc952b2...e6fe6d Deployment Block 4,061,483 Deployment Date Jul 23, 2017, 08:12 AM Code Size 2.2 KB
Deployed July 23, 2017 (8 years ago)Block 4,061,483
ShitToken (website version) — the announced 0xdbd9837… variant linked from shitcoingod.github.io and BitcoinTalk; full 151 SHIT pre-mint to deployer.
Spurious Dragon EraVerified Source
Token Information
Key Facts
Transactions by Year
20177
20261
Deployment Transaction: 0x0cd145b9f89b0af8...69eab89b98eb271a
Source Verified
SolidityExact bytecode match(2,264 bytes)
Compiler: solc 0.
Byte-for-byte runtime match with native solc 0.4.11 (Darwin/appleclang), optimizer ON, runs=1. Only the 32-byte CBOR swarm metadata hash differs (file-path content hash, not reproducible from source alone). Same compiler signature as the first ShitToken at 0x337bc91. See github.com/cartoonitunes/shittoken-website-verification.
Spurious Dragon Era
Continued DoS protection. State trie clearing.
Block span: 2,675,000 — 4,369,999
November 22, 2016 — October 16, 2017
Bytecode Overview
Opcodes2,264
Unique Opcodes169
Jump Instructions126
Storage Operations38
Verified Source Available
Source verified through compiler archaeology and exact bytecode matching.
View Verification ProofShow source code (Solidity)
// Submitted by EthereumHistory (ethereumhistory.com)
pragma solidity ^0.4.11;
library SafeMath {
function safeMul(uint256 a, uint256 b) internal returns (uint256) {
uint256 c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function safeSub(uint256 a, uint256 b) internal returns (uint256) {
assert(b <= a);
return a - b;
}
function safeAdd(uint256 a, uint256 b) internal returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
contract ShitToken {
using SafeMath for uint256;
uint256 public totalSupply;
mapping (address => uint256) balances;
mapping (address => mapping (address => uint256)) allowed;
string public name;
string public symbol;
uint256 public decimals;
uint256 public INITIAL_SUPPLY;
address public ShitCoinGod;
event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
function ShitToken() {
name = "ShitToken";
symbol = "SHIT";
decimals = 18;
INITIAL_SUPPLY = 151 * 10**18;
totalSupply = INITIAL_SUPPLY;
ShitCoinGod = msg.sender;
balances[ShitCoinGod] = INITIAL_SUPPLY;
}
function () payable {
require(msg.value > 0);
uint256 amount = msg.value;
uint256 tokens = amount.safeMul(10);
require(tokens <= balances[ShitCoinGod]);
allowed[ShitCoinGod][msg.sender] = tokens;
transferFrom(ShitCoinGod, msg.sender, tokens);
}
function approve(address _spender, uint256 _value) returns (bool success) {
require((_value == 0) || (allowed[msg.sender][_spender] == 0));
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
uint256 _allowance = allowed[_from][msg.sender];
balances[_to] = balances[_to].safeAdd(_value);
balances[_from] = balances[_from].safeSub(_value);
allowed[_from][msg.sender] = _allowance.safeSub(_value);
Transfer(_from, _to, _value);
return true;
}
function claimMoney() {
require(msg.sender == ShitCoinGod);
ShitCoinGod.transfer(this.balance);
}
function balanceOf(address _owner) constant returns (uint256 balance) {
return balances[_owner];
}
function transfer(address _to, uint256 _value) returns (bool success) {
balances[msg.sender] = balances[msg.sender].safeSub(_value);
balances[_to] = balances[_to].safeAdd(_value);
Transfer(msg.sender, _to, _value);
return true;
}
function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
return allowed[_owner][_spender];
}
}