Event emitter library for the Devcon 2 attendee token
Historical Significance
A non fungible token event interface written more than a year before ERC-721 was proposed. The source comment points at solidity issue 1215, which is why the events live in a library at all.
Context
Deployed in the Homestead era, two months after Devcon 2 in Shanghai.
Key Facts
Description
TokenEventLib exists so that a token contract can emit Transfer and Approval events from library code, which Solidity could not do directly at the time. The events carry a bytes32 token identifier rather than an amount, because the Devcon 2 token gives each attendee a distinct token instead of a divisible balance. Deployed on 2 November 2016 by 0xd3cda913deb6f67967b99d67acdfa1712c293601, the account of Piper Merriam, and recovered from pipermerriam/devcon2-token.
Source Verified
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Tangerine Whistle Era
Emergency fork to address DoS attacks. Repriced IO-heavy opcodes.
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)
pragma solidity ^0.4.0;
library TokenEventLib {
/*
* When underlying solidity issue is fixed this library will not be needed.
* https://github.com/ethereum/solidity/issues/1215
*/
event Transfer(address indexed _from,
address indexed _to,
bytes32 indexed _tokenID);
event Approval(address indexed _owner,
address indexed _spender,
bytes32 indexed _tokenID);
function _Transfer(address _from, address _to, bytes32 _tokenID) public {
Transfer(_from, _to, _tokenID);
}
function _Approval(address _owner, address _spender, bytes32 _tokenID) public {
Approval(_owner, _spender, _tokenID);
}
}External Links
Related contracts
MemberRegistry
Same deployerOwner-controlled dynamic-array member registry.
0x1f3b19...7c161aAugust 13, 2015Members
Same deployerOwner-controlled member registry with array + mapping tracking.
0xaeb2ac...a5fd37August 14, 2015MembershipRoster
Same deployerAn Ethereum Public Trust roster contract for adding, removing, and checking members.
0xf1d327...aa0455August 14, 2015KillMul
Same deployerTest/utility contract with `suicide(address)` kill switch and a `multiply2` helper.
0x3e5e1f...7c78cdAugust 14, 2015Members
Same deployerOwner-controlled member registry using sequential id + mapping storage.
0xc6810e...db4e6fAugust 14, 2015CallerPool
Same deployerThe bonded caller pool of the Ethereum Alarm Clock: callers post a bond, take turns being the designated executor, and forfeit it if they miss.
0x329219...fc3e8bSeptember 22, 2015