Bittrex deposit wallet forwarding token sweeps to a shared sweeper via delegatecall.
Historical Significance
Two separate deployment campaigns produced identical executable code from near-identical source, which is why they land in different bytecode groups despite behaving the same.
Key Facts
Description
The same trimmed Bittrex UserWallet runtime code as the other 0.4.10 deposit-wallet group: sweep(address,uint256) resolves a per-token sweeper through sweeperOf(address) and delegatecalls it with the original calldata, with no fallback function. This group carries a different source metadata hash, so it was compiled from a source file that differed only in comments or whitespace. 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
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);
}