A 2-of-3 motion register deployed by the Ethereum Foundation's EF 1 wallet on 12 August 2015: three hardcoded keys co-sign to emit one onchain event.
Historical Significance
The first preserved contract deployed by the Ethereum Foundation "EF 1" developer wallet, and an early example of multi-party coordination on Ethereum. The design, inspired by the multisig concept but stripped to its simplest form, captures how the core team was experimenting with on-chain governance primitives in the days after Frontier launch. A twin contract with identical bytecode was deployed 23 minutes earlier at 0x2194b1734ee0f67440884da49952a45b34ba832d, likely a test run. It is also one of the very few Serpent contracts from 2015 whose source has been recovered to an exact bytecode match; Serpent was deprecated in 2017 and is supported by no contemporary verification service.
Context
Ethereum Frontier launched July 30, 2015. In the first two weeks, core developers deployed foundational infrastructure including wallets, registries, and coordination tools. The EF 1 address was one of several EF developer keys active in this period, and this contract appears to be part of an initial operational setup. The three signer slots hold addresses with no other on-chain transaction history, likely cold or hardware wallets held by different EF team members whose identities have not been publicly confirmed. On-chain storage confirms the three signers: 0x23a1bada327be1da636cf6c31f71349e3ea0ba00, 0x288bbeb76a509947f3ea8c56e9b86d81f3b41897, and 0x5ed8cee6b63b1c6afce3ad7c92f4fd7e1b8fad9f. The contract was used only three times, all on its deployment day. The same EF 1 wallet later deployed a commit-reveal gambling contract at block 235,543 (0xaf5558b1b834be59b9ff94e05c17bae9257c9bf1); its storage layout and compiler have been identified, but two of its function names remain unrecovered, so it is not yet bytecode-verified.
This contract was written in Serpent, Ethereum's Python-like language from the Frontier era. Serpent was deprecated in 2017 after security concerns, and neither Etherscan nor Sourcify supports Serpent verification today, so its source cannot be published through the usual block-explorer channels.
Key Facts
Description
A multi-party motion register deployed by the Ethereum Foundation "EF 1" wallet at block 72,142 on August 12, 2015, thirteen days after Frontier launched. Three signer addresses are hardcoded by the constructor, and the approval threshold is count > numSigners / 2, which with three signers means two, making this a 2-of-3 scheme.
The source has been recovered by bytecode archaeology and matches the on-chain code exactly: 738 of 738 runtime bytes, and 834 of 834 creation bytes including the three hardcoded signer addresses. It was compiled with Serpent 2.0.0, built from ethereum/serpent commit 6ace8a6 of 10 July 2015, the last commit to the Serpent compiler before this contract was deployed.
The recovered source has two entry points. createMotion(int256,bytes32) registers a motion at the next free index, storing a value (an address slot) and a payload hash. signMotion(int256,int256) lets the signer occupying a given slot approve a motion; each signer's approval is recorded as bit 2**slot in a per-motion vote bitmask, so a signer cannot vote twice. When the vote count passes the threshold, the contract checks the motion's stored value: if it is zero, the payload is emitted as a LOG1 event. All four fields of the motion are then cleared.
Despite the "EFSubMultisig" label, this is not a multisig in the usual sense. It holds no funds, cannot transfer ETH, and cannot call other contracts. It is a coordination and signalling primitive: three Ethereum Foundation developer keys agreeing to put a message on-chain.
Storage layout, confirmed from the bytecode: slots 0x00-0xFF hold signers[256], slot 0x0100 holds the signer count, slot 0x0101 holds the next motion index, and motion fields live at sha3([2, id, field]).
Source Verified
Exact match confirmed 2026-08-24: runtime 738/738 bytes and creation 834/834 bytes (including the three hardcoded signer addresses set in def init()). Compiled with Serpent 2.0.0 built from ethereum/serpent commit 6ace8a6 (10 Jul 2015), the last commit before the 12 Aug 2015 deployment. Key finding: the storage keys come from a Serpent 'data motions[](value, votes, count, payload)' struct-array declaration, not hand-written sha3 array literals - a Serpent array literal allocates n*32+32 bytes and writes a length prefix that this contract's bytecode does not contain. Earlier reconstructions using explicit sha3([2, idx, field], items=3) compiled to 815 bytes and were NOT exact.. Optimizer: OFF
Historian Categories
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 Verification ProofShow 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] = 0External Links
Related contracts
EF Wallet
Same deployerThe Ethereum Foundation's primary treasury wallet - a 4-of-7 multisig written by Gavin Wood, deployed 9 days after mainnet launch. The ancestor of the Parity mu
0xde0b29...697baeAugust 8, 2015Gamble
Same deployerA provably-fair commit-reveal gambling contract from the Ethereum dapp-bin, deployed 47 days after Frontier genesis.
0xaf5558...7c9bf1September 15, 2015Ethereum Multisig Wallet (EF Signer)
Same eraA personal multisig wallet deployed 20 days after Ethereum's Frontier launch by a confirmed Ethereum Foundation multisig signer. Based on Gav Wood's Wallet.sol.
0xfe8ad7...783715August 20, 2015Democracy DAO
Same eraOn-chain governance contract with proposals, voting, and execution. Stripped-down version of the go-ethereum wiki Democracy DAO tutorial.
0xb5b8a0...9cfec6September 24, 2015ProtoDAO_0x7931c901_Sep24
Same eraSep 24, 2015 proto-DAO experiment — eight months before TheDAO. One of 10 byte-identical sister contracts deployed by 0x7931c901 in a 40-minute burst.
0x8d0c13...ff4f34September 24, 2015ProtoDAO_0x7931c901_Sep24
Same eraSep 24, 2015 proto-DAO experiment — eight months before TheDAO. One of 10 byte-identical sister contracts deployed by 0x7931c901 in a 40-minute burst.
0x8ecd7a...605874September 24, 2015