Replication Package — Pool-Operator Concentration After the 2021 China Mining Ban
收藏资源简介:
**Manuscript:** Wright, C. S. *Pool-Operator Concentration After the 2021 China Mining Ban: Full Block-Attribution Evidence from the Bitcoin Mining-Pool Layer, 2020–2022.* FinTech, Special Issue "Cryptocurrency and Digital Cash." Manuscript ID fintech-4363340. **Author:** Craig S. Wright, University of Exeter Business School, Exeter, United Kingdom. cw881@exeter.ac.uk. ORCID 0000-0001-9374-0507. **Archive DOI:** 10.5281/zenodo.20754433 — licensed CC BY 4.0. This archive reproduces every numerical result in the manuscript and the Online Supplementary Appendix from the full population of Bitcoin blocks over the study window. No sampling is used. Scripts are deterministic given the deposited input files. ## Data provenance - **Block data** — full population of 97,005 Bitcoin blocks, heights 628,350 through 725,354 (May 2020–February 2022), retrieved from the mempool.space block API. Stored in `blocks.jsonl`, one JSON object per block (height, timestamp, attributed pool tag, coinbase fields). The deposited file is the frozen copy used in the paper. - **Pool-operator classification** — `classification_ledger.csv`. Each attributed pool brand is coded to its corporate parent, operational headquarters, country of incorporation, and China-linkage, from publicly documented corporate-parent records. The two genuinely ambiguous cases (Binance Pool's disputed domicile; the BTC.com transfer from BitDeer to BIT Mining Limited, documented in BIT Mining SEC Form 6-K releases of 15 April and 14 October 2021) are flagged in the ledger and tested in the sensitivity analysis. - **Network hashrate** — `coinmetrics_hashrate_v1_0_0.csv`, the Bitcoin network hash-rate series from Coin Metrics community data, used for the aggregate-activity (H2) analysis. - **Electricity cross-check** — `cbeci_consumption_v1_2_0.csv`, the Cambridge Bitcoin Electricity Consumption Index series, used only as a supplementary cross-check. ## Reproduction pipeline Python 3.11+ with numpy, pandas, scipy. Run in order: 1. `fetch_blocks.py` — retrieves the block population from the mempool.space API to `blocks.jsonl`. Provided for provenance; the deposited `blocks.jsonl` is the canonical input. 2. `step2_classify.py` — joins blocks to `classification_ledger.csv`, assigning each block a group label (China-linked / non-China-linked / excluded-unidentified). 3. `step3_windows.py` — builds the monthly panel and the four analysis windows → `monthly.csv`, `window_shares.csv`, `panel_top13.csv`. 4. `step4_did.py` — two-way fixed-effects difference-in-differences on the top-13 and extended 25-pool panels → `did_top13.json`. 5. `step5_inference.py` — CRV1 with t(G−1) critical values, wild cluster bootstrap (B = 999, Rademacher weights), and exact treated-label permutation over all C(13,8) = 1,287 assignments → `inference_top13.json`. 6. `step6_diagnostics.py` — pre-trend tests, the compositional log-ratio (Aitchison) analysis, and the dual Herfindahl–Hirschman computations → `key_stats.json`. 7. `step7_alt_specs.py` — alternative event datings and panel sizes → `alt_specs.json`. - `compute_pretrend_robust.py`, `compute_wcb_alt.py` — supporting robustness computations → `pretrend_robustness.json`. ## File manifest - `README.md` — this file. - `blocks.jsonl` — full population, 97,005 attributed blocks. - `classification_ledger.csv` — pool → corporate parent, operational HQ, incorporation, China-linkage, with sources. - `monthly.csv` — monthly group shares (China-linked %, non-China-linked %, Foundry %, block totals). - `window_shares.csv` — placebo / pre-trend / treatment / persistence window shares. - `panel_top13.csv` — top-13 pool × month panel (pool, ym, treat, post, treat×post, share, n_blocks, tot_blocks). - `key_stats.json` — headline statistics, pre-trend diagnostics, log-ratio and HHI results. - `did_top13.json` — difference-in-differences point estimates (top-13 and extended panels). - `inference_top13.json` — CRV1, wild cluster bootstrap, and exact permutation results. - `pretrend_robustness.json` — pre-trend diagnostics across the four-, six-, twelve-, and thirteen-month windows. - `alt_specs.json` — alternative datings and panel-size specifications. - `coinmetrics_hashrate_v1_0_0.csv` — Coin Metrics network hash-rate series (H2). - `cbeci_consumption_v1_2_0.csv` — CBECI consumption series (supplementary cross-check). - `fetch_blocks.py`, `step2_classify.py`, `step3_windows.py`, `step4_did.py`, `step5_inference.py`, `step6_diagnostics.py`, `step7_alt_specs.py`, `compute_pretrend_robust.py`, `compute_wcb_alt.py` — pipeline scripts. ## Headline results regenerated by the pipeline Window shares, placebo (May–Oct 2020) to persistence (Nov 2021–Feb 2022): China-linked 78.47% → 60.01% (−18.46 pp); non-China-linked 3.50% → 27.02% (+23.52 pp); excluded/unidentified 18.03% → 12.97% (−5.06 pp). The three changes sum to zero by the closed-share constraint. Top-13 difference-in-differences (post = 24 September 2021 enforcement): Treat × Post = −5.45 pp/pool; CRV1 SE 2.55; CRV1 p = 0.054; wild cluster bootstrap p = 0.014; exact permutation p = 0.023; N = 286 pool-months; G = 13 clusters. Extended 25-pool panel: −3.23 pp/pool; N = 550; G = 25. Foundry USA: pre-ban mean 0.56%, persistence mean 16.25% — a gain of approximately 15.7 pp, about 67% of the non-China-linked share gain. Compositional shift: the non-China-to-China log-ratio rises by +2.31 units placebo to persistence (a tenfold change in the ratio); an interrupted regression of the monthly log-ratio on a post-enforcement indicator gives a post-shift of +1.72 units, robust to serial correlation (Newey–West t = 4.8). Within-non-China-subset normalised Herfindahl–Hirschman Index: 10,000 → 4,191.



