Fractional ownership of Angry Doge: the scowling Kabosu frame used across r/DogeLore, held in a vault and split into 100 billion ERC20 claims.
Historical Significance
Angry Doge is a derivative that outgrew its source. The frame was unremarkable until people started using it as a character with a temperament, and the meaning it carries now was assigned collectively, years after the shutter closed, by anonymous editors making comics.
That makes it a useful thing to have notarised. The photograph is evidence of a morning in 2010; the name Angry Doge is evidence of what the internet did with it afterwards. The contract records both in one place, which is more than most meme archives manage.
Token Information
Key Facts
Description
The vault holds Zora token 3370, titled Angry Doge. Its metadata calls it perhaps the second most famous image of Doge used in memes, from the same 13 February 2010 session by Atsuko Sato, and credits its second life to communities like Reddit's r/DogeLore, where it was photoshopped into countless comics.
The address people hold is 252 bytes of proxy. InitializedProxy, written by Anna Carroll for fractional.art, stores one immutable address and delegatecalls everything to it: the constructor delegatecalls its initialization calldata, and the fallback forwards every later call. All of the ERC20 behaviour, and all of the buyout machinery, lives in a shared TokenVault deployed once and reused by every vault, alongside a single Settings contract that holds the platform limits.
The vault owns the artwork outright and the tokens are claims on it. Anyone may take the NFT away, but only by buying out every holder at once: reservePrice is the weighted average of the buyout prices individual holders have voted for, and start() refuses a bid below it. There is a second lock as well. Settings requires holders of at least half the supply to have voted a price before any auction can begin, so a quiet holder base is itself a veto.
Holders of about 2 percent of the supply have voted a price, which puts the current reserve at 10,000 ether. A round reserve and almost no turnout: the price was set by a handful of holders and the quorum rule means it could not be acted on anyway.
Source Verified
Bytecode Overview
Verified Source Available
Source verified on Etherscan.
View Verification ProofShow source code (Solidity)
{{
"language": "Solidity",
"sources": {
"contracts/InitializedProxy.sol": {
"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/**\n * @title InitializedProxy\n * @author Anna Carroll\n */\ncontract InitializedProxy {\n // address of logic contract\n address public immutable logic;\n\n // ======== Constructor =========\n\n constructor(\n address _logic,\n bytes memory _initializationCalldata\n ) {\n logic = _logic;\n // Delegatecall into the logic contract, supplying initialization calldata\n (bool _ok, bytes memory returnData) =\n _logic.delegatecall(_initializationCalldata);\n // Revert if delegatecall to implementation reverts\n require(_ok, string(returnData));\n }\n\n // ======== Fallback =========\n\n fallback() external payable {\n address _impl = logic;\n assembly {\n let ptr := mload(0x40)\n calldatacopy(ptr, 0, calldatasize())\n let result := delegatecall(gas(), _impl, ptr, calldatasize(), 0, 0)\n let size := returndatasize()\n returndatacopy(ptr, 0, size)\n\n switch result\n case 0 {\n revert(ptr, size)\n }\n default {\n return(ptr, size)\n }\n }\n }\n\n // ======== Receive =========\n\n receive() external payable {} // solhint-disable-line no-empty-blocks\n}"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 1000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"libraries": {}
}
}}