Anti-Double-Mining Fix (2026-03-16)
Problem
A single machine could run two miner instances with different wallet names and earn double rewards. The hardware binding check catches different hardware_ids, but if the old and new miners compute slightly different hardware hashes (different field names in device payload), both pass binding and enroll in the same epoch.
Root Cause
Found on the Mac Pro trashcan — an old v2.5 miner (auto-generated wallet x86_64_c03ce...RTC) and a new v3 miner (wallet trashcan-d500-scott) were both attesting and enrolling simultaneously on the same hardware.
Fix
Added MAC address overlap detection at enrollment time in submit_attestation():
- When a wallet enrolls in an epoch, compute its MAC hashes
- Query
miner_macs + epoch_enroll for any OTHER wallet sharing MACs in the same epoch
- If overlap found: set enrollment weight to 0.0 — one machine, one reward
- Log the duplicate for auditing:
[DOUBLE-MINE] wallet shares MACs with [other_wallet]
The first wallet to enroll keeps its weight. The duplicate gets zero.
Deployed
All 3 attestation nodes updated and restarted.
Anti-Double-Mining Fix (2026-03-16)
Problem
A single machine could run two miner instances with different wallet names and earn double rewards. The hardware binding check catches different hardware_ids, but if the old and new miners compute slightly different hardware hashes (different field names in device payload), both pass binding and enroll in the same epoch.
Root Cause
Found on the Mac Pro trashcan — an old v2.5 miner (auto-generated wallet
x86_64_c03ce...RTC) and a new v3 miner (wallettrashcan-d500-scott) were both attesting and enrolling simultaneously on the same hardware.Fix
Added MAC address overlap detection at enrollment time in
submit_attestation():miner_macs+epoch_enrollfor any OTHER wallet sharing MACs in the same epoch[DOUBLE-MINE] wallet shares MACs with [other_wallet]The first wallet to enroll keeps its weight. The duplicate gets zero.
Deployed
All 3 attestation nodes updated and restarted.