ShapeShift ETH/ETC routing contract (Jul 26, 2016). Twin instance of the ShapeShiftReceiver — identical bytecode, configured for the opposite chain fork state.
Historical Significance
Twin to 0x3e7756, demonstrating ShapeShifts dual-chain deposit routing architecture. The pair represents the first known use of an external chain oracle to automatically segregate ETH and ETC deposits at the smart contract level.
Context
The pair of ShapeShiftReceiver contracts (0x3e7756 and 0x89afcc) were deployed in blocks 1,957,038 and 1,957,039 -- consecutive blocks, within seconds of each other. This mirrors the dual-chain problem they solve: two chains, two receivers, one oracle.
Key Facts
Description
Deployed July 26, 2016 — 6 days after the DAO hard fork. Twin instance of 0x3e7756, deployed in the immediately following block by the same ShapeShift ETH wallet. Identical 287-byte bytecode, configured with forked=false for the ETC chain routing (where forked() oracle returns false). Together with its sibling, the ShapeShiftSplit contract, and the earlier 94-byte forwarder, these represent the first on-chain smart contract infrastructure deployed by ShapeShift.
Source Verified
Identical bytecode to 0x3e7756b1 (287 bytes). Same source, same compiler, different constructor arguments.
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 ShapeShiftReceiver {
address forkedContract;
address public target;
bool public forked;
function ShapeShiftReceiver(address _forkedContract, address _target, bool _forked) {
forkedContract = _forkedContract;
target = _target;
forked = _forked;
}
function() {
if (Forked(forkedContract).forked() != forked || msg.value == 0 || !target.send(msg.value)) throw;
}
}External Links
Related contracts
ShapeShift Chain-Split Forwarder
Same deployerEarliest ShapeShift on-chain contract (Jul 24, 2016). Simple ETH forwarder with an active flag — routes deposits to target when active and msg.value > 0.
0xa2d5c5...d549deJuly 24, 2016ShapeShift Chain-Split Receiver
Same deployerShapeShift ETH/ETC routing contract (Jul 26, 2016). Forwards ETH to target only when on-chain forked() oracle result matches stored boolean — routing deposits to the correct wallet on each chain post-DAO-fork.
0x3e7756...2e7a25July 26, 2016ShapeShift Chain-Split Splitter
Same deployerShapeShift conditional ETH splitter (Jul 26, 2016). split(address,uint) routes ETH to a specified address — but only on the ETC chain (where forked() returns false). Returns false on ETH chain.
0xfdc6a6...e2dbbfJuly 26, 2016Balance Router
Same eraDAO whitehat balance-conditional router: if EF/whitehat address holds >1M ETH, route to addr1; otherwise route to addr2.
0x6e9ccd...aee851July 25, 2016