-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathextract_patoshi_addresses.py
More file actions
158 lines (126 loc) · 35.3 KB
/
extract_patoshi_addresses.py
File metadata and controls
158 lines (126 loc) · 35.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/usr/bin/env python3
"""
Patoshi Address Extractor
This script extracts Bitcoin addresses and public keys from blocks suspected to have been
mined by Satoshi Nakamoto using the "Patoshi" pattern analysis.
Credits:
- Sergio Demian Lerner (@SDLerner): Original Patoshi pattern discovery
- Jameson Lopp (@jlopp): Comprehensive Patoshi blocks dataset
Usage:
python3 extract_patoshi_addresses.py [--start-block BLOCK] [--chunk-size SIZE]
"""
import requests
import time
import sys
import re
import argparse
from typing import List, Dict, Optional
# Patoshi blocks array - discovered by Sergio Lerner, curated by Jameson Lopp
PATOSHI_BLOCKS = [3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,166,167,171,173,177,179,180,181,182,183,184,185,187,191,198,199,200,201,202,203,205,207,208,209,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,269,270,271,272,273,274,275,276,277,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,297,298,299,300,301,302,303,304,305,306,307,308,310,312,313,314,315,316,318,319,321,322,323,324,325,326,327,328,330,331,332,333,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,358,359,362,363,364,365,366,367,368,369,370,371,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,395,396,397,398,399,400,401,402,403,404,405,406,408,409,410,411,412,414,415,416,418,420,422,423,424,425,426,427,428,429,430,432,434,435,436,437,438,440,441,443,444,445,446,447,448,449,451,452,453,454,455,456,457,458,459,460,462,464,466,467,468,469,470,471,472,474,475,476,477,478,479,480,481,482,483,484,486,487,488,489,491,492,494,495,496,497,498,499,500,502,503,504,505,507,508,510,511,513,514,515,516,517,518,519,520,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,564,565,566,568,569,570,571,572,573,574,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,592,593,594,595,597,599,600,601,602,603,605,606,608,609,610,611,612,615,616,617,618,619,620,621,622,623,625,626,627,628,629,630,631,632,633,635,636,637,638,639,640,641,642,643,645,646,647,648,649,650,652,653,654,655,656,657,659,660,661,662,663,664,667,668,669,670,671,672,674,675,676,677,678,679,680,681,682,683,684,686,688,689,690,691,692,693,694,695,696,697,698,700,701,703,704,705,706,708,709,710,711,712,714,715,716,717,718,719,721,722,723,724,725,727,729,731,732,733,734,735,736,737,738,741,742,743,744,745,746,747,749,750,751,753,754,755,756,758,759,761,762,763,764,765,766,768,769,770,771,774,775,776,778,779,780,781,783,784,785,789,790,791,792,793,794,795,796,797,798,799,800,801,802,804,805,806,807,808,810,812,815,816,817,818,820,822,823,825,826,827,829,831,832,833,834,835,836,837,838,839,840,841,843,845,846,847,848,849,851,852,853,854,855,856,857,859,860,861,862,863,864,865,867,868,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,886,888,889,890,891,892,893,894,895,896,897,898,900,901,902,903,904,906,908,909,910,911,912,914,916,917,918,919,920,921,922,924,925,926,928,929,930,931,932,933,934,936,937,938,939,942,943,944,946,947,948,950,951,952,953,954,957,960,961,962,963,965,967,968,969,970,971,972,973,974,975,976,977,978,980,981,982,983,985,987,989,990,991,995,997,1000,1001,1002,1004,1005,1006,1007,1008,1009,1011,1012,1013,1015,1016,1017,1019,1020,1021,1022,1024,1026,1029,1030,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1062,1064,1066,1067,1069,1070,1071,1072,1073,1074,1076,1077,1078,1079,1080,1081,1082,1084,1085,1086,1087,1089,1090,1092,1095,1097,1098,1099,1100,1101,1103,1104,1106,1108,1109,1110,1111,1112,1115,1117,1118,1120,1121,1122,1124,1126,1127,1128,1129,1130,1131,1132,1133,1134,1137,1138,1140,1141,1142,1145,1146,1147,1148,1149,1151,1152,1154,1155,1156,1157,1158,1159,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1173,1174,1175,1176,1177,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1193,1194,1196,1198,1199,1200,1201,1202,1203,1204,1205,1207,1209,1210,1211,1212,1213,1215,1220,1221,1222,1223,1224,1225,1226,1228,1229,1230,1231,1232,1234,1235,1236,1237,1238,1239,1241,1243,1244,1246,1247,1249,1250,1251,1252,1253,1256,1257,1258,1259,1261,1262,1264,1265,1266,1268,1271,1272,1273,1274,1275,1277,1278,1279,1280,1281,1282,1283,1286,1287,1288,1290,1291,1292,1293,1294,1295,1300,1301,1302,1303,1304,1305,1306,1307,1308,1310,1311,1312,1313,1314,1315,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1334,1335,1336,1337,1338,1339,1340,1341,1343,1344,1345,1346,1347,1348,1349,1350,1351,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1372,1373,1374,1375,1377,1379,1380,1381,1382,1384,1386,1400,1401,1402,1403,1404,1405,1406,1407,1410,1411,1413,1414,1415,1416,1418,1419,1420,1421,1422,1423,1424,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1472,1473,1474,1475,1476,1477,1478,1480,1481,1482,1483,1484,1485,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1508,1509,1510,1511,1512,1515,1516,1517,1518,1519,1523,1524,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1566,1567,1569,1570,1572,1573,1574,1575,1577,1578,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1592,1593,1594,1595,1596,1597,1599,1600,1601,1602,1603,1604,1605,1606,1608,1609,1610,1611,1612,1613,1615,1616,1617,1618,1619,1620,1622,1623,1624,1625,1626,1627,1628,1629,1630,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1651,1653,1654,1655,1656,1657,1658,1660,1661,1662,1663,1665,1666,1667,1668,1669,1670,1671,1672,1675,1676,1677,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1714,1715,1717,1718,1719,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1736,1737,1738,1739,1740,1741,1742,1744,1745,1746,1747,1748,1749,1750,1751,1753,1754,1755,1756,1757,1759,1760,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1774,1775,1776,1777,1778,1779,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1821,1823,1824,1825,1827,1828,1829,1830,1831,1832,1833,1834,1835,1837,1838,1839,1840,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1865,1866,1867,1868,1869,1870,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1901,1902,1903,1905,1906,1907,1908,1910,1911,1913,1914,1915,1921,1922,1924,1925,1926,1927,1928,1930,1931,1932,1933,1934,1937,1939,1940,1941,1942,1943,1944,1945,1946,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1965,1966,1968,1970,1972,1973,1974,1975,1976,1977,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2026,2027,2028,2029,2030,2032,2034,2035,2036,2037,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2063,2064,2065,2066,2067,2068,2069,2071,2072,2073,2074,2075,2076,2077,2079,2080,2081,2082,2083,2084,2086,2088,2090,2091,2092,2093,2094,2095,2096,2097,2098,2101,2103,2105,2106,2107,2109,2110,2111,2112,2113,2115,2118,2120,2121,2122,2123,2124,2125,2126,2128,2129,2131,2142,2143,2144,2145,2146,2149,2150,2151,2153,2155,2156,2157,2159,2160,2162,2164,2166,2167,2168,2169,2170,2171,2173,2174,2175,2177,2179,2180,2181,2182,2183,2185,2187,2188,2191,2192,2193,2194,2195,2196,2198,2199,2200,2201,2202,2204,2206,2207,2208,2210,2213,2215,2216,2217,2218,2220,2221,2222,2223,2225,2226,2227,2229,2231,2232,2233,2235,2236,2237,2238,2239,2240,2241,2242,2244,2246,2248,2251,2254,2256,2257,2258,2260,2262,2263,2264,2265,2267,2268,2271,2273,2274,2276,2277,2278,2280,2281,2282,2283,2285,2286,2287,2289,2291,2293,2294,2295,2298,2299,2301,2302,2303,2305,2306,2307,2308,2309,2310,2311,2312,2314,2315,2316,2317,2318,2320,2321,2322,2324,2325,2326,2328,2329,2331,2332,2333,2335,2336,2337,2340,2341,2342,2344,2345,2346,2347,2348,2349,2350,2352,2354,2356,2358,2361,2363,2364,2365,2366,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2380,2381,2382,2383,2384,2385,2386,2388,2389,2391,2392,2393,2394,2395,2396,2397,2398,2399,2402,2403,2404,2405,2406,2409,2410,2411,2412,2413,2414,2415,2416,2417,2418,2419,2420,2423,2424,2426,2427,2428,2429,2430,2431,2432,2433,2434,2436,2437,2438,2439,2441,2442,2443,2444,2445,2446,2448,2449,2450,2451,2453,2454,2456,2458,2459,2460,2461,2463,2465,2467,2469,2470,2472,2473,2474,2476,2477,2478,2479,2481,2483,2484,2485,2487,2490,2491,2494,2495,2496,2497,2499,2503,2505,2507,2508,2510,2511,2515,2516,2519,2520,2521,2522,2523,2524,2526,2527,2528,2529,2530,2531,2532,2533,2534,2535,2537,2538,2539,2542,2543,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2558,2559,2560,2561,2562,2563,2564,2566,2567,2569,2571,2572,2573,2574,2577,2578,2579,2580,2582,2583,2584,2585,2586,2587,2588,2589,2590,2593,2594,2595,2596,2598,2601,2603,2604,2605,2606,2609,2610,2613,2615,2616,2617,2619,2622,2624,2626,2627,2629,2631,2633,2635,2637,2638,2639,2640,2641,2642,2645,2646,2647,2648,2649,2650,2652,2653,2655,2657,2660,2661,2663,2666,2667,2668,2670,2671,2674,2675,2677,2678,2679,2680,2681,2682,2683,2687,2689,2691,2692,2694,2695,2699,2700,2701,2703,2704,2705,2707,2708,2709,2710,2711,2712,2713,2714,2715,2719,2720,2721,2722,2724,2725,2726,2729,2730,2732,2734,2736,2737,2739,2741,2742,2743,2744,2745,2746,2747,2749,2750,2751,2752,2753,2754,2756,2757,2758,2761,2763,2765,2766,2767,2769,2770,2773,2774,2776,2777,2778,2780,2781,2784,2785,2786,2788,2789,2791,2792,2793,2795,2796,2797,2799,2801,2802,2803,2804,2808,2809,2810,2811,2812,2814,2817,2819,2822,2823,2824,2828,2829,2830,2832,2833,2834,2835,2836,2837,2838,2839,2840,2841,2842,2844,2846,2847,2849,2851,2852,2855,2856,2858,2859,2860,2861,2863,2864,2866,2868,2869,2873,2874,2875,2876,2877,2878,2879,2880,2882,2885,2886,2887,2888,2889,2890,2892,2894,2896,2897,2899,2900,2902,2903,2907,2908,2909,2910,2911,2912,2913,2914,2915,2916,2918,2924,2925,2926,2927,2928,2930,2931,2932,2933,2935,2936,2937,2939,2941,2942,2944,2945,2947,2949,2950,2951,2952,2953,2955,2957,2960,2961,2962,2964,2965,2966,2968,2969,2970,2971,2972,2973,2974,2975,2976,2979,2980,2981,2982,2983,2985,2987,2988,2989,2991,2992,2994,2996,2997,2998,2999,3000,3001,3002,3003,3005,3006,3008,3009,3011,3012,3013,3015,3016,3018,3019,3021,3022,3024,3025,3026,3027,3029,3030,3031,3033,3034,3037,3039,3040,3041,3042,3043,3045,3047,3049,3050,3051,3052,3054,3055,3060,3062,3063,3064,3065,3066,3067,3068,3070,3071,3072,3073,3074,3075,3076,3077,3078,3080,3081,3082,3083,3084,3085,3086,3087,3088,3089,3090,3092,3093,3094,3096,3097,3099,3101,3102,3104,3105,3107,3108,3109,3110,3112,3113,3114,3115,3118,3120,3122,3123,3125,3127,3129,3130,3131,3133,3134,3135,3137,3139,3140,3143,3144,3145,3149,3150,3152,3153,3155,3156,3157,3161,3162,3163,3166,3168,3169,3172,3173,3175,3176,3177,3178,3180,3181,3183,3184,3185,3187,3188,3190,3191,3193,3195,3196,3197,3198,3199,3200,3201,3204,3206,3207,3209,3210,3211,3212,3213,3214,3216,3217,3218,3219,3221,3222,3224,3227,3228,3229,3231,3232,3233,3234,3235,3236,3237,3238,3239,3241,3242,3243,3245,3246,3247,3249,3251,3252,3253,3255,3256,3258,3259,3260,3262,3263,3264,3265,3267,3269,3270,3271,3272,3273,3274,3277,3278,3279,3281,3282,3283,3284,3285,3286,3287,3289,3290,3291,3292,3296,3297,3299,3300,3301,3302,3304,3305,3308,3309,3310,3311,3312,3313,3314,3316,3317,3319,3320,3321,3322,3324,3325,3327,3329,3330,3332,3333,3335,3337,3338,3339,3340,3341,3342,3343,3344,3345,3347,3349,3351,3352,3353,3354,3355,3359,3362,3363,3364,3366,3367,3369,3370,3372,3373,3375,3377,3378,3379,3380,3382,3384,3385,3386,3388,3389,3392,3393,3394,3395,3400,3401,3402,3403,3405,3408,3410,3411,3412,3414,3415,3417,3420,3421,3422,3423,3424,3427,3429,3430,3431,3432,3433,3434,3436,3437,3440,3441,3443,3445,3446,3447,3448,3449,3452,3453,3454,3455,3457,3459,3460,3463,3464,3465,3467,3468,3470,3471,3474,3475,3477,3479,3482,3484,3485,3486,3487,3490,3491,3492,3493,3494,3495,3496,3498,3499,3500,3501,3505,3507,3510,3511,3512,3515,3516,3517,3519,3520,3522,3524,3525,3526,3527,3528,3529,3531,3534,3537,3538,3540,3541,3542,3543,3545,3547,3548,3550,3552,3553,3554,3555,3556,3558,3559,3560,3562,3564,3566,3567,3569,3570,3571,3572,3574,3575,3576,3577,3578,3579,3580,3582,3583,3584,3585,3586,3587,3588,3590,3591,3592,3593,3594,3595,3597,3599,3600,3601,3603,3605,3606,3608,3610,3611,3613,3615,3616,3618,3621,3622,3625,3626,3630,3631,3634,3635,3637,3639,3640,3641,3642,3643,3645,3646,3647,3650,3653,3655,3658,3659,3661,3663,3664,3666,3667,3668,3671,3673,3674,3675,3676,3677,3678,3680,3681,3684,3687,3689,3690,3691,3693,3694,3696,3698,3699,3702,3703,3704,3705,3706,3707,3708,3709,3710,3711,3713,3714,3715,3717,3718,3719,3720,3722,3723,3724,3725,3726,3727,3728,3729,3730,3731,3733,3734,3735,3737,3738,3740,3741,3742,3743,3746,3747,3748,3749,3750,3751,3752,3754,3755,3756,3757,3760,3761,3763,3764,3765,3767,3769,3770,3771,3775,3776,3777,3779,3780,3781,3782,3783,3786,3787,3789,3790,3791,3792,3793,3794,3795,3796,3798,3800,3801,3802,3803,3806,3807,3808,3812,3815,3816,3818,3819,3820,3823,3824,3826,3829,3830,3831,3832,3834,3835,3837,3838,3840,3841,3842,3843,3846,3847,3848,3850,3852,3853,3854,3855,3856,3857,3859,3862,3864,3865,3866,3867,3868,3870,3872,3873,3874,3875,3876,3877,3878,3880,3883,3884,3886,3888,3889,3890,3891,3892,3894,3895,3896,3897,3899,3900,3901,3902,3905,3906,3907,3908,3910,3911,3912,3913,3914,3915,3916,3917,3919,3920,3921,3922,3923,3925,3926,3927,3929,3930,3931,3932,3936,3937,3939,3940,3941,3943,3944,3946,3947,3948,3950,3951,3952,3954,3956,3957,3959,3960,3962,3963,3964,3966,3967,3968,3969,3970,3972,3974,3975,3976,3977,3978,3979,3981,3982,3983,3984,3986,3988,3989,3990,3991,3993,3995,3996,3998,3999,4000,4001,4003,4005,4006,4007,4008,4009,4010,4011,4012,4013,4015,4016,4018,4019,4020,4021,4022,4023,4024,4027,4028,4032,4034,4035,4036,4038,4041,4042,4044,4045,4047,4050,4051,4052,4053,4054,4056,4057,4058,4061,4063,4064,4065,4068,4070,4071,4072,4076,4078,4079,4081,4082,4083,4084,4085,4086,4088,4089,4090,4091,4094,4095,4096,4097,4098,4100,4101,4102,4103,4105,4106,4107,4109,4111,4112,4114,4116,4118,4120,4121,4123,4124,4127,4128,4129,4130,4131,4132,4133,4135,4136,4137,4138,4140,4141,4142,4144,4146,4147,4148,4149,4151,4152,4153,4154,4157,4158,4161,4162,4163,4165,4167,4168,4170,4172,4173,4174,4175,4176,4177,4178,4179,4180,4183,4187,4188,4191,4192,4194,4196,4197,4199,4200,4201,4202,4203,4205,4207,4208,4209,4210,4211,4212,4213,4214,4216,4218,4219,4220,4222,4224,4225,4227,4229,4230,4231,4232,4233,4234,4235,4237,4239,4241,4242,4244,4245,4246,4248,4249,4253,4254,4256,4257,4258,4259,4261,4262,4263,4264,4268,4269,4271,4273,4274,4275,4277,4280,4281,4285,4286,4287,4288,4291,4292,4294,4295,4296,4297,4298,4299,4300,4301,4307,4308,4309,4310,4311,4312,4313,4314,4316,4317,4318,4320,4321,4322,4323,4324,4326,4327,4330,4331,4333,4335,4336,4339,4342,4343,4344,4346,4348,4349,4351,4352,4353,4354,4356,4357,4359,4360,4363,4365,4366,4367,4368,4370,4371,4372,4373,4374,4375,4376,4377,4379,4380,4381,4383,4385,4386,4387,4388,4389,4390,4392,4394,4395,4396,4397,4398,4399,4401,4402,4403,4407,4408,4409,4411,4412,4413,4414,4416,4417,4418,4419,4421,4422,4423,4424,4425,4427,4429,4430,4432,4433,4436,4437,4440,4444,4445,4447,4448,4450,4451,4452,4453,4454,4455,4456,4457,4458,4460,4461,4462,4463,4464,4465,4467,4468,4472,4474,4476,4477,4478,4479,4480,4481,4484,4486,4487,4488,4489,4490,4491,4492,4493,4494,4497,4498,4500,4502,4503,4504,4505,4506,4507,4509,4510,4511,4512,4515,4516,4517,4518,4519,4520,4522,4524,4525,4526,4527,4528,4529,4530,4531,4532,4534,4536,4537,4538,4539,4540,4541,4542,4545,4546,4548,4549,4550,4551,4552,4553,4554,4555,4557,4558,4560,4562,4563,4565,4566,4567,4569,4571,4572,4573,4575,4576,4577,4578,4579,4580,4581,4582,4583,4585,4586,4589,4590,4591,4594,4595,4597,4598,4600,4601,4602,4604,4605,4606,4608,4609,4611,4613,4614,4615,4616,4618,4619,4620,4621,4622,4623,4626,4627,4629,4631,4633,4634,4635,4636,4638,4639,4640,4641,4642,4643,4644,4645,4646,4647,4648,4649,4651,4652,4653,4654,4655,4656,4657,4660,4662,4663,4664,4665,4667,4668,4670,4671,4673,4674,4675,4676,4677,4680,4681,4682,4685,4686,4687,4688,4689,4691,4693,4694,4695,4696,4697,4698,4699,4700,4701,4702,4703,4704,4707,4708,4709,4710,4712,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4727,4728,4731,4732,4733,4734,4735,4736,4737,4738,4739,4741,4742,4743,4744,4745,4746,4748,4749,4750,4752,4753,4755,4757,4758,4759,4761,4762,4763,4764,4765,4766,4769,4771,4772,4774,4775,4777,4778,4779,4780,4781,4783,4784,4785,4786,4787,4788,4789,4790,4791,4792,4793,4796,4797,4798,4799,4800,4802,4803,4805,4806,4807,4809,4810,4811,4812,4813,4814,4816,4817,4819,4820,4821,4823,4824,4826,4827,4828,4829,4832,4833,4834,4835,4836,4837,4838,4839,4841,4842,4844,4845,4846,4847,4850,4853,4855,4857,4858,4860,4861,4862,4863,4866,4867,4868,4870,4872,4873,4875,4876,4877,4878,4880,4881,4882,4884,4885,4887,4889,4891,4894,4895,4896,4899,4900,4901,4902,4903,4905,4906,4907,4910,4911,4913,4914,4915,4916,4917,4919,4920,4922,4923,4925,4926,4927,4928,4929,4931,4933,4934,4936,4937,4938,4939,4940,4942,4943,4944,4946,4947,4948,4949,4951,4953,4954,4956,4957,4958,4960,4962,4964,4965,4967,4968,4969,4971,4972,4973,4974,4976,4978,4980,4981,4982,4983,4985,4987,4988,4990,4993,4996,4997,5000,5001,5002,5003,5004,5006,5009,5010,5011,5012,5014,5016,5017,5018,5020,5021,5022,5023,5024,5025,5026,5027,5028,5029,5031,5032,5033,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056,5057,5059,5060,5061,5062,5063,5064,5066,5068,5069,5070,5071,5073,5074,5076,5078,5079,5080,5081,5082,5083,5085,5086,5087,5088,5089,5090,5092,5093,5094,5095,5097,5098,5100,5101,5102,5103,5104,5106,5107,5109,5110,5111,5113,5114,5115,5116,5117,5118,5119,5122,5123,5124,5125,5126,5128,5129,5132,5133,5134,5136,5137,5138,5140,5141,5142,5143,5144,5145,5147,5148,5150,5151,5153,5154,5156,5157,5158,5159,5161,5162,5163,5164,5165,5167,5168,5173,5175,5177,5178,5179,5181,5182,5183,5184,5185,5186,5187,5188,5190,5192,5193,5195,5196,5197,5198,5203,5204,5206,5207,5209,5210,5212,5214,5216,5217,5218,5220,5221,5222,5223,5224,5225,5226,5227,5229,5230,5231,5232,5233,5235,5237,5239,5241,5242,5243,5244,5245,5247,5249,5250,5251,5252,5253,5255,5256,5257,5259,5261,5263,5264,5266,5267,5268,5269,5270,5271,5272,5274,5275,5276,5277,5279,5280,5281,5283,5284,5285,5287,5289,5290,5291,5292,5293,5294,5296,5297,5298,5299,5300,5301,5302,5303,5304,5307,5308,5309,5310,5312,5313,5314,5315,5316,5317,5318,5321,5322,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,5334,5335,5336,5337,5338,5340,5342,5343,5344,5345,5346,5347,5348,5349,5350,5352,5353,5354,5355,5357,5358,5359,5360,5361,5362,5363,5364,5365,5367,5369,5370,5373,5374,5376,5377,5378,5380,5382,5383,5384,5385,5386,5387,5388,5389,5391,5392,5393,5394,5395,5396,5397,5398,5399,5400,5402,5403,5405,5407,5408,5409,5410,5412,5414,5415,5416,5417,5420,5421,5422,5423,5424,5425,5426,5427,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5453,5454,5455,5456,5457,5458,5460,5462,5464,5466,5467,5468,5470,5471,5472,5473,5474,5475,5477,5479,5482,5483,5484,5485,5487,5488,5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5502,5503,5504,5505,5507,5508,5509,5510,5511,5512,5513,5515,5516,5518,5520,5522,5523,5524,5526,5527,5528,5529,5530,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5543,5544,5545,5547,5549,5550,5551,5552,5553,5554,5556,5557,5558,5559,5561,5563,5564,5565,5566,5568,5571,5572,5573,5574,5576,5577,5578,5579,5580,5581,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5607,5608,5609,5610,5611,5612,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5629,5630,5631,5632,5633,5635,5636,5637,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648,5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5679,5680,5681,5683,5684,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5697,5699,5700,5701,5703,5704,5705,5706,5707,5708,5710,5711,5712,5714,5715,5716,5717,5718,5719,5722,5725,5726,5727,5728,5729,5730,5731,5732,5734,5737,5738,5739,5740,5741,5742,5744,5745,5746,5749,5750,5752,5754,5755,5757,5758,5759,5761,5762,5764,5765,5766,5767,5768,5770,5771,5773,5774,5775,5776,5779,5780,5781,5782,5783,5784,5785,5786,5787,5789,5790,5792,5794,5795,5797,5799,5800,5801,5803,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5817,5818,5819,5821,5822,5823,5824,5825,5826,5827,5828,5829,5831,5832,5833,5835,5836,5837,5838,5839,5840,5841,5842,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860,5861,5862,5863,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,5880,5881,5883,5884,5885,5886,5888,5889,5890,5891,5892,5893,5894,5896,5897,5898,5899,5900,5901,5902,5903,5904,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920,5921,5922,5923,5924,5925,5926,5927,5929,5930,5931,5932,5933,5934,5935,5937,5938,5940,5941,5942,5943,5946,5947,5948,5949,5950,5951,5952,5954,5955,5956,5957,5958,5959,5960,5962,5963,5964,5965,5967,5968,5969,5970,5971,5972,5973,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984,5985,5987,5988,5989,5990,5991,5993,5994,5995,5996,5998,6000,6001,6002,6005,6006,6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6023,6024,6025,6026,6028,6029,6030,6031,6032,6033,6034,6035,6037,6039,6041,6042,6043,6044,6045,6046,6047,6049,6050,6051,6052,6053,6054,6055,6056,6058,6059,6060,6061,6063,6064,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6079,6080,6082,6083,6084,6085,6086,6087,6088,6089,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6104,6106,6107,6108,6109,6110,6111,6113,6114,6115,6117,6118,6119,6120,6121,6124,6125,6126,6128,6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6143,6144,6145,6148,6149,6150,6151,6152,6153,6154,6155,6156,6157,6158,6159,6160,6161,6163,6164,6165,6166,6167,6168,6169,6170,6171,6172,6173,6175,6176,6177,6178,6179,6181,6182,6183,6185,6186,6187,6188,6189,6191,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6206,6208,6209,6210,6211,6212,6213,6215,6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6235,6236,6237,6238,6239,6242,6243,6244,6245,6246,6247,6249,6250,6251,6252,6253,6254,6255,6256,6257,6259,6260,6261,6263,6265,6268,6270,6273,6274,6275,6277,6278,6280,6281,6283,6284,6285,6286,6287,6288,6290,6291,6292,6293,6295,6297,6298,6299,6300,6301,6302,6304,6305,6306,6308,6309,6310,6312,6313,6314,6315,6317,6318,6319,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6332,6333,6334,6336,6337,6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6361,6363,6364,6365,6367,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381,6382,6383,6384,6386,6388,6389,6391,6392,6394,6395,6396,6397,6398,6399,6400,6402,6403,6404,6406,6407,6408,6409,6410,6411,6412,6413,6414,6416,6418,6419,6420,6422,6423,6424,6425,6427,6429,6430,6431,6432,6433,6434,6435,6438,6439,6440,6441,6442,6444,6445,6447,6449,6450,6452,6453,6456,6457,6458,6459,6460,6466,6467,6468,6469,6470,6471,6472,6474,6475,6476,6477,6479,6480,6482,6483,6485,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6501,6502,6503,6504,6506,6510,6511,6512,6514,6515,6516,6518,6519,6520,6521,6522,6523,6524,6525,6526,6528,6530,6532,6533,6534,6535,6536,6537,6538,6540,6541,6542,6543,6544,6546,6547,6548,6549,6551,6554,6555,6556,6557,6558,6559,6560,6563,6564,6567,6569,6570,6571,6572,6573,6574,6575,6577,6578,6579,6580,6581,6583,6584,6586,6587,6588,6589,6591,6592,6593,6595,6596,6597,6598,6599,6601,6602,6604,6605,6607,6608,6609,6611,6614,6615,6616,6617,6618,6619,6621,6624,6625,6626,6628,6629,6630,6631,6632,6633,6634,6636,6637,6638,6639,6640,6641,6642,6643,6644,6646,6648,6649,6650,6651,6652,6653,6654,6655,6658,6659,6660,6661,6662,6663,6664,6665,6666,6667,6668,6669,6670,6671,6672,6673,6677,6678,6680,6681,6683,6684,6685,6686,6687,6688,6689,6690,6691,6694,6696,6697,6698,6699,6700,6702,6703,6704,6705,6706,6707,6708,6709,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6723,6724,6726,6729,6730,6731,6732,6733,6734,6736,6737,6738,6739,6740,6741,6743,6744,6745,6746,6747,6748,6749,6750,6751,6752,6753,6755,6756,6757,6758,6759,6760,6762,6763,6764,6765,6767,6769,6770,6772,6773,6774,6775,6777,6778,6779,6780,6781,6782,6783,6785,6786,6788,6790,6791,6792,6793,6794,6796,6797,6799,6800,6801,6802,6803,6805,6807,6808,6810,6813,6814,6815,6816,6817,6818,6819,6820,6821,6822,6823,6824,6825,6826,6827,6828,6830,6831,6832,6835,6837,6838,6839,6841,6842,6843,6845,6846,6848,6849,6850,6851,6852,6853,6855,6856,6857,6859,6861,6863,6866,6867,6868,6869,6870,6871,6872,6873,6874,6875,6876,6877,6878,6879,6881,6882,6883,6884,6886,6887,6888,6889,6890,6891,6892,6893,6896,6897,6898,6899,6900,6901,6902,6903,6904,6906,6907,6909,6911,6912,6913,6914,6916,6918,6919,6922,6923,6924,6925,6926,6927,6928,6929,6931,6932,6933,6934,6935,6937,6938,6939,6940,6941,6942,6943,6944,6945,6946,6947,6948,6951,6952,6953,6954,6956,6957,6958,6959,6961,6964,6965,6966,6967,6969,6971,6973,6975,6976,6977,6978,6979,6980,6981,6982,6983,6984,6985,6986,6987,6988,6989,6990,6993,6994,6995,6996,6997,6999,7000,7001,7002,7003,7004,7005,7006,7007,7008,7009,7010,7011,7013,7014,7016,7017,7018,7019,7020,7021,7023,7024,7025,7027,7029,7030,7031,7032,7033,7035,7036,7037,7038,7040,7041,7042,7043,7044,7045,7046,7047,7049,7050,7051,7052,7054,7058,7059,7060,7061,7062,7063,7065,7066,7068,7069,7070,7072,7074,7075,7076,7077,7078,7079,7080,7081,7082,7084,7085,7086,7087,7089,7090,7091,7092,7093,7094,7095,7099,7102,7103,7104,7106,7107,7108,7110,7111,7112,7114,7115,7119,7120,7122,7123,7124,7125,7126,7127,7128,7130,7131,7135,7136,7137,7138,7140,7141,7142,7143,7144,7145,7146,7147,7148,7149,7151,7153,7155,7156,7157,7159,7160,7162,7163,7164,7165,7166,7168,7170,7171,7172,7173,7174,7175,7177,7178,7179,7181,7182,7186,7187,7188,7189,7190,7192,7195,7196,7197,7198,7199,7201,7202,7203,7205,7207,7208,7209,7210,7212,7213,7214,7217,7218,7219,7220,7221,7222,7223,7224,7226,7228,7229,7231,7233,7234,7237,7238,7239,7240,7242,7243,7245,7246,7247,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7258,7259,7260,7261,7264,7265,7266,7267,7269,7270,7271,7272,7273,7274,7275,7276,7278,7279,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7294,7295,7296,7297,7298,7300,7301,7303,7304,7305,7307,7308,7310,7311,7313,7314,7315,7316,7318,7320,7321,7323,7324,7325,7326,7327,7328,7329,7330,7331,7332,7333,7336,7337,7338,7339,7340,7341,7342,7344,7345,7346,7347,7348,7349,7350,7351,7352,7354,7355,7357,7359,7360,7362,7363,7364,7365,7367,7369,7371,7372,7373,7374,7375,7376,7377,7380,7381,7383,7384,7386,7387,7388,7389,7390,7391,7392,7394,7395,7396,7397,7398,7399,7400,7403,7404,7405,7406,7407,7408,7409,7410,7411,7413,7414,7415,7416,7417,7418,7419,7420,7422,7423,7425,7426,7427,7428,7431,7432,7433,7434,7435,7436,7439,7440,7443,7444,7445,7446,7447,7448,7449,7451,7452,7453,7454,7456,7457,7458,7459,7460,7462,7463,7465,7467,7468,7469,7470,7471,7472,7474,7475,7478,7479,7480,7481,7482,7484,7485,7486,7488,7489,7490,7491,7492,7493,7495,7496,7497,7499,7500,7501,7503,7504,7505,7506,7509,7510,7512,7515,7516,7517,7518,7519,7520,7521,7522,7524,7525,7526,7527,7528,7529,7530,7531,7532,7534,7536,7537,7538,7540,7541,7542,7543,7544,7546,7547,7548,7549,7550,7551,7552,7554,7555,7557,7558,7559,7560,7562,7563,7564,7567,7570,7572,7574,7576,7577,7579,7581,7584,7585,7586,7587,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7602,7603,7604,7605,7606,7608,7611,7613,7615,7616,7617,7619,7620,7621,7623,7624,7629,7630,7632,7634,7635,7637,7638,7639,7640,7641,7642,7644,7645,7646,7647,7648,7650,7653,7655,7656,7657,7658,7659,7661,7662,7664,7665,7666,7667,7669,7670,7671,7672,7673,7676,7677,7678,7679,7680,7682,7683,7684,7685,7686,7687,7688,7689,7690,7691,7692,7693,7694,7696,7698,7699,7700,7702,7704,7705,7708,7710,7711,7712,7713,7714,7715,7717,7718,7720,7721,7722,7723,7725,7726,7728,7729,7730,7731,7732,7733,7734,7735,7737,7738,7739,7740,7741,7742,7743,7744,7746,7747,7749,7750,7752,7753,7754,7755,7757,7758,7759,7760,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7773,7775,7777,7778,7779,7780,7781,7782,7783,7786,7788,7789,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7802,7803,7805,7806,7808,7809,7810,7812,7815,7816,7817,7818,7821,7822,7823,7824,7825,7826,7827,7829,7830,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7845,7846,7847,7848,7849,7850,7851,7853,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7870,7871,7872,7873,7874,7875,7876,7878,7879,7880,7882,7883,7887,7889,7890,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7909,7910,7911,7913,7914,7917,7918,7919,7920,7921,7922,7924,7925,7926,7927,7929,7931,7933,7935,7936,7937,7938,7939,7940,7941,7942,7944,7947,7948,7950,7951,7953,7954,7955,7956,7957,7958,7959,7960,7961,7962,7965,7966,7967,7968,7969,7971,7972,7973,7974,7975,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7990,7991,7992,7993,7994,7998,8001,8004,8005,8007,8008,8010,8011,8012,8013,8014,8015,8016,8018,8020,8021,8022,8023,8024,8026,8027,8030,8031,8032,8033,8035,8036,8038,8039,8042,8043,8044,8124,8241,8263,8280,8281,8283,8284,8286,8287,8289,8293,8294,8296,8298,8300,9921,9938,9949,10180,10232,10259,10270,10271,10272,10319,49973]
def get_block_data_mempool(block_height: int) -> Optional[List[Dict]]:
"""Get block data from mempool.space API with retry logic"""
max_retries = 3
for attempt in range(max_retries):
try:
# Get block hash first
url = f"https://mempool.space/api/block-height/{block_height}"
response = requests.get(url, timeout=20)
response.raise_for_status()
block_hash = response.text.strip()
# Get block details with transactions
url = f"https://mempool.space/api/block/{block_hash}/txs"
response = requests.get(url, timeout=20)
response.raise_for_status()
transactions = response.json()
return transactions
except Exception as e:
if attempt < max_retries - 1:
print(f"Attempt {attempt + 1} failed for block {block_height}: {e}", file=sys.stderr)
time.sleep(2)
else:
print(f"All attempts failed for block {block_height}: {e}", file=sys.stderr)
return None
def extract_pubkey_from_asm(asm_string: str) -> str:
"""Extract the actual public key from the ASM string"""
if not asm_string:
return 'NO_PUBKEY'
# Split the ASM string and look for the hex public key
parts = asm_string.split(' ')
for part in parts:
# Look for hex strings that are 66 characters (33 bytes * 2) or 130 characters (65 bytes * 2)
if len(part) == 66 or len(part) == 130:
# Check if it's a valid hex string
if re.match(r'^[0-9a-fA-F]+$', part):
return part
return 'NO_PUBKEY'
def extract_block_rewards(block_height: int) -> List[Dict]:
"""Extract block reward addresses and amounts for a given block"""
transactions = get_block_data_mempool(block_height)
if not transactions or len(transactions) == 0:
return []
# First transaction is coinbase
coinbase_tx = transactions[0]
rewards = []
for i, output in enumerate(coinbase_tx.get('vout', [])):
amount_btc = output['value'] / 100000000 # Convert satoshis to BTC
address = output.get('scriptpubkey_address', 'NO_ADDRESS')
script_type = output.get('scriptpubkey_type', 'unknown')
# For p2pk scripts, extract the actual public key
if script_type == 'p2pk':
asm_string = output.get('scriptpubkey_asm', '')
pubkey = extract_pubkey_from_asm(asm_string)
if pubkey != 'NO_PUBKEY':
address = pubkey
rewards.append({
'block_height': block_height,
'output_index': i,
'address': address,
'amount_btc': amount_btc,
'script_type': script_type
})
return rewards
def main():
parser = argparse.ArgumentParser(description='Extract Patoshi addresses from Bitcoin blocks')
parser.add_argument('--start-block', type=int, default=0, help='Block number to start from (default: 0)')
parser.add_argument('--chunk-size', type=int, default=100, help='Number of blocks to process per progress update (default: 100)')
parser.add_argument('--output', '-o', default='patoshi_addresses.csv', help='Output CSV file (default: patoshi_addresses.csv)')
args = parser.parse_args()
# Filter blocks based on start block
blocks_to_process = [b for b in PATOSHI_BLOCKS if b >= args.start_block]
print(f"Patoshi Address Extractor", file=sys.stderr)
print(f"Credits: Sergio Lerner (@SDLerner) & Jameson Lopp (@jlopp)", file=sys.stderr)
print(f"Processing {len(blocks_to_process)} blocks starting from block {args.start_block}", file=sys.stderr)
with open(args.output, 'w') as f:
f.write("Block Height,Output Index,Address/Pubkey,Amount (BTC),Script Type\n")
processed = 0
successful = 0
errors = 0
total = len(blocks_to_process)
for block_height in blocks_to_process:
try:
rewards = extract_block_rewards(block_height)
if rewards:
for reward in rewards:
line = f"{reward['block_height']},{reward['output_index']},{reward['address']},{reward['amount_btc']},{reward['script_type']}\n"
f.write(line)
successful += 1
else:
errors += 1
processed += 1
if processed % args.chunk_size == 0:
percent = round((processed / total) * 100, 1)
print(f"Progress: {processed}/{total} ({percent}%) - Success: {successful}, Errors: {errors}", file=sys.stderr)
# Rate limiting
time.sleep(0.25)
except Exception as e:
errors += 1
print(f"Error processing block {block_height}: {e}", file=sys.stderr)
processed += 1
continue
print(f"Extraction complete!", file=sys.stderr)
print(f"Processed: {processed}/{total} blocks", file=sys.stderr)
print(f"Successful: {successful} blocks", file=sys.stderr)
print(f"Errors: {errors} blocks", file=sys.stderr)
print(f"Results saved to: {args.output}", file=sys.stderr)
if __name__ == "__main__":
main()