Owner-controlled ERC-20 escrow, first of 4,463 identical deployments in November 2018. Two owner-only functions: withdraw() and refund(). Source verified by EthereumHistory.
Key Facts
Description
This contract is the first of 4,463 identical Escrow contracts deployed in November 2018. Each holds a fixed amount of a specific ERC-20 token in escrow, with two owner-only functions: withdraw() sends the amount to a beneficiary address, and refund() sends it to a refund recipient. All parameters (owner, beneficiary, refund address, token, amount) are stored in state slots.
The source was reconstructed and matches the on-chain runtime code byte-for-byte (518 code bytes) when compiled with solc 0.4.24+commit.e67f0147 optimizer ON runs=200. Only the trailing 34-byte Swarm/CBOR metadata hash differs because the exact source formatting is not preserved; that formatting-only delta is Etherscan-tolerated on a source submission.
Proof: cartoonitunes/awesome-ethereum-proofs, folder escrow-withdraw-refund-0x68322340.
Source Verified
Exact match on 518 code bytes with solc 0.4.24 optimizer ON runs=200. Only the trailing 34-byte Swarm metadata hash differs (source formatting delta). Cluster: 4,463+ identical-runtime deployments November 2018.
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Byzantium Era
First Metropolis hard fork. Added zk-SNARK precompiles, REVERT opcode, and staticcall.
Bytecode Overview
Verified Source Available
Source verified through compiler archaeology and exact bytecode matching.
View Verification ProofShow source code (Solidity)
// Submitted by EthereumHistory (ethereumhistory.com)
pragma solidity ^0.4.0;
contract ERC20 {
function transfer(address to, uint256 value) public returns (bool);
}
contract Escrow {
address owner; // slot 0
address refundAddr; // slot 1
address benefAddr; // slot 2
address unused3; // slot 3
uint256 amount; // slot 4
address unused5; // slot 5
address token; // slot 6
function withdraw() public {
require(msg.sender == owner);
ERC20(token).transfer(benefAddr, amount);
}
function refund() public {
require(msg.sender == owner);
ERC20(token).transfer(refundAddr, amount);
}
}External Links
Related contracts
Sweeper
Same eraMinimal ETH sweeper, first of 1,900 identical deployments in a 2-day burst in January 2018. All sweep to a single hardcoded destination. Source verified by EthereumHistory.
0xeb15f6...6cb3e1January 23, 2018MetaPunk
Same eraA June 2018 ERC-721 built to represent CryptoPunks, holding none. It has minted 9,640 tokens while the punks contract it points at is not the real one.
0x0144b7...50c9dfJune 23, 2018SmartWallet
Same eraBancor-lineage per-user withdrawal wallet, first of 7,847 identical siblings from Sep 2018. Source verified by EthereumHistory via linked-library bytecode match.
0xfc247c...bea350September 27, 2018