An Oraclize callback counter: it looks up the current Oraclize address and counts only the calls that arrive from it.
Historical Significance
Contracts cannot reach outside the chain, so anything that depends on the outside world depends on an oracle and, with it, on recognising the oracle when it calls back. This contract is that check on its own, with the counter as the only output: proof that the callback arrived and came from the right place. Oraclize was the service almost every early contract needing external data used, and the resolver indirection here is what let it move its own address without breaking them.
Context
Deployed in October 2015, when Oraclize was effectively the only way for a contract to obtain data from outside the chain. The design in use, a resolver contract giving out the current callback address, is a workaround for the fact that a deployed contract cannot be edited when a dependency moves.
Key Facts
Description
A small contract for testing an oracle callback. It holds the address of the Oraclize address resolver and asks it for the current callback address on every incoming call, incrementing a public counter only when the caller matches. myid() reads back the identifier of the query it is tracking and kill() destroys the contract.
kill() is gated on a single hardcoded address rather than on a stored owner, so the right to destroy the contract was fixed when it was compiled and cannot be moved.
Resolving the callback address at call time rather than storing it is the pattern Oraclize asked integrators to use, so that a change of service address would not strand the contracts depending on it.
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
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, 2015Controller
Same deployerController contract.
0x3c9492...e332e5September 17, 2015Pool5x
Same deployerPool5x contract.
0x246b34...a8eebeSeptember 17, 2015Pool
Same deployerRevised Pool5x lottery prototype by Bertani (Oraclize), deployed 17 blocks after v1. Stores 5x msg.value and emits debug log events.
0xbb5cda...c483f9September 17, 2015