Back to Home

Escrow

Escrow
Part of The Vitalik Collection
0x54c1c951e578...07d9fa345629
Spurious DragonSource VerifiedEdit this contract
Deployed May 17, 2017 (9 years ago)Block 3,720,243

The escrow whose rewritten guard locks out every caller

Spurious Dragon EraVerified Source

Historical Significance

A textbook De Morgan slip preserved on chain: the same rule that works when written as equals and or becomes unsatisfiable when rewritten as not equals and or.

Context

Deployed in the Homestead era, when an escrow was something you wrote yourself in twenty lines rather than something you called.

Key Facts
Deployer
Vitalik Buterin(0x1db343...fa6ee6)
Deployment Block
3,720,243
Deployment Date
May 17, 2017, 06:14 AM
Code Size
355.0 B
Transactions by Year
20172

Description

Escrow holds ether for a buyer, a seller and an arbiter, with finalize paying the seller and refund paying the buyer. The guard here reads if the caller is not the buyer or is not the arbiter then revert, which is the wrong negation of an or: it demands that one caller be both parties at once, so neither function can ever run and the balance cannot move. An earlier deployment by the same account expressed the same rule positively and works. Deployed on 17 May 2017 by 0x1db3439a222c519ab44bb1144fc28167b4fa6ee6, the account of Vitalik Buterin, with 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 as the arbiter.

Source Verified

SolidityNear-exact bytecode match (swarm hash differs)
Compiler: v0.4.11

Executable runtime reproduces byte-for-byte from the reconstructed source with solc 0.4.11, optimizer on; only the swarm metadata hash differs. The buggy || guard (always true) is required to match. runtime sha256 b1e345aaecdee9afa5ddc48f57dbc700faafcbbf16250c0a35791825bfd65442.

Historian Categories

Escrow
Heuristic Analysis

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

Detected Type: Escrow

Bytecode Overview

Opcodes355
Unique Opcodes88
Jump Instructions22
Storage Operations11

External Links

Related contracts