vow, a freezable mint-on-demand token with no allowances, deployed 2 October 2016.
Historical Significance
vow drops the ERC-20 allowance machinery entirely: there is no approve and no transferFrom, only a direct transfer that refuses to move anything out of a frozen account. An issuer address set at construction can mint into any account without limit and freeze any account at will, so the supply is open ended and every balance is revocable in practice. The constructor falls back to a million units if the deployer passes zero, and to the deployer itself if no issuer is named.
Context
Deployed by 0xd91fcdcdb5d1f1ae90310b8a9538e2de72582a19, which deployed 0x6bc9d0d682dc696ea3604b6eb93633a6aa6055f5 from identical source fourteen hours later.
Token Information
Key Facts
Description
vow drops the ERC-20 allowance machinery entirely: there is no approve and no transferFrom, only a direct transfer that refuses to move anything out of a frozen account. An issuer address set at construction can mint into any account without limit and freeze any account at will, so the supply is open ended and every balance is revocable in practice. The constructor falls back to a million units if the deployer passes zero, and to the deployer itself if no issuer is named.
Source Verified
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
DAO Fork Era
The controversial fork to recover funds from The DAO hack.
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 Godlcoin {
string public name;
string public symbol;
uint8 public decimals;
address public issuer;
mapping (address => uint256) public balanceOf;
mapping (address => bool) public frozenAccount;
event Transfer(address indexed from, address indexed to, uint256 value);
event FrozenFunds(address target, bool frozen);
function Godlcoin(uint256 initialSupply, string tokenName, uint8 decimalUnits, string tokenSymbol, address centralMinter) {
if (initialSupply == 0) initialSupply = 1000000;
if (centralMinter == 0) centralMinter = msg.sender;
issuer = centralMinter;
balanceOf[centralMinter] = initialSupply;
name = tokenName;
symbol = tokenSymbol;
decimals = decimalUnits;
}
function transfer(address _to, uint256 _value) {
if (balanceOf[msg.sender] < _value || balanceOf[_to] + _value < balanceOf[_to] || frozenAccount[msg.sender]) throw;
balanceOf[msg.sender] -= _value;
balanceOf[_to] += _value;
Transfer(msg.sender, _to, _value);
}
function mintToken(address target, uint256 mintedAmount) {
if (msg.sender != issuer) throw;
balanceOf[target] += mintedAmount;
Transfer(0, target, mintedAmount);
}
function freezeAccount(address target, bool freeze) {
if (msg.sender != issuer) throw;
frozenAccount[target] = freeze;
FrozenFunds(target, freeze);
}
}External Links
Related contracts
rainvow token
Same deployerrainvow token (VOW), the second-attempt redeploy from the same account, 2 October 2016.
0x6bc9d0...6055f5October 3, 2016TT
Same eraA fixed-supply token with direct transfers only, deployed July 2016.
0xf78bdd...f9d225July 20, 2016shares
Same eraAn early on-chain corporation contract by cryptonomica.net, representing company shares as ERC-20 tokens with embedded voting — deployed hours before the DAO ha
0x684282...9a33b5July 20, 2016MyToken
Same eraA fixed-supply token with transfers and allowance spending, deployed July 2016.
0x0eb106...9be583July 23, 2016ReplayProtection
Same eraAlex Van de Sande's post-DAO-fork ETH/ETC replay-protection splitter. Routes ether or ERC20 tokens to different recipients depending on which chain it runs on.
0x64668c...456541July 27, 2016BeerCoin
Same eraERC20-style 'I owe you a beer' IOU ledger by Nick Johnson (ENS). Each transfer creates a personal beer debt; obligations are tracked and transferable.
0x74c1e4...48f4acJuly 29, 2016