Schedule

Project 2, Part 1 is due Sunday, 22 February. Part 2 will begin afte class on Monday, 23 February and is due on Thursday, 5 March.

Start (continue!) thinking of ideas for your final project. I've posted a few starting ideas on the course site. The first major deliverable for the final project will be a project proposal (due 20 March)

Reading: finish reading through Chapter 8: Mining and Consensus.
Final Project
Your main assignment after finishing Project 2 will be an openended project. You can work on anything you want that is related to cryptocurrency (loosely defined), so long as you can convince me it will be interesting and worthwhile. My hope is everyone will do a project that will have significant value beyond just our class.
You can work alone or in a team of any size. The impressiveness of your project should scale with the size of your team (but not linearly, since there is added communication overhead as your team size increases). It should scale as at least N^{2/3} where N is the number of students in the course on your team. (You are welcome to enlist help from people not in the class, and they don't count towards your N value.)
Forking PointCoin
What causes a blockchain to fork?
If all the transpacific network cables (there are only about 12) were cut, what would happen to the bitcoin blockchain?
Asymptotic Analysis
When is asymptotic analysis useful?
When is asymptotic analysis useless?
The measured time to compute one SHA256 hash on my EC2 node (2.5 GHz processor) is 750 ns. Approximately how many instructions execute to compute on SHA256 hash?
Mining Cost
Assumption. SHA256 produces a uniform random output. (We know this is not really true, but it is a reasonable approximation, and necessary for the analysis.) So, we can model SHA256 on any (new) input x as drawing randomly from 2^{256} possible outputs:
SHA256(x) ← [0, 2^{256})
Target = T_{max} / Difficulty
T_{max} = (2^{16} – 1)2^{256 ≈ 2224}
Current (15 Feb) Bitcoin Difficulty = 44,455,415,962
>>> target = 2 ** 224 / 44455415962
606449092506427232846302685260647042725721699378946247123L
>>> success_probability = target / 2**256
5.237396582969569e21
>>> expected_hashes = 1 / success_probability
1.9093455768686638e+20
>>> nanos_needed = expected_hashes * 760
>>> seconds_needed = nanos_needed / 10**9
145110263842018.44
>>> days = seconds_needed / (60 * 60 * 24)
1679516942.6159542
>>> years = days / 365
4601416.2811396
>>> years * 2
~ 9.2 M years to find one block on EC2 (assuming difficulty doesn’t increase)
Energy
Why is energy/hash so much less for custom ASICs?
In an ASIC, it is possible to build an XOR using 4 transistors. How many transistors have to flip to do an XOR on a general purpose processor like an Intel i7?
Mining Hardware  current ASIC miners achive >5 Billion hashes per seconds and over 1500 Million hashes per Joule (the energy required to lift an apple one meter).
Inside a Chinese Bitcoin Mine, The Coinsman, 11 August 2014.
The first thing you notice as you approach the warehouse is the noise. It begins as soon as you step out of the car, at which point it sounds like massive swarm of angry bees droning away somewhere off in the distance. It becomes louder and louder the closer you get to the building, and as you step through the doors it becomes a deafening and steady roar...
Estimate for total energy use of bitcoin network with current hashrate:
>>> expected_hashes
1.9093455768686638e+20
>>> hashes_per_second = expected_hashes / 600
3.18224262811444e+17
>>> 309384699.96 * 10**9 # according to blockchain.info: 309,384,699.96 GH/s
3.0938469996e+17
>>> _ / hashes_per_second
0.9722222222361415
>>> Mhash_per_J = 1500
>>> Mhash_per_second = hashes_per_second / 10**6
>>> J = Mhash_per_second / Mhash_per_J
212149508.54096264
212 MJ per second = 212 MW
Our nearest nuclear plant, the North Anna Power Station (Lake Anna) generates 1892 MW, "enough to power 450,000 homes" or about 9x the amount needed to power the current bitcoin network (only counting the miners themselves; additional power needed for cooling, etc.)
How does the energy use of bitcoin compare to what is used by the current financial infrastructure for comparable service? (This is a very difficult question to answer, would be a good project idea, not something to answer in the blank below!)
Comments