Vitalik Buterin Serpent oracle caller (Oct 12, 2015). Two functions: call() emits a placeholder "cow" log, calls an external fetcher's get(string) forwarding value, and stores a callback id; callback() re-emits the response. NOT a lottery. Byte-for-byte cracked (Serpent @ f0b4128).
Historical Significance
More developed version of Vitalik's Oct 2015 lottery experiments. Both his dev address (0x1db3439) and vitalik.eth (0xd8da6bf2) used these contracts. The 'cow' test key links these to pyethereum's classic test patterns.
Key Facts
Description
Deployed October 2015 by Vitalik Buterin. A Serpent contract in the same family as the 422-byte get(string) query contracts, with three functions including a bet/registration function that writes to a keyed storage map and forwards a fee to an external registry via get(string). This variant additionally forwards msg.value into the external call and embeds a hard-coded label.
Source Verified
Serpent oracle caller with two functions, callback(bytes,uint256) and call(address,bytes,uint256). Compiled with ethereum/serpent @ f0b4128; exact creation+runtime match (850-byte runtime). Full version of the Oracle Callback Service: call() emits a placeholder log(LogResponse, "cow", 0), then invokes the external fetcher's get(string) forwarding msg.value, and records cbids[returnedId]=fetchId; callback() re-emits the matched response as LogResponse(string,uint256).
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 (Serpent)
# Verified by EthereumHistory (ethereumhistory.com)
event LogResponse(response:string, fetchId:uint256)
data cbids[]
extern main: [get:[string]:int256]
def callback(response:str, responseId:uint256):
if self.cbids[responseId]:
log(type=LogResponse, response, self.cbids[responseId])
def call(fetcher:address, url:str, fetchId:uint256):
log(type=LogResponse, "cow", 0)
x = fetcher.get(url, value=msg.value)
self.cbids[x] = fetchId
External Links
Related contracts
SerpentGamble
Same deployerProvably-fair betting game where players choose their own odds. The owner settles bets with a commit-reveal random seed. Includes a 2-day emergency refund.
0x034df8...200e2fSeptember 20, 2015SerpentGamble
Same deployerSibling of 0x034dF870 (SerpentGamble). Provably-fair Serpent betting game; players choose their own odds, owner settles via commit-reveal seed, 2-day refund.
0x9ca7e9...fa8bb4September 21, 2015SerpentGamble
Same deployerSibling of 0x034dF870 (SerpentGamble). Provably-fair Serpent betting game; players choose their own odds, owner settles via commit-reveal seed, 2-day refund.
0x75649a...176028September 21, 2015SerpentGamble
Same deployerIntermediate build of serpent_gamble, a provably-fair betting dapp (Bet/Win/Loss/NewSeed), related to verified sibling 0x59375871. Source not yet reconstructed.
0xe1a99f...0d2457September 21, 2015SerpentGamble
Same deployerIntermediate build of serpent_gamble, a provably-fair betting dapp (Bet/Win/Loss/NewSeed), related to verified sibling 0x59375871. Source not yet reconstructed.
0xdc00a9...15861fSeptember 21, 2015SerpentGamble
Same deployerIntermediate build of serpent_gamble, a provably-fair betting dapp (Bet/Win/Loss/NewSeed), related to verified sibling 0x59375871. Source not yet reconstructed.
0xd0ed09...300b48September 21, 2015