Buy/sell token deployed by an early Ethermine miner 7 days after the Homestead fork, still active 10 years later.
Historical Significance
Retch Mining Futures (RMF) is a buy/sell ERC-20 deployed 7 days after Homestead, built from the canonical Solidity tutorial MyToken template. The constructor contains a quirky no-op line, if (centralMinter != 0) owner = msg.sender;, that is effectively dead code because the inherited owned() constructor already set owner to msg.sender. The deployer was an early Ethereum miner (received rewards from Ethermine) and a TheDAO participant. Despite the obscure name and tiny 1,000-unit supply, the contract still holds 1 ETH and has been bought from as recently as May 2026, a decade after deployment.
Context
Deployed on March 21, 2016, exactly one week after Ethereum's Homestead hard fork at block 1,150,000. This was the height of early Ethereum experimentation: token contracts were built from copy-paste tutorials, miners were the dominant power users, and the TheDAO crowdsale was midway through gathering ETH ahead of its June 2016 exploit. The deployer was itself an Ethermine miner and TheDAO depositor, placing RMF squarely in the Frontier-to-Homestead miner culture that shaped Ethereum's first year.
Token Information
Key Facts
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 owned {
address public owner;
function owned() {
owner = msg.sender;
}
modifier onlyOwner {
if (msg.sender != owner) throw;
_
}
function transferOwnership(address newOwner) onlyOwner {
owner = newOwner;
}
}
contract MyToken is owned {
string public name;
string public symbol;
uint8 public decimals;
uint256 public sellPrice;
uint256 public buyPrice;
mapping (address => uint256) public balanceOf;
event Transfer(address indexed from, address indexed to, uint256 value);
function MyToken(
uint256 initialSupply,
string tokenName,
uint8 decimalUnits,
string tokenSymbol,
address centralMinter
) {
if (initialSupply == 0) initialSupply = 1000000;
if (centralMinter != 0) owner = msg.sender;
balanceOf[msg.sender] = 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 setPrices(uint256 newSellPrice, uint256 newBuyPrice) onlyOwner {
sellPrice = newSellPrice;
buyPrice = newBuyPrice;
}
function buy() {
uint amount = msg.value / buyPrice;
if (balanceOf[this] < amount) throw;
balanceOf[msg.sender] += amount;
balanceOf[this] -= amount;
Transfer(this, msg.sender, amount);
}
function sell(uint amount) {
if (balanceOf[msg.sender] < amount) throw;
balanceOf[this] += amount;
balanceOf[msg.sender] -= amount;
msg.sender.send(amount * sellPrice);
Transfer(msg.sender, this, amount);
}
}