# Bitcoin Clues and Easter Eggs <span style="color: red;">(this document is a work in progress)</span> There are many, but here's a few: ## The Birthday Epoch Satoshi's birthday, **22 Mar 1970**, was the epoch in bitcoin v0.0.0, which was later updated to 01 Jan 1970 to further disinformation since it looks like a Unix timestamp. But... Bitcoin was coded in Windows using Microsoft Visual C++ 6.0 and only ran on Windows. There was NO Unix implementation in 2008-2009. See the **rpcnet.cpp** file in bitcoin v0.0.1-alpha. Scroll horizontally as needed: ```C Value getpeerinfo(const Array& params, bool fHelp) {     if (fHelp || params.size() != 0)         throw runtime_error(             "getpeerinfo\n"             "\nReturns data about each connected network node as a json array of objects.\n"             "\nbResult:\n"             "[\n"             "  {\n"             "    \"id\": n,                   (numeric) Peer index\n"             "    \"addr\":\"host:port\",      (string) The ip address and port of the peer\n"             "    \"addrlocal\":\"ip:port\",   (string) local address\n"             "    \"services\":\"xxxxxxxxxxxxxxxx\",   (string) The services offered\n"             "    \"lastsend\": ttt,           (numeric) The time in seconds since epoch (Mar 22 1970 GMT) of the last send\n"             "    \"lastrecv\": ttt,           (numeric) The time in seconds since epoch (Mar 22 1970 GMT) of the last receive\n"             "    \"bytessent\": n,            (numeric) The total bytes sent\n"             "    \"bytesrecv\": n,            (numeric) The total bytes received\n"             "    \"conntime\": ttt,           (numeric) The connection time in seconds since epoch (Mar 22 1970 GMT)\n"             "    \"pingtime\": n,             (numeric) ping time\n"             "    \"pingwait\": n,             (numeric) ping wait\n"             "    \"version\": v,              (numeric) The peer version, such as 7001\n"             "    \"subver\": \"/Satoshi:0.8.5/\",  (string) The string version\n"             "    \"inbound\": true|false,     (boolean) Inbound (true) or Outbound (false)\n"             "    \"startingheight\": n,       (numeric) The starting height (block) of the peer\n"             "    \"banscore\": n,             (numeric) The ban score\n"             "    \"synced_headers\": n,       (numeric) The last header we have in common with this peer\n"             "    \"synced_blocks\": n,        (numeric) The last block we have in common with this peer\n"             "    \"inflight\": [\n"             "       n,                        (numeric) The heights of blocks we're currently asking from this peer\n"             "       ...\n"             "    ]\n"             "  }\n"             "  ,...\n"             "]\n"             "\nExamples:\n" +             HelpExampleCli("getpeerinfo", "") + HelpExampleRpc("getpeerinfo", ""));     vector<CNodeStats> vstats;     CopyNodeStats(vstats);     ``` See **rpcwallet.cpp** and **rpcmisc.cpp** in bitcoin v0.10.0. Scroll horizontally as needed: ```c Value getwalletinfo(const Array& params, bool fHelp) {     if (fHelp || params.size() != 0)         throw runtime_error(             "getwalletinfo\n"             "Returns an object containing various wallet state info.\n"             "\nResult:\n"             "{\n"             "  \"walletversion\": xxxxx,     (numeric) the wallet version\n"             "  \"balance\": xxxxxxx,         (numeric) the total bitcoin balance of the wallet\n"             "  \"txcount\": xxxxxxx,         (numeric) the total number of transactions in the wallet\n"             "  \"keypoololdest\": xxxxxx,    (numeric) the timestamp (seconds since GMT epoch) of the oldest pre-generated key in the key pool\n"             "  \"keypoolsize\": xxxx,        (numeric) how many new keys are pre-generated\n"             "  \"unlocked_until\": ttt,      (numeric) the timestamp in seconds since epoch (midnight Mar 22 1970 GMT) that the wallet is unlocked for transfers, or 0 if the wallet is locked\n"             "}\n"             "\nExamples:\n" +             HelpExampleCli("getwalletinfo", "") + HelpExampleRpc("getwalletinfo", ""));     Object obj;     obj.push_back(Pair("walletversion", pwalletMain->GetVersion()));     obj.push_back(Pair("balance", ValueFromAmount(pwalletMain->GetBalance())));     obj.push_back(Pair("txcount", (int)pwalletMain->mapWallet.size()));     obj.push_back(Pair("keypoololdest", pwalletMain->GetOldestKeyPoolTime()));     obj.push_back(Pair("keypoolsize", (int)pwalletMain->GetKeyPoolSize()));     if (pwalletMain->IsCrypted())         obj.push_back(Pair("unlocked_until", nWalletUnlockTime));     return obj; } ``` See the **utiltime.cpp** file in bitcoin v0.10.0. Scroll horizontally as needed: ```c int64_t GetTimeMillis() {     // Easter egg     return (boost::posix_time::ptime(boost::posix_time::microsec_clock::universal_time()) -             boost::posix_time::ptime(boost::gregorian::date(1970, 3, 22)))         .total_milliseconds(); } int64_t GetTimeMicros() {     // Easter egg     return (boost::posix_time::ptime(boost::posix_time::microsec_clock::universal_time()) -             boost::posix_time::ptime(boost::gregorian::date(1970, 3, 22)))         .total_microseconds(); } ``` ## Hard-Coded IP Addresses ### v0.1.3-alpha (net.cpp) - 70.86.96.218: San Jose, California, US. Now belonging to IBM in New York, US - 208.78.68.70: Oracle Datacenter - Manchester, New Hampshire, US - [208.78.68.70 - IP Address Lookup (IPv4 & IPv6)](https://ip-lookup.net/?ip=208.78.68.70) ### v0.0.0 PoC (net.cpp) - 72.233.89.199: Rackspace Datacenter - Jersey City, New Jersey, US - [72.233.89.199 - IP Address Lookup (IPv4 & IPv6)](https://ip-lookup.net/?ip=72.233.89.199) ## User Agent Notice the use of MSIE (Microsoft Internet Explorer) as the user agent in **net.cpp** of bitcoin v0.1.3-alpha. That clearly indicate that Satoshi's browser of choice in 2009 was Microsoft Internet Explorer, not a browser in the open-source arena. ```css User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) ```