Delegatecall forwarder whose failure branch jumps to a hardcoded offset.
Historical Significance
A preserved example of hand-written assembly jump offsets going wrong. The bug is unreachable in normal operation because the delegatecall only fails if the implementation itself reverts, which is why it survived into a very large deployment campaign unnoticed.
Key Facts
Description
The counterpart forwarder to the other 0.4.11 proxy group, deployed in matched pairs with it. The code is identical except for the implementation address and one byte: the jump taken when the delegatecall fails targets a hardcoded offset rather than the invalid-opcode stub, so it lands in the implementation getter's epilogue and jumps to whatever address is left on the stack. The source uses a literal jump target instead of an assembly label, which is how that byte came to differ. The runtime code matches the deployed bytecode byte for byte; only the trailing swarm metadata hash differs, because the EthereumHistory attribution comment changes the source text. Sourcify records this as a partial match and Etherscan shows it as verified.
Source Verified
Bytecode Overview
Verified Source Available
Source verified through compiler archaeology and exact bytecode matching.
View Verification ProofShow source code (Solidity)
// Submitted by EthereumHistory (ethereumhistory.com)
pragma solidity ^0.4.11;
contract Proxy {
function implementation() internal constant returns (address) {
return 0xc3b2ae46792547a96b9f84405e36d0e07edcd05c;
}
function () payable {
address target = implementation();
assembly {
let ptr := msize()
mstore(0x40, add(ptr, calldatasize))
calldatacopy(ptr, 0, calldatasize)
jumpi(0x54, iszero(delegatecall(div(mul(gas, 0x3f), 0x40), target, ptr, calldatasize, 0, 0x20)))
return(0, 0x20)
fail:
invalid
}
}
}