I had a dream that I wrote a program that manipulated the bitcoin market by generating a flurry of transactions that artificially inflated the value of bitcoins, whereupon I sold and then stopped my transactions. (This would not work in real life).

I figured no one would know it was me, but just in case, I tried to run the program on a computer in Russia so people would think it was a Russian person who’d done it.

But someone got ahold of my binary somehow (maybe this program was run by a botnet and I had distributed the binary out there?), and they were able to figure out it was me because the compiler had left some telltale stuff on the symbol table. They were able to do some stylometry between the program’s function names and the function names of other stuff I’d published. They also could tell that it was not a Russian because I fluently used idiomatic Americanisms in some strings I’d left in the data section.

Oops!!

I should have produced an optimized (-O3) binary, and statically linked it. That would’ve taken care of the symbol table problem (I think!). And I should’ve been more careful about my string constants.

But also, I should’ve read my binary myself to see if there was anything in there that would ruin my anonymity.