TreasuryDrip Contract Specification

Overview

The RiddlenTreasuryDripAutomated contract is a production-ready automated treasury distribution system designed for gaming protocols. It provides secure, automated monthly token releases with comprehensive monitoring and failsafe mechanisms.

Core Features

🔄 Automated Distribution

🛡️ Security Features

📊 Monitoring & Analytics

Technical Architecture

State Variables

Core Configuration

IERC20 public immutable rdlnToken;        // RDLN token contract
address public treasuryWallet;            // Source of funds
address public operationsWallet;          // Destination for releases

Distribution Parameters

uint256 public constant MONTHLY_RELEASE = 1_000_000 * 10**18;  // Base amount
uint256 public constant MONTH_IN_SECONDS = 30 days;            // Release interval
uint256 public releaseMultiplier = 100;                       // Scaling factor (100 = 1.0x)

Safety Limits

uint256 public constant MIN_TREASURY_BALANCE = 3 * MONTHLY_RELEASE;  // 3-month minimum
uint256 public constant MAX_RELEASE_PER_PERIOD = 10 * MONTHLY_RELEASE; // 10M max
uint256 public constant TIMELOCK_DELAY = 7 days;                    // Change delay

Key Functions

Primary Operations

Administration

Emergency Functions

Wallet Management (Timelock Protected)

Security Model

Access Control Hierarchy

  1. Owner: Full administrative control
  2. Authorized Automation Services: Can trigger releases only
  3. Public: Can view state and perform health checks

Protection Mechanisms

Circuit Breaker Pattern

Normal Operation → Failure Detected → Increment Counter →
3 Failures Reached → Auto-Pause → Manual Reset Required

Timelock Protection

All critical changes require 7-day delay:

Emergency Procedures

Failure Handling

The contract implements comprehensive failure handling:

  1. Pre-flight Checks: Verify allowance and balance before transfer
  2. Transfer Protection: Try-catch for transfer operations
  3. State Reversion: Safely revert state on failure (with underflow protection)
  4. Escalation: Pause contract after repeated failures
  5. Monitoring: Emit detailed failure events for analysis

Integration Guide

  1. Register contract with Chainlink Automation
  2. Configure checkUpkeep() monitoring
  3. Set appropriate gas limits for performUpkeep()
// The contract automatically handles:
checkUpkeep()  returns (true, "") when release needed
performUpkeep()  executes the release

Monitoring Integration

Key events for monitoring systems:

// Successful operations
event TokensReleased(uint256 amount, uint256 timestamp, address to, string releaseType);

// Health monitoring
event AutomationHealthCheck(bool healthy, uint256 timestamp);
event TreasuryLowBalance(uint256 remainingBalance, uint256 monthsRemaining);

// Security events
event UnauthorizedAutomationAttempt(address caller, uint256 timestamp);
event CircuitBreakerActivated(uint256 consecutiveFailures, uint256 timestamp);
event EmergencyTriggered(string trigger, uint256 timestamp);

Deployment Checklist

Pre-Deployment

Deployment Parameters

constructor(
    address _rdlnToken,      // RDLN token contract address
    address _treasuryWallet, // Multi-sig wallet with funds
    address _operationsWallet, // Operations receiving wallet
    address _owner           // Contract owner (preferably multi-sig)
)

Post-Deployment Setup

  1. Fund Treasury: Transfer RDLN tokens to treasury wallet
  2. Set Allowance: Treasury must approve contract for transfers
  3. Configure Automation: Add authorized automation services
  4. Test Release: Perform initial manual release test
  5. Monitor: Set up event monitoring and alerting

Risk Assessment

Low Risk ✅

Operational Considerations

Security Audit Summary

Status: ✅ PASSED (Grade A) Issues Fixed: 3 (2 Medium, 1 Low) Deployment Ready: YES

See audits/TreasuryDrip-audit-2025-09-25.md for complete audit report.


Contract Version: 1.0.0 Last Updated: September 25, 2025 Audit Date: September 25, 2025