Bittrex style deposit wallet with only a sweep entry point, built with Solidity 0.4.15.
Historical Significance
Deposit wallet designs were redeployed in batches over months, and the compiler moved underneath them. Identical source at 0.4.10 and 0.4.15 produces different bytecode, so the same contract ends up in separate groups with nothing behavioural to distinguish them.
Key Facts
Description
A per-customer exchange deposit wallet in the Bittrex pattern. Its sweep function asks a registry which sweeper handles a given token and then delegatecalls into it with the original calldata, so the token handling logic runs in the wallet's own storage context. This variant has no fallback function at all, so a call with an unrecognised selector or a plain ether transfer hits an invalid opcode. It was compiled from the same source as an earlier and much larger group of these wallets, at a later compiler version, which is the only reason the bytecode differs. The runtime code matches the deployed bytecode byte for byte. Only the trailing swarm metadata hash differs, because the EthereumHistory attribution comment changes the source text. Sourcify records this as a partial match and Etherscan shows it as verified.
Source Verified
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.10;
// Copyright 2017 Bittrex
contract UserWallet {
AbstractSweeperList sweeperList;
function UserWallet(address _sweeperlist) {
sweeperList = AbstractSweeperList(_sweeperlist);
}
function sweep(address _token, uint _amount)
returns (bool) {
(_amount);
return sweeperList.sweeperOf(_token).delegatecall(msg.data);
}
}
contract AbstractSweeperList {
function sweeperOf(address _token) returns (address);
}