Murad Farzulla — Farzulla Research — ORCID
Andrew Maksakov — Dissensus AI (Section 5.4, PET-AML stack)
Preprint DOI: 10.5281/zenodo.17917938
This paper challenges the assumption that comprehensive transaction surveillance is necessary for CBDC financial stability and crime prevention. It proposes an alternative architecture built on anonymized pattern detection, transaction-level intervention, and opt-in deanonymization, and argues that the surveillance–privacy trade-off is weaker than CBDC design documents assume.
main.tex on this branch is now the corrected manuscript. The February version
it replaces reported §4.5 "validation" at AUC = 1.000 with watchlist access adding
zero marginal value. That was a data-generating artifact — launderers were defined
to hold 3–6 wallets against 1–2, so num_wallets separated the classes by
construction, and a saturated denominator made both the "87–95% of surveillance-based
effectiveness" figure and the "zero marginal improvement" result arithmetically
forced rather than measured. Neither claim is supported and neither should be
cited. detection/ is the honest replacement harness.
What replaced them, on 8,000 entities and 388 illicit: the marginal value of identity-linked auxiliary information is model- and metric-dependent. Average precision moves +0.0044 for the boosted model (90% CI [−0.0008, +0.0102]) and +0.0625 for the linear one (CI [+0.0478, +0.0781]), which the equivalence test reads as surveillance-superior. Withholding identity is not free; what it costs depends on the detector.
Also corrected: the degeneracy audit is pre-specified, not "pre-registered" (no public timestamped registration exists); H.R. 1919 is described as having passed the House per Congress.gov, not as enacted legislation.
The 21 July positioning pass stands — the §2.4 gap claim was falsified against a
30-year cryptographic-compliance lineage (trustee e-cash → Compact E-Cash → GGM16 →
Platypus/PEReDi → Privacy Pools) plus BIS Aurora/Hertha, and the paper repositioned
around what survives. Item-by-item log in CHANGES-FOR-ANDREW.md, bibliography
rationale in FORWARD_NOTE.md, both on jul2026-working.
Target venue: Frontiers in Blockchain, Research Topic on institutional DLT.
main.tex # LaTeX source — canonical, corrected August 2026
references.bib # bibliography — corrected July 2026, see below
pet_aml_sim.py # PET-AML stack simulation (Section 5.4)
detection/ # Section 4.5 detection-validation pipeline
Self-contained, seeded, and gated. Four evidence tiers (T1 structure-only on unlinked pseudonyms → T2 + pseudonymous linkage → T3 + identity attributes → T4 + watchlist), with entity-disjoint cross-validation, entity-clustered bootstrap CIs, a label-permutation negative control, and a TOST equivalence test for the T2 vs T4 contrast.
A pre-specified degeneracy audit runs before any headline number and hard-fails if any
single feature reaches entity-level AUC > 0.95. Run it against the original DGP and it fails
on num_wallets at 1.000; on the shipped DGP the worst feature sits ≈ 0.84–0.92.
cd detection/
python3 run_all.py # seed 20260707, 8000 entities, δ = 0.03
python3 run_all.py --seed 42 # every number regenerates from the one seed
python3 test_pipeline.py # regression testsdetection/confirmatory/ holds the prospective pipeline for the operational
endpoint — missed illicit entities at a fixed alert budget, on independently
generated train and test populations — with the freeze enforced in code. See
its README; note that the alert budget originally proposed sits in a saturated
regime where the test cannot fail, which is why it was not adopted.
Requires Python 3.11+ with numpy, scipy, scikit-learn, pandas (developed on 3.14 /
numpy 2.3.5 / scipy 1.16.3 / sklearn 1.8.0 / pandas 2.3.3). The committed results/ were
regenerated byte-identically on a clean checkout — if your run differs, the environment
differs, and that's worth knowing before we quote anything.
Reference numbers, real-data adapters (AMLworld, Elliptic) and the honest read of what these
synthetic results do and do not license: detection/README.md.
PSI watchlist screening, ZK policy proof generation/verification, secure MPC risk propagation, queueing delays. Pure Python 3, no dependencies.
python3 pet_aml_sim.py --days 2 --tx-per-day 20000 --psps 8 --seed 7Note: the copy of pet_aml_sim.py on this branch (main) still has the escalation-ordering
bug described below — it has been fixed, but only on jul2026-working, alongside the
manuscript update that depends on it. Use that branch if you want the corrected simulator; this
one is kept as-is because main.tex here (the stale February version) still quotes the old
"zero escalations" result, and updating the code without updating the text would make the two
contradict each other on the same branch.
git checkout jul2026-working # corrected pet_aml_sim.py + matching manuscriptOriginal issue, for reference: risk_tier was read inside the transaction loop (travel-rule
check and escalation, ~lines 468/475) but only assigned by run_batch risk propagation after
the loop completed — so tier-based escalation could never fire, and the "zero escalations"
result was guaranteed by construction rather than by the architecture. Fixed on
jul2026-working by running risk propagation once per simulated day instead of once at the end;
a reseeded rerun there now reports a real (small) escalation count.
references.bib was corrected in July 2026. Five entries in the February version carried
fabricated author sets (OfflineCBDC2024, ZKPSurvey2025, UFLaw2024, OxfordCBDCSurvey2025,
Koti2024Graphiti); all are now verified against Crossref / IACR ePrint / publisher records,
along with fixes to Campanelli2019 (was Campanelli2017), Wang2025UnbalancedPSI,
choi2025cbdcprivacy, and the ECBConsultation2021 note. Eight entries were appended for the
positioning pass. Rationale per entry: FORWARD_NOTE.md on jul2026-working.
Plain article class, no local .cls and no external graphics — main.tex and
references.bib are all you need.
pdflatex main && bibtex main && pdflatex main && pdflatex main@misc{FarzullaMaksakov2026CBDC,
author = {Farzulla, Murad and Maksakov, Andrew},
title = {Privacy-Preserving Financial Surveillance: An Architectural
Framework for {CBDC} Implementation},
year = {2026},
doi = {10.5281/zenodo.17917938},
note = {Preprint}
}