Back to Home

EFSubMultisig

Unknown
0x209711382eae...c5afa9b23d25
FrontierExact Bytecode Match
Deployed August 12, 2015 (10 years ago)Block 72,142

Ethereum Foundation internal sub-multisig (Serpent, Aug 2015). Three EF developer keys, majority vote to execute motions.

Key Facts

Deployment Block
72,142
Deployment Date
Aug 12, 2015, 02:52 AM
Code Size
834.0 B
Gas at Deploy
301,223
Transactions by Year
20152

Description

One of the earliest multisig governance contracts on Ethereum, written in Serpent by the Ethereum Foundation core team in August 2015 - just days after Frontier launch. The contract implements a simple 3-of-3 signer model where any majority (2+) can execute motions. Three EF core developer addresses are hardcoded in the constructor (slots 0-2): 0x23a1bada..., 0x288bbeb7..., and 0x5ed8cee6... (the deployer). Signer 2 also deployed the EF Foundation Wallet (0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae) and used this sub-multisig to authorize wallet operations. A twin contract at 0x2194b1734ee0f67440884da49952a45b34ba832d was deployed 23 minutes earlier in the same session. Both saw only three transactions: deploy, createMotion test, and signMotion test. Deploy TX: 0x13cba3a6c151c19cce0778688fa644edec2f01dede3939512eb5dba185e37ccd.

Source Verified

SerpentExact bytecode match(834 bytes)
Compiler: ethereu

First 738 bytes of Serpent-compiled output match the 738-byte on-chain runtime exactly. The compiled output produces 742 bytes total; the final 4 bytes (5b 60 00 f3 = JUMPDEST PUSH1 0x00 RETURN) are a trailing return stub emitted by newer Serpent but absent in the deployer version. Identical bytecode also deployed at 0x2194b1734ee0f67440884da49952a45b34ba832d (block 72,119, 23 minutes earlier). Function selectors: 0x403147b6 = createMotion(addr,data:bytes32), 0xa42c4de7 = signMotion(slot,proposal_id). Storage layout: slots 0-2 = signers, 0x0100 = num_signers (3), 0x0101 = next_proposal_id, sha3([2,id,0-3]) = proposal fields.

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

Opcodes834
Unique Opcodes101
Jump Instructions30
Storage Operations22

Verified Source Available

Source verified through compiler archaeology and exact bytecode matching.

View Verification Proof
Show source code (Serpent)
data _p0
data _p1
data proposals[][4]

def createMotion(addr, data:bytes32):
    idx = self.storage[0x0101]
    self.proposals[idx][0] = addr
    self.proposals[idx][3] = data
    self.storage[0x0101] = idx + 1

def signMotion(slot, proposal_id):
    if msg.sender == self.storage[slot]:
        voted = self.proposals[proposal_id][1] & 2**slot
        if not voted:
            self.proposals[proposal_id][1] = self.proposals[proposal_id][1] | 2**slot
            self.proposals[proposal_id][2] = self.proposals[proposal_id][2] + 1
            if self.proposals[proposal_id][2] > self.storage[0x0100] / 2:
                value = self.proposals[proposal_id][0]
                if value == 0:
                    log(self.proposals[proposal_id][3])
                self.proposals[proposal_id][0] = 0
                self.proposals[proposal_id][1] = 0
                self.proposals[proposal_id][2] = 0
                self.proposals[proposal_id][3] = 0

External Links