Bug Report
File: docs/WHITEPAPER.md — Section 5.3, get_time_aged_multiplier() pseudocode
The Bug
The get_time_aged_multiplier() function in Whitepaper §5.3 contains a logic error that forces any hardware with a base multiplier ≤ 1.0 to return exactly 1.0, completely defeating sub-baseline rewards including the critical ARM anti-farm penalty.
def get_time_aged_multiplier(device_arch: str, chain_age_years: float) -> float:
base_multiplier = ANTIQUITY_MULTIPLIERS.get(device_arch.lower(), 1.0)
# Modern hardware doesn't decay
if base_multiplier <= 1.0:
return 1.0 # <-- BUG: returns 1.0 for ALL sub-1.0 hardware
Why It's Wrong
The Whitepaper's own multiplier table (§5.2) defines hardware with base multipliers below 1.0:
| Architecture |
Base Multiplier |
| Coffee Lake+ |
0.8× |
| AMD Zen 2/3/4/5 |
0.8× |
| ARM SBC (Raspberry Pi) |
0.0005× |
When base_multiplier <= 1.0, the function returns 1.0 instead of preserving the original value. This causes:
-
ARM SBC anti-farm penalty completely defeated — Raspberry Pi / cheap SBCs should get 0.0005× (a 2000× penalty) but would receive 1.0× — a 2,000,000% reward increase. This is the single most critical consequence: the entire anti-farm design is nullified.
-
Modern x86 rewards inflated by 25% — Coffee Lake+ and Zen 2/3/4/5 should get 0.8× but would receive 1.0×.
-
Contradicts the live API — The live node at rustchain.org/api/miners returns antiquity_multiplier: 0.8 for modern x86 and 0.0005 for ARM, proving the actual implementation handles sub-1.0 multipliers correctly, but the Whitepaper pseudocode does not.
Evidence
Live API data confirms the correct behavior exists in the running node:
GET https://rustchain.org/api/miners
→ modern x86: antiquity_multiplier: 0.8
→ ARM aarch64: antiquity_multiplier: 0.0005
Whitepaper §5.1 Base Multiplier Table lists sub-1.0 tiers:
- "Common" tier: 0.8× for Modern x86_64
- "Penalized" tier: 0.0005× for ARM SBCs
But the §5.3 code returns 1.0 for both, contradicting the same document.
Suggested Fix
def get_time_aged_multiplier(device_arch: str, chain_age_years: float) -> float:
base_multiplier = ANTIQUITY_MULTIPLIERS.get(device_arch.lower(), 1.0)
# Sub-baseline hardware (modern x86, ARM penalty) doesn't decay
# — it stays at its fixed sub-1.0 rate
if base_multiplier < 1.0:
return base_multiplier
# Baseline hardware stays at 1.0
if base_multiplier == 1.0:
return 1.0
# Vintage hardware decays toward 1.0
vintage_bonus = base_multiplier - 1.0
aged_bonus = max(0, vintage_bonus * (1 - DECAY_RATE_PER_YEAR * chain_age_years))
return 1.0 + aged_bonus
Impact
If anyone implements this pseudocode as written (e.g., alternative node implementations, test harnesses, or developer onboarding), ARM farms would receive full baseline rewards instead of the intended near-zero penalty, completely undermining RustChain's anti-farm security model.
Bug Report
File:
docs/WHITEPAPER.md— Section 5.3,get_time_aged_multiplier()pseudocodeThe Bug
The
get_time_aged_multiplier()function in Whitepaper §5.3 contains a logic error that forces any hardware with a base multiplier ≤ 1.0 to return exactly 1.0, completely defeating sub-baseline rewards including the critical ARM anti-farm penalty.Why It's Wrong
The Whitepaper's own multiplier table (§5.2) defines hardware with base multipliers below 1.0:
When
base_multiplier <= 1.0, the function returns1.0instead of preserving the original value. This causes:ARM SBC anti-farm penalty completely defeated — Raspberry Pi / cheap SBCs should get 0.0005× (a 2000× penalty) but would receive 1.0× — a 2,000,000% reward increase. This is the single most critical consequence: the entire anti-farm design is nullified.
Modern x86 rewards inflated by 25% — Coffee Lake+ and Zen 2/3/4/5 should get 0.8× but would receive 1.0×.
Contradicts the live API — The live node at
rustchain.org/api/minersreturnsantiquity_multiplier: 0.8for modern x86 and0.0005for ARM, proving the actual implementation handles sub-1.0 multipliers correctly, but the Whitepaper pseudocode does not.Evidence
Live API data confirms the correct behavior exists in the running node:
Whitepaper §5.1 Base Multiplier Table lists sub-1.0 tiers:
But the §5.3 code returns
1.0for both, contradicting the same document.Suggested Fix
Impact
If anyone implements this pseudocode as written (e.g., alternative node implementations, test harnesses, or developer onboarding), ARM farms would receive full baseline rewards instead of the intended near-zero penalty, completely undermining RustChain's anti-farm security model.