Back to Home

ShapeShift Chain-Split Receiver

utility
0x89afcc1452d4...fc0691a51456
DAO ForkExact Bytecode Match
Deployed July 26, 2016 (9 years ago)Block 1,957,039

ShapeShift chain-split receiver twin (Jul 26, 2016). Identical 287-byte bytecode, configured for the opposite fork state and deployed in the consecutive block.

Key Facts

Deployment Block
1,957,039
Deployment Date
Jul 26, 2016, 05:39 PM
Code Size
287.0 B
Transactions by Year
20162

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

SolidityExact bytecode match(287 bytes)
Compiler: solc v0

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.

Detected Type: utility

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

Opcodes287
Unique Opcodes57
Jump Instructions16
Storage Operations7

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 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