A Peperium meme card from May 2017, street art issued as its own ERC20 contract with a fixed supply of 10.
Historical Significance
Peperium put Pepe trading cards on Ethereum, following the Rare Pepe series that began on Bitcoin's Counterparty layer, and PEPESTREET is one of the individual cards that made up that experiment. Its value as a record is in the shape rather than the picture: in 2017 a collectible was a token contract, so a seventeen card release meant seventeen deployments, and a collection of them could not be held or shown as one thing until a wrapper was written years later to gather them up.
Context
Deployed 2017-05-02 by 0x378ff330eff4091213a7f05c75dea07a411b17b8, one of three addresses that released the series. Supply 10, zero decimals, 3788 bytes of runtime code, identical across every Peperium card. Referenced by the Peperium ERC1155 wrapper at 0xfe880206214856f984d4f64fc89c26681dca15a2, which consolidates 32 of these cards into a single contract.
Token Information
Key Facts
Description
PEPESTREET is one card from the Peperium series, deployed on 2017-05-02. Peperium gave every card its own contract rather than issuing them as ids inside one collection, so this address is the whole card: a plain ERC20 with zero decimals, a supply fixed at 10 and no owner functions to mint more. A holder owns one of 10. The Peperium wrapper holds 1 of them. The contract shares its bytecode exactly with the other Peperium cards, which were stamped from one template as the series was released through May 2017.
Spurious Dragon Era
Continued DoS protection. State trie clearing.
Bytecode Overview
Verified Source Available
This contract has verified source code on Etherscan.
Show source code (Solidity)
pragma solidity ^0.4.10;
contract tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData); }
contract owned {
address public owner;
function owned() {
owner = msg.sender;
}
modifier onlyOwner {
if (msg.sender != owner) throw;
_;
}
function transferOwnership(address newOwner) onlyOwner {
owner = newOwner;
}
}
contract CardToken is owned {
string public standard = 'Token 0.1';
string public name;
string public symbol;
string public ipfs_hash;
string public description;
bool public isLocked;
uint8 public decimals;
uint256 public totalSupply;
/* This creates an array with all balances */
mapping (address => uint256) public balanceOf;
mapping (address => mapping (address => uint256)) public allowance;
/* This generates a public event on the blockchain that will notify clients */
event Transfer(address indexed from, address indexed to, uint256 value);
/* Initializes contract with initial supply tokens to the creator of the contract */
function CardToken(
uint256 initialSupply,
string tokenName,
string tokenSymbol,
string tokenDescription,
string ipfsHash
) {
balanceOf[msg.sender] = initialSupply; // Give the creator all initial tokens
totalSupply = initialSupply; // Update total supply
name = tokenName; // Set the name for display purposes
symbol = tokenSymbol; // Set the symbol for display purposes (first three as name or three char combo)
description = tokenDescription; //Description in gallery
ipfs_hash = ipfsHash;
decimals = 0; // Amount of decimals for display purposes
}
/* Send coins */
function transfer(address _to, uint256 _value) {
if (balanceOf[msg.sender] < _value) throw; // Check if the sender has enough
if (balanceOf[_to] + _value < balanceOf[_to]) throw; // Check for overflows
balanceOf[msg.sender] -= _value; // Subtract from the sender
balanceOf[_to] += _value; // Add the same to the recipient
}
/* Allow another contract to spend some tokens in your behalf */
function approve(address _spender, uint256 _value)
returns (bool success) {
allowance[msg.sender][_spender] = _value;
return true;
}
/* Approve and then comunicate the approved contract in a single tx */
function approveAndCall(address _spender, uint256 _value, bytes _extraData)
returns (bool success) {
tokenRecipient spender = tokenRecipient(_spender);
if (approve(_spender, _value)) {
spender.receiveApproval(msg.sender, _value, this, _extraData);
return true;
}
}
/* A contract attempts to get the coins */
function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
if (balanceOf[_from] < _value) throw; // Check if the sender has enough
if (balanceOf[_to] + _value < balanceOf[_to]) throw; // Check for overflows
if (_value > allowance[_from][msg.sender]) throw; // Check allowance
balanceOf[_from] -= _value; // Subtract from the sender
balanceOf[_to] += _value; // Add the same to the recipient
allowance[_from][msg.sender] -= _value;
Transfer(_from, _to, _value);
return true;
}
function mintToken(address target, uint256 mintedAmount) onlyOwner {
if (isLocked) { throw; }
balanceOf[target] += mintedAmount;
totalSupply += mintedAmount;
Transfer(0, this, mintedAmount);
Transfer(this, target, mintedAmount);
}
function lock() onlyOwner {
isLocked = true;
}
function setDescription(string desc) onlyOwner {
description = desc;
}
/* This unnamed function is called whenever someone tries to send ether to it */
function () {
throw; // Prevents accidental sending of ether
}
}External Links
Related contracts
ZENPEPE
Same deployerA Peperium meme card from May 2017, a meditation scene issued as its own ERC20 contract with a fixed supply of 3.
0xa3832b...5df5deMay 2, 2017PEPRESSIONISM
Same deployerA Peperium meme card from May 2017, an impressionist painting issued as its own ERC20 contract with a fixed supply of 3.
0x8b990d...e7fb66May 2, 2017MONAPEPE
Same deployerA Peperium meme card from May 2017, the Mona Lisa issued as its own ERC20 contract with a fixed supply of 1.
0xa87c5d...c117a2May 4, 2017LORDRARE
Same deployerA Peperium meme card from May 2017, a portrait of nobility issued as its own ERC20 contract with a fixed supply of 10.
0xed01ca...735077May 5, 2017BATPEPE
Same deployerA Peperium meme card from May 2017, Batman issued as its own ERC20 contract with a fixed supply of 16.
0x9f0bf0...35a66eMay 8, 2017NEVERENDINGPEPE
Same deployerA Peperium meme card from May 2017, a recursive joke issued as its own ERC20 contract with a fixed supply of 6.
0xd3fab0...029f54May 14, 2017