Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: high
Invalid

Cross-Chain Emission Rate Miscalculation Due to `Hardcoded Block` Time Assumptions

Summary

The RAACMinter contract contains a critical cross-chain incompatibility by hardcoding BLOCKS_PER_DAY = 7200 (12-second Ethereum blocks). This creates severe economic miscalculations when deployed on chains with different block times, leading to either excessive inflation or insufficient rewards depending on network characteristics.

As stated in the scope of this audit

All EVM Compatible, Curve ecosystem ready (cross curve via EYWA).

Vulnerability Details

Faulty Assumption

The contract assumes fixed Ethereum block times:

uint256 public constant BLOCKS_PER_DAY = 7200; // 12-second blocks

And later in the constructor:

lastUpdateBlock = block.number;

This value directly impacts all emission calculations:

emissionRate = INITIAL_RATE / BLOCKS_PER_DAY; // 1000e18 / 7200

Chain-Specific Impacts

Chain Block Time Actual Blocks/Day RAAC/Day (Intended) RAAC/Day (Actual) Deviation
Ethereum 12s 7,200 1,000 1,000 0%
Polygon 2s 43,200 1,000 6,000 +500%
BSC 3s 28,800 1,000 4,000 +300%
Arbitrum 0.25s 345,600 1,000 48,000 +4700%

Impact

  1. Hyperinflation Risk:

    • 4700% over-emission on high-throughput chains like Arbitrum

    • Token supply growth exceeds whitepaper projections

    • Potential collapse of RAAC valuation

  2. Protocol Instability:

    • Stability Pool rewards become economically unsustainable

    • Borrowing/lending incentives distorted across chains

  3. Cross-Chain Deployment Failure:

    • Makes protocol non-portable to L2s/alternative L1s

    • Limits protocol's scalability and adoption potential

Tools Used

Manual Review

Proof of Concept

Ethereum Mainnet (Normal Behavior)

// Initialization
BLOCKS_PER_DAY = 7200 // 12s blocks
INITIAL_RATE = 1000e18 // 1,000 RAAC/day
// Calculation
perBlockEmission = 1000e18 / 7200 = 138,888,888,888,888,888 wei (0.1389 RAAC/block)

Polygon PoS Chain (Dangerous Behavior)

// Actual chain parameters
BLOCKS_PER_DAY = 43200 // 2s blocks (REALITY)
INITIAL_RATE = 1000e18 // 1,000 RAAC/day (INTENDED)
// Faulty calculation using Ethereum assumptions
perBlockEmission = 1000e18 / 7200 = 138,888,888,888,888,888 wei
// ACTUAL daily emission:
138,888,888,888,888,888 wei/block * 43,200 blocks/day =
6,000,000,000,000,000,000 wei/day = 6,000 RAAC/day

Resulting Economic Impact

  1. 30-Day Cumulative Emissions:

    • Intended: 30,000 RAAC

    • Actual Polygon: 180,000 RAAC (+600%)

    • Actual Arbitrum: 1,440,000 RAAC (+4,700%)

  2. Stability Pool APR Distortion:

    • $10M TVL @ intended 1,000 RAAC/day: 3.65% APR

    • $10M TVL @ Polygon 6,000 RAAC/day: 21.9% APR

    • Creates unsustainable yield expectations

Recommendations

  1. Time-Based Calculation

// Use timestamp deltas instead of block counts
uint256 public constant SECONDS_PER_DAY = 86400;
function tick() external {
uint256 timeElapsed = block.timestamp - lastUpdateTimestamp;
uint256 daysElapsed = timeElapsed / SECONDS_PER_DAY;
uint256 emission = daysElapsed * dailyEmissionRate;
}
  1. Chain-Aware Configuration

// Make blocks/day configurable per deployment
uint256 public blocksPerDay; // Set in constructor
constructor(uint256 _blocksPerDay) {
blocksPerDay = _blocksPerDay;
}
Updates

Lead Judging Commences

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Validated
Assigned finding tags:

RAACMinter hardcoded BLOCKS_PER_DAY breaks cross-chain compatibility with variable token emission rates

Known issue LightChaser M12

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Validated
Assigned finding tags:

RAACMinter hardcoded BLOCKS_PER_DAY breaks cross-chain compatibility with variable token emission rates

Known issue LightChaser M12

Appeal created

inallhonesty Lead Judge 3 months ago
Submission Judgement Published
Invalidated
Reason: Design choice
Assigned finding tags:

RAACMinter hardcoded BLOCKS_PER_DAY breaks cross-chain compatibility with variable token emission rates

Known issue LightChaser M12

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.