Vitalik Buterin Serpent oracle caller (Oct 12, 2015). Two functions: call() invokes an external fetcher's get(string) and stores a callback id; callback() re-emits the response as LogResponse. 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).
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 (610-byte runtime). call() invokes an external fetcher's get(string) and records cbids[returnedId]=fetchId; callback() re-emits the response as LogResponse(string,uint256) once matched. Same lineage as the Oracle Callback Service 0x6acc9a68, but without the placeholder cow log and without forwarding value to get().
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)
# Submitted 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):
x = fetcher.get(url)
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