Back to Home

TestCallExecution

Unknown
Part of The Piper Merriam Collection
0x685308c340f9...9e71fc9a751d
FrontierContract #5,583Source VerifiedEdit this contract
Deployed December 23, 2015 (10 years ago)Block 737,976

Test contract for Piper Merriam's Ethereum Alarm Clock, deployed December 2015. Verifies the scheduler can execute set/register/do calls correctly.

Frontier EraVerified Source

Historical Significance

Predates the first tagged release of the Ethereum Alarm Clock and is one of the earliest non-trivial test contracts on Ethereum, period. The Alarm Clock itself was the first general-purpose scheduled-transaction service on Ethereum, years before Chainlink Keepers, Gelato, or OpenZeppelin Defender. TestCallExecution shows how on-chain TDD was practiced in the Frontier era: deploy a test target, schedule calls against it, then read back wasSuccessful from off-chain to confirm the scheduler delivered the call on the target block.

Context

Deployed 23 December 2015, four months after Ethereum's Frontier launch (30 July 2015). Solidity was at v0.1.6, the inline assembly keyword didn't exist yet, and throw was the only error mechanism. Piper's pipermerriam/ethereum-alarm-clock repo would not see its v0.1.0 tag until 11 January 2016. Compiler: Solidity 0.1.6, commit d6e77ce0.

Key Facts
Deployer
Piper Merriam(0xd3cda9...293601)
Deployment Block
737,976
Deployment Date
Dec 23, 2015, 10:48 PM
Code Size
3.9 KB
Gas at Deploy
1,090,808
Transactions by Year
20153
202410
202626

Description

TestCallExecution is one of Piper Merriam's earliest on-chain test fixtures for the Ethereum Alarm Clock, deployed 23 December 2015 at block 737,976, about three weeks before the first tagged release (v0.1.0) of the project. The contract is a deliberately-passive call sink: every method writes a flag or value into storage so an off-chain or on-chain caller can verify that a scheduled call landed correctly.

The public surface is built from three groups of methods. The set* group (setBool, setUInt, setInt, setAddress, setBytes32, setBytes, setMany) writes the supplied argument into a per-type storage slot exposed via the auto-generated getters v_bool, v_uint, etc. The register* group (registerBool, registerUInt, registerInt, registerBytes32, registerBytes, registerAddress, registerMany, registerData) makes a low-level to.call(bytes4(sha3('registerData()')), ...) to push the value to an external DataRegistry, then flips wasSuccessful to 1 on success or 2 on failure. The do* group exercises the alarm-clock pathways themselves: doExecution(address to) calls to.execute() and records success in wasSuccessful; doLoops(uint iterations) runs a tight loop of address(this).send(1) to stress the scheduler under nested calls. reset() zeroes wasSuccessful.

Two additional helpers, scheduleSetBool(address, uint, bool) and scheduleSetUInt(address, uint, uint, uint), encode a call to setBool or setUInt and submit it to a Scheduler at the supplied address with the supplied target block. These two selectors appear in the deployed bytecode but are not present in any tagged release of Testers.sol, suggesting they lived in an untagged Dec 2015 commit that was later refactored.

The contract holds 4.896 ETH as of May 2026, accumulated from years of doLoops runs feeding 1 wei back to the contract itself with no withdrawal path. The deployer 0xd3CdA913deB6f67967B99D67aCDFa1712C293601 is Piper Merriam, who later became an Ethereum Foundation core developer and creator of py-evm, py-libp2p, and most of the python-ethereum tooling stack.

Source Verified

Solidityauthor_published
Compiler: v0.1.6+

Identified by exact selector match against TestCallExecution ABI in pipermerriam/ethereum-alarm-canary build artifacts (canary/versions/v0.6/build/contracts.json). The published Testers.sol in tagged releases covers the bulk of the contract; two helpers (scheduleSetBool, scheduleSetUInt) appear in the on-chain bytecode but in no tagged release. NOT a byte-for-byte crack: the closest reconstruction (Testers_reconstructed.sol with v0.1.6 optimizer ON) produces 3,932 bytes vs the on-chain 4,005 bytes (73 bytes short). See proofs/testcallexecution-0x685308c3/CRACK_ATTEMPT.md for diff analysis.

Heuristic Analysis

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

Detected Type: Unknown

Bytecode Overview

Opcodes4,034
Unique Opcodes204
Jump Instructions196
Storage Operations79

External Links