Back to Home

ShapeShift Chain-Split Splitter

0xfdc6a6ad6711...3d601ee2dbbf
DAO ForkExact Bytecode Match
Deployed July 26, 2016 (9 years ago)Block 1,957,123

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

Deployment Block
1,957,123
Deployment Date
Jul 26, 2016, 06:00 PM
Code Size
301.0 B

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

SolidityExact bytecode match(301 bytes)
Compiler: solc v0

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.

Block span: 1,920,0002,462,999
July 20, 2016October 18, 2016

Bytecode Overview

Opcodes301
Unique Opcodes53
Jump Instructions15
Storage Operations2

Verified Source Available

Source verified through compiler archaeology and exact bytecode matching.

View Verification Proof
Show 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;
    }
}

External Links