Historical Significance
Controller is an early example of the contract-routing pattern: a lightweight proxy that forwards calls to a target address with access control. This pattern is ubiquitous in modern DeFi and NFT contracts but was novel in September 2015. Its role as the admin gate for Pool5x also shows early experimentation with cross-contract access control.
Context
Deployed seven weeks after Ethereum mainnet launch, during the first wave of intensive contract experimentation by the Oraclize team. Solidity v0.1.1 was the current compiler. The three-contract forwarding chain (Pool5x -> Controller -> target) foreshadows the proxy patterns that would later become standard for upgradable contracts (EIP-1967, OpenZeppelin proxies).
Key Facts
Description
Verified with soljson-v0.1.1+commit.6ff4cd6 and optimizer ON.
Source Verified
Backfilled from awesome-ethereum-proofs PR #48.
Historian Categories
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Frontier Era
The initial release of Ethereum. A bare-bones implementation for technical users.
Bytecode Overview
Verified Source Available
Source verified through compiler archaeology and exact bytecode matching.
View Verification ProofShow source code (Solidity)
contract T {
function set(uint256 x);
}
contract Controller {
T target = T(0x9e0ae8ffd946d12d1d393c6f3bca0eecadc9428e);
function set(uint256 x) {
T t = target;
t.set(x);
}
function get() returns (uint8) {
return 0xff;
}
}External Links
Related contracts
Target
Same deployerTarget contract.
0x9e0ae8...c9428eSeptember 17, 2015GetSet
Same deployerA minimal getter/setter proxy from the Oraclize team. set() forwards calls to a hardcoded target contract, get() returns constant 255.
0x77beac...7e96c2September 17, 2015SimpleStorage
Same deployerThe storage example rewired to send a wei and return a constant
0x7aa73b...46473bSeptember 17, 2015GetSet
Same deployerA 57-byte test contract: set() stores the transaction's ether value into storage slot 0, and get() reads it back.
0xe595e8...423530September 17, 2015GetSet
Same deployerA 57-byte test contract: set() stores the transaction's ether value into storage slot 0, and get() reads it back.
0xd17e9b...03b76aSeptember 17, 2015Pool5x
Same deployerPool5x contract.
0x246b34...a8eebeSeptember 17, 2015