Back to Home

EF1 ABI Test (foo() address)

Unknown
0xdf8eb001f293...e4a09bd9e48d
FrontierExact Bytecode Match
Deployed September 20, 2015 (10 years ago)Block 262,005

Ethereum Foundation ABI test contract. foo() returns a hardcoded 21-byte address value. Part of the Sep 20, 2015 EF1 wallet test suite.

Key Facts

Deployer
Ethereum Foundation(0x5eD8Ce...8fAd9F)
Deployment Block
262,005
Deployment Date
Sep 20, 2015, 08:48 AM
Code Size
92.0 B
Gas at Deploy
40,720

Description

EF1 ABI Test Suite

On September 20, 2015, the Ethereum Foundation wallet 0x5eD8Cee6b63b1c6AFce3AD7c92f4fD7E1B8fAd9F deployed three ABI test contracts in a 6-hour window:

Time (UTC)AddressFunctionReturns
06:280xe30608b5foo()uint256(5)
08:480xdf8eb001foo()address
09:350x441e72c6bar(uint256)x + 2

foo() (selector 0xc2985578) returns a fixed 21-byte value 0x05CBAeB5B771Cf21b59f17Ea9c70915A27041E5409. The extra leading byte makes it 21 bytes, pushed via PUSH21 (0x74).

The bytecode uses the pre-ABI dispatcher pattern: PUSH29 with 2^224, then DIV against CALLDATALOAD(0) to extract the 4-byte selector. This hand-crafted low-level EVM style predates Solidity's standardized PUSH1 0xe0 / EXP sequence.

Cracked in 2026 using solc 0.5.17 Yul strict-assembly. The 21-byte constant is the key detail.

Source Verified

yulExact bytecode match(92 bytes)
Compiler: v0.5.17

77 bytes. Yul strict-assembly, solc 0.5.17. Return value is 21-byte constant forcing PUSH21.

Heuristic Analysis

The following characteristics were detected through bytecode analysis and may not be accurate.

Detected Type: Unknown

Frontier Era

The initial release of Ethereum. A bare-bones implementation for technical users.

Block span: 01,149,999
July 30, 2015March 14, 2016

Bytecode Overview

Opcodes92
Unique Opcodes48
Jump Instructions4
Storage Operations2

Verified Source Available

Source verified through compiler archaeology and exact bytecode matching.

View Verification Proof
Show source code (Yul)
object "Foo" {
  code {
    let size := datasize("runtime")
    datacopy(0, dataoffset("runtime"), size)
    return(0, size)
  }
  object "runtime" {
    code {
      let sel := div(calldataload(0), 0x100000000000000000000000000000000000000000000000000000000)
      if eq(sel, 0xc2985578) {
        mstore(0x40, 0x05CBAeB5B771Cf21b59f17Ea9c70915A27041E5409)
        return(0x40, 0x20)
      }
    }
  }
}

External Links