Bytecode verified via sibling
This contract shares identical runtime bytecode with Escrow (0x68322340...) which has been verified through compiler archaeology.
Two-party ERC20 escrow — `withdraw()` sends the locked amount to the beneficiary; `refund()` returns it to the refund address. Both restricted to the owner.
Key Facts
Description
A minimal two-party ERC20 escrow. Storage layout: owner (slot 0), refundAddr (slot 1), benefAddr (slot 2), a padding address slot, amount (slot 4), another padding address slot, token (slot 6). Two entry points, both gated by require(msg.sender == owner): withdraw() invokes token.transfer(benefAddr, amount), and refund() invokes token.transfer(refundAddr, amount). No mutations to the amount or addresses — a fire-once distribution pattern. Compiled with solc 0.4.24+commit.e67f0147 optimizer ON runs=200. Exact code match; only trailing 34-byte Swarm metadata differs.
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
Escrow
Same deployerOwner-controlled ERC-20 escrow, first of 4,463 identical deployments in November 2018. Two owner-only functions: withdraw() and refund(). Source verified by EthereumHistory.
0x683223...db5c57November 10, 2018Msg
Same eraMinimal contract that stores a single public string in state, exposed via the auto-generated m() getter. First of 281 identical siblings. Source verified by EthereumHistory.
0x2c8f58...37b173January 13, 2018Sweeper
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, 2018Sweep
Same eraETH sweep-to-fixed-recipient — fallback forwards the contract's entire balance to `0xd293a88c…8d4` via `.send()` and reverts on failure. Massive cluster of 1899 identical deployments — likely deposit-address contracts for a single custodian.
0x00188b...b260a7January 23, 2018Msg
Same eraMsg sibling — cluster of 279 identical deployments.
0x038cd0...fa23abFebruary 10, 2018Msg
Same eraTrivial public-message store — single `string public m` variable with the auto-generated `m()` getter. Cluster of 280 identical deployments.
0x02d01d...ac2cdcFebruary 10, 2018