ShapeShift conditional ETH splitter (Jul 26, 2016). split() sends ETH to a target only on the ETC chain where forked() is false. Returns false on ETH.
Key Facts
Description
Deployed July 26, 2016, the same day as the ShapeShiftReceiver twins. The split() function takes a target address and ETH amount, calls the forked() oracle twice to verify chain state, and routes funds only on the ETC chain. On the ETH chain (where forked() returns true), it returns false immediately without sending. The double forked() call pattern — first to short-circuit if on ETH, second to confirm before sending — appears intentional for safety. Deployed alongside the two ShapeShiftReceiver contracts within the same hour.
Source Verified
Exact runtime bytecode match (301 bytes). The two forked() calls are present in source — first call short-circuits if on ETH chain, second verifies before sending on ETC chain. Matches solc v0.2.1 through v0.3.5 with optimizer.
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 ShapeShiftSplit {
address forkedContract;
function ShapeShiftSplit(address _forkedContract) {
forkedContract = _forkedContract;
}
function split(address _to, uint _value) returns (bool) {
if (Forked(forkedContract).forked()) return false;
if (!Forked(forkedContract).forked() && _to.send(_value)) return true;
throw;
}
}