Earliest ShapeShift on-chain contract (Jul 24, 2016). Simple ETH forwarder with an active flag — routes deposits to target when active and msg.value > 0.
Historical Significance
First known on-chain smart contract deployed by ShapeShift. Represents the earliest attempt by a major cryptocurrency exchange to use Ethereum smart contracts for operational routing in response to the DAO hard fork.
Context
The DAO hard fork (block 1,920,000, July 20, 2016) split Ethereum into two chains: ETH and ETC. Because the same private keys controlled funds on both chains, exchanges faced an immediate operational crisis. Deposits arriving at a ShapeShift address could come from either chain, and crediting the wrong token meant real customer losses. ShapeShift deployed this contract within 96 hours of the fork as an initial routing solution, before moving to oracle-based chain detection two days later.
Key Facts
Description
The earliest of four ShapeShift chain-split contracts deployed in the week following the DAO hard fork (July 20, 2016). Deployed July 24, 2016 by the ShapeShift ETH hot wallet (0x9e6316). The contract has no function selectors — only a fallback function that checks whether the contract is active and msg.value is non-zero, then forwards ETH to the stored target address via send(). Two days later, ShapeShift deployed the more sophisticated ShapeShiftReceiver and ShapeShiftSplit contracts using an external forked() oracle for chain detection.
Source Verified
Exact runtime bytecode match (94 bytes). Key finding: active == false condition (not !active) generates the DUP1 + ISZERO + ISZERO + EQ opcode pattern. Matches solc v0.2.1 through v0.3.5 with optimizer enabled.
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
DAO Fork Era
The controversial fork to recover funds from The DAO hack.
Bytecode Overview
Verified Source Available
Source verified through compiler archaeology and exact bytecode matching.
View Verification ProofShow source code (Solidity)
contract Forked {
function forked() returns (bool);
}
contract ShapeShiftFallback {
bool active;
address checker;
address target;
function ShapeShiftFallback(address _checker, address _target) {
active = true;
checker = _checker;
target = _target;
}
function() {
if (active == false || msg.value == 0 || !target.send(msg.value)) throw;
}
}