cryptocurrency café uva cs4501 spring 2015 david evans class 14: selfish mining
TRANSCRIPT
![Page 1: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/1.jpg)
Cryptocurrency CaféUVa cs4501 Spring 2015David Evans
Class 14:Selfish Mining
![Page 2: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/2.jpg)
2
Plan for Today2140 (?)Selfish MiningAttacks on the Blockchain
Reminders: Project 2 due ThursdayProject Ideas: preliminary project proposal will be due March 19 (present in class on March 23)
![Page 3: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/3.jpg)
3
Why 2140?
![Page 4: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/4.jpg)
4
![Page 5: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/5.jpg)
5
![Page 6: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/6.jpg)
6
INTERVAL = 210000COIN = 100000000
def subsidy(height): val = 50 * COIN halvings = height / INTERVAL val = val >> halvings return val
>>> subsidy(0)5000000000>>> subsidy(1)5000000000>>> subsidy(210000)2500000000>>> subsidy(345869)2500000000>>> subsidy(420000)1250000000>>> subsidy(210000 * 3)625000000>>> subsidy(210000 * 4)312500000…
>>> subsidy(210000 * 20)4768>>> subsidy(210000 * 30)4>>> subsidy(210000 * 31)2>>> subsidy(210000 * 32)1>>> subsidy(210000 * 33)0
![Page 7: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/7.jpg)
7
2140?Last block with a subsidy: (210000 * 33) – 1 = 6,929,999
“Expected” time to reach block = time of block 0 + 6929999 * 10 minutes/block
![Page 8: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/8.jpg)
8
import datetime
def expect_block(block): minutes = block * 10 start = datetime.datetime.strptime("2009-01-03", "%Y-%m-%d") return start + datetime.timedelta(minutes=minutes)
>>> print expect_block(0)2009-01-03 00:00:00>>> print expect_block(6929999)2140-10-07 23:50:00>>> print expect_block(345871)2015-08-01 21:10:00
![Page 9: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/9.jpg)
9
>>> (now - genesis) / 345871datetime.timedelta(0, 561, 809460)
Why is average time per block 561.8 seconds, not 600?
![Page 10: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/10.jpg)
10
import datetime
def expect_block(block): minutes = block * 10 start = datetime.datetime.strptime("2009-01-03", "%Y-%m-%d") return start + datetime.timedelta(minutes=minutes)
>>> print expect_block(0)2009-01-03 00:00:00>>> print expect_block(6929999)2140-10-07 23:50:00>>> print expect_block(345871)2015-08-01 21:10:00
![Page 11: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/11.jpg)
11
import datetime
def expect_block(block): minutes = block * (561.8 / 60) start = datetime.datetime.strptime("2009-01-03", "%Y-%m-%d") return start + datetime.timedelta(minutes=minutes)
> print expect_block(6929999)2132-05-19 00:50:38.200000
![Page 12: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/12.jpg)
12
Selfish Mining
Mined Block!Last Public
Block
H(PrevBlock)
![Page 13: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/13.jpg)
13
![Page 14: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/14.jpg)
14
![Page 15: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/15.jpg)
15
![Page 16: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/16.jpg)
16
α: fraction of mining power owned by selfish poolγ: fraction of honest miner’s that mine from selfish branch (given tie block)
![Page 17: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/17.jpg)
17
![Page 18: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/18.jpg)
18
![Page 19: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/19.jpg)
19
![Page 20: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/20.jpg)
20
Normal network: 17 msSpread Networks ($300M): 13 ms
NASDAQ Data Center
Chicago Mercantile Exchange
![Page 21: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/21.jpg)
21
Normal network: 17 msSpread Networks ($300M): 13 ms (827 miles)Microwave Links: ~9 ms
NASDAQ Data Center
Chicago Mercantile Exchange
1260 km / 299792 km/s = 4ms at lightspeed
![Page 22: Cryptocurrency Café UVa cs4501 Spring 2015 David Evans Class 14: Selfish Mining](https://reader031.vdocuments.net/reader031/viewer/2022032307/56649cf55503460f949c4bda/html5/thumbnails/22.jpg)
22
ChargeProject 2 Part 2:
Due Thursday 5 March