DoucheCoin (DOUC), one million units at 8 decimals, deployed 19 May 2016.
Historical Significance
DoucheCoin is a joke ticker on an otherwise unmodified tutorial token: transfers, third-party allowances and an approveAndCall hook for contracts that want to be notified when they are approved. The deployer minted 1,000,000 base units against 8 decimals into their own account and left no way to make more and no way to freeze anyone out. Its runtime sits 26 bytes away from the token at 0xfcaf204852781b57c23023aa28f21437f7303505, and every one of those bytes is a jump target or a reordered stack shuffle, which is the signature of one source compiled by two different builds.
Context
Deployed a month before the DAO exploit, at the peak of the 2016 token launch wave.
Token Information
Key Facts
Description
DoucheCoin is a joke ticker on an otherwise unmodified tutorial token: transfers, third-party allowances and an approveAndCall hook for contracts that want to be notified when they are approved. The deployer minted 1,000,000 base units against 8 decimals into their own account and left no way to make more and no way to freeze anyone out. Its runtime sits 26 bytes away from the token at 0xfcaf204852781b57c23023aa28f21437f7303505, and every one of those bytes is a jump target or a reordered stack shuffle, which is the signature of one source compiled by two different builds.
Source Verified
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Homestead Era
The first planned hard fork. Removed the canary contract, adjusted gas costs.
Bytecode Overview
Verified Source Available
Source verified through compiler archaeology and exact bytecode matching.
View Verification ProofShow source code (Solidity)
// Submitted by EthereumHistory (ethereumhistory.com)
contract tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData); }
contract MyToken {
string public standard = "Token 0.1";
string public name;
string public symbol;
uint8 public decimals;
uint256 public totalSupply;
mapping (address => uint256) public balanceOf;
mapping (address => mapping (address => uint256)) public allowance;
event Transfer(address indexed from, address indexed to, uint256 value);
function MyToken(uint256 initialSupply, string tokenName, uint8 decimalUnits, string tokenSymbol) {
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;
balanceOf[msg.sender] -= _value;
balanceOf[_to] += _value;
Transfer(msg.sender, _to, _value);
}
function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
allowance[msg.sender][_spender] = _value;
tokenRecipient spender = tokenRecipient(_spender);
spender.receiveApproval(msg.sender, _value, this, _extraData);
return true;
}
function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
if (balanceOf[_from] < _value) throw;
if (balanceOf[_to] + _value < balanceOf[_to]) throw;
if (_value > allowance[_from][msg.sender]) throw;
balanceOf[_from] -= _value;
balanceOf[_to] += _value;
allowance[_from][msg.sender] -= _value;
Transfer(_from, _to, _value);
return true;
}
function () {
throw;
}
}External Links
Related contracts
token
Same eraBare Homestead-era token (Mar 14 2016): public balanceOf mapping + a single unchecked transfer firing the standard Transfer event.
0xc77f06...494c69March 14, 2016DinastyCoinToken
Same eraHomestead-era transfer-only token, DinastyCoinToken (DCT), fixed supply 200000000 and 6 decimals.
0x3693fd...c11466March 14, 2016token
Same eraMinimal Homestead-era token shell (Mar 14 2016): just a public balanceOf mapping and its compiler-generated getter, with no other functions.
0x38e1da...41a81aMarch 14, 2016CampusCoin
Same eraByte-identical deployment of: Standard ethereum.org tutorial token (Homestead, Mar 2016): name/symbol/decimals metadata, a public balanceOf mapping and an overf
0x00f0b1...e6fcd2March 16, 2016Retch Mining Futures
Same eraBuy/sell token deployed by an early Ethermine miner 7 days after the Homestead fork, still active 10 years later.
0x9c2351...83e874March 21, 2016NetsCoin
Same eraThe ethereum.org 'advanced' MyToken (Homestead, Mar 2016): an issuer-minted token with mintToken, freezeAccount/FrozenFunds and the standard Transfer event.
0x1bf963...c9caabMarch 21, 2016