A hand-assembled EVM test contract by an Ethereum Foundation developer, implementing a single function foo() that returns the integer 5.
Key Facts
Description
Deployed on September 20, 2015 - just 52 days after the Ethereum Frontier launch - from the first Ethereum Foundation cold wallet (EF1), this 57-byte contract is a minimalist but historically significant artifact of early Ethereum development.
The contract implements a single function, foo() (selector 0xc2985578), which returns the integer 5 when called. A second transaction from the same wallet called foo() to confirm it returned the expected value. The two-transaction pattern - deploy then call - is the signature of a deliberate integration test.
Unlike contracts compiled with Solidity v0.1.1 or LLL, this contract does not begin with the standard 6060604052 free memory pointer header. Its runtime bytecode (57 bytes) starts directly with a PUSH29 instruction encoding the 2^224 divisor used for ABI selector extraction - a more direct encoding than the PUSH1/EXP pattern used by contemporary compilers. The constructor uses a JUMP-based bootstrap rather than the simpler PUSH/RETURN pattern, and selector dispatch uses DUP2 before the EQ comparison - a convention seen in Solidity multi-function dispatch templates but written here by hand.
No known compiler from this era produces this exact bytecode. The evidence strongly suggests this was written directly as EVM assembly, by someone deeply familiar with the Ethereum ABI specification - likely to verify that function dispatch, calldata parsing, and uint256 return encoding worked correctly on the newly launched mainnet.
Source Verified
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Frontier Era
The initial release of Ethereum. A bare-bones implementation for technical users.
Bytecode Overview
Verified Source Available
Source verified through compiler archaeology and exact bytecode matching.
View Source CodeShow source code (Yul)
// SPDX-License-Identifier: UNLICENSED
// EF1 foo() contract - exact runtime bytecode reproduced
// Deployer: 0x5eD8Cee6b63b1c6AFce3AD7c92f4fD7E1B8fAd9F (Ethereum Foundation wallet)
// Deploy block: 261486 (2015-09-20)
// Deploy tx: 0x41d4adef128fd092dacee2a48f4c0cec22a8033d86cbf894993572c2d2c6f44e
// Target runtime: 7c01000000000000000000000000000000000000000000000000000000006000350463c2985578811415603757600560405260206040f35b50
//
// Compiles to exact 57-byte runtime using: solc 0.5.17, Yul strict-assembly
// Verification: node verify.js
object "Foo" {
code {
// Constructor: copy runtime to memory and deploy it
let size := datasize("runtime")
datacopy(0, dataoffset("runtime"), size)
return(0, size)
}
object "runtime" {
code {
// Extract 4-byte function selector using DIV by 2^224
// This produces PUSH29 opcode (0x7c), not PUSH1/EXP like Solidity compiler
let sel := div(calldataload(0), 0x100000000000000000000000000000000000000000000000000000000)
// Check if selector matches foo() = keccak256("foo()")[0:4] = 0xc2985578
if eq(sel, 0xc2985578) {
// Return uint256(5) ABI-encoded: store at 0x40, return 32 bytes
mstore(0x40, 5)
return(0x40, 0x20)
}
// Unknown function: implicit revert via JUMPDEST + POP (falls through)
}
}
}