ETH Price: $3,426.66 (-1.34%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve380886852025-11-12 16:58:3755 mins ago1762966717IN
Rage Protocol: RAGE Token
0 ETH0.000000330.00724616
Approve380849552025-11-12 14:54:173 hrs ago1762959257IN
Rage Protocol: RAGE Token
0 ETH0.000002070.0448035
Transfer380842132025-11-12 14:29:333 hrs ago1762957773IN
Rage Protocol: RAGE Token
0 ETH0.000000230.0080906
Approve380791722025-11-12 11:41:316 hrs ago1762947691IN
Rage Protocol: RAGE Token
0 ETH0.000000060.00135302
Approve380638982025-11-12 3:12:2314 hrs ago1762917143IN
Rage Protocol: RAGE Token
0 ETH0.000000320.00698263
Transfer380608082025-11-12 1:29:2316 hrs ago1762910963IN
Rage Protocol: RAGE Token
0 ETH0.000000080.00296628
Transfer379948392025-11-10 12:50:252 days ago1762779025IN
Rage Protocol: RAGE Token
0 ETH0.000000150.00525526
Approve379838012025-11-10 6:42:292 days ago1762756949IN
Rage Protocol: RAGE Token
0 ETH0.000000060.00134274
Approve379700532025-11-09 23:04:132 days ago1762729453IN
Rage Protocol: RAGE Token
0 ETH0.000000170.00385245
Transfer379686482025-11-09 22:17:232 days ago1762726643IN
Rage Protocol: RAGE Token
0 ETH0.000000080.00301956
Approve379282382025-11-08 23:50:233 days ago1762645823IN
Rage Protocol: RAGE Token
0 ETH0.00000020.00447274
Approve378837702025-11-07 23:08:074 days ago1762556887IN
Rage Protocol: RAGE Token
0 ETH0.000000090.00196495
Approve378752772025-11-07 18:25:014 days ago1762539901IN
Rage Protocol: RAGE Token
0 ETH0.000001390.02999749
Approve378709782025-11-07 16:01:435 days ago1762531303IN
Rage Protocol: RAGE Token
0 ETH0.000000120.002432
Approve378635792025-11-07 11:55:055 days ago1762516505IN
Rage Protocol: RAGE Token
0 ETH0.000000370.00791645
Transfer378510052025-11-07 4:55:575 days ago1762491357IN
Rage Protocol: RAGE Token
0 ETH0.000000120.00405796
Transfer378508322025-11-07 4:50:115 days ago1762491011IN
Rage Protocol: RAGE Token
0 ETH0.000000110.00403764
Approve378472462025-11-07 2:50:395 days ago1762483839IN
Rage Protocol: RAGE Token
0 ETH0.000000530.01151782
Transfer378351992025-11-06 20:09:055 days ago1762459745IN
Rage Protocol: RAGE Token
0 ETH0.000000170.00600764
Approve378260742025-11-06 15:04:556 days ago1762441495IN
Rage Protocol: RAGE Token
0 ETH0.000002120.04490728
Approve378246172025-11-06 14:16:216 days ago1762438581IN
Rage Protocol: RAGE Token
0 ETH0.000000470.01665638
Approve378246132025-11-06 14:16:136 days ago1762438573IN
Rage Protocol: RAGE Token
0 ETH0.000000810.01677202
Approve377959672025-11-05 22:21:216 days ago1762381281IN
Rage Protocol: RAGE Token
0 ETH0.000000350.00762401
Transfer377865442025-11-05 17:07:157 days ago1762362435IN
Rage Protocol: RAGE Token
0 ETH0.00000140.04724059
Transfer377586312025-11-05 1:36:497 days ago1762306609IN
Rage Protocol: RAGE Token
0 ETH0.000001090.03696821
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Rage

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

import {ERC20} from "./ERC20.sol";
import {RageStructs} from "./RageStructs.sol";

contract Rage is ERC20 {
  
  // constant
  uint256 private constant VERSION = 1;
  address private constant DEAD_ADDRESS = 0x000000000000000000000000000000000000dEaD;
  uint256 private constant MAX_SUPPLY_PERCENT = 5; // maximum supply percent that can be requested
  uint256 private constant SUPPLY_DELAY = 1 days; // days between requestSupply from chaos engine
  uint256 public constant FINAL_MAX_SUPPLY = 342_500_000e18; // 342.5M supply cap

  // event
  event RageChaosEngineSet(address indexed oldOwner, address indexed newOwner);
  event SupplyRequested(address indexed rce, uint256 amount, uint256 percent);
  event RageBurned(uint256 amount);

  // state
  address private owner;
  uint256 private RAGE_INITIAL;
  uint256 private RAGE_MINTED;
  uint256 private RAGE_BURNED;
  uint256 private LAST_REQUEST_SUPPLY;

  // constructor
  constructor(uint256 supply) ERC20("Rage Protocol", "RAGE", 18) {
      owner = msg.sender;
      _mint(owner, supply);
      RAGE_INITIAL = supply;
  }

  // getTotalSupply
  // get total rage supply minus the tokens that have been manually transfered to 0 or dead address
  function getTotalSupply() public view returns (uint256) {
      uint256 zeroAddressBalance = balanceOf[address(0)];
      uint256 deadAddressBalance = balanceOf[DEAD_ADDRESS];
      return totalSupply - zeroAddressBalance - deadAddressBalance;
  }
  
  // getInitialSupply
  // amount of rage minted on token deployment
  function getInitialSupply() public view returns (uint256) {
      return RAGE_INITIAL;
  }

  // getMintedSupply
  // tracks rage minted after initial mint
  function getMintedSupply() public view returns (uint256) {
      return RAGE_MINTED;
  }

  // getBurnedSupply
  // tracks rage burned using the main burn function, transfer to 0 address are not counted
  function getBurnedSupply() public view returns (uint256) {
      return RAGE_BURNED;
  }

  // getMintableSupply
  function getMintableSupply() public view returns (uint256) {
    uint256 currentSupply = getTotalSupply();
    if (currentSupply >= FINAL_MAX_SUPPLY) return 0;
    return FINAL_MAX_SUPPLY - currentSupply;
  }

  // getState
  function getState() external view returns (RageStructs.RageState memory) {
    return RageStructs.RageState({
      version: VERSION,
      owner: owner,
      supply: getTotalSupply(),
      initial: getInitialSupply(),
      mint: getMintedSupply(),
      burn: getBurnedSupply(),
      mintable: getMintableSupply(),
      lastRequestSupply: LAST_REQUEST_SUPPLY
    });
  }

  // burn
  // anyone can burn rage tokens
  function burn(uint256 amount) external {
      _burn(msg.sender, amount);
      RAGE_BURNED += amount;

      emit RageBurned(amount);
  }

  // requestSupply
  // rageChaosEngine can request supply once per day, for a maximum of 5% of the total supply until we reach final_max_supply
  // the supply is sent directly to the rageChaosEngine
  function requestSupply(uint256 percent) external {
      require(msg.sender == owner, "unauthorized");
      require(block.timestamp >= LAST_REQUEST_SUPPLY + SUPPLY_DELAY, "mustWait24Hours");
      require(percent > 0 && percent <= MAX_SUPPLY_PERCENT, "invalidPercent");
      
      uint256 supply = getTotalSupply();
      uint256 amount = (supply * percent) / 100;
      require(amount > 0, "amountTooSmall");
      require(supply + amount <= FINAL_MAX_SUPPLY, "maxSupplyExceeded");

      _mint(owner, amount);
      RAGE_MINTED += amount;
      LAST_REQUEST_SUPPLY = block.timestamp;

      emit SupplyRequested(owner, amount, percent);
  }

  // setRageChaosEngine
  // transfer to rageChaosEngine, once done it cannot be changed as the rage chaos engine as no functions to transfer ownership
  function setRageChaosEngine(address newOwner) external {
      require(msg.sender == owner, "unauthorized");
      require(newOwner != address(0), "invalidAddress");

      owner = newOwner;
      emit RageChaosEngineSet(msg.sender, newOwner);
  }
}

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*//////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*//////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*//////////////////////////////////////////////////////////////
                            EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*//////////////////////////////////////////////////////////////
                               ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*//////////////////////////////////////////////////////////////
                             EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }
}

File 3 of 3 : RageStructs.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

library RageStructs {
  struct RbpState {
    uint256 version;                   // rbp version
    RageStructs.RbpStateValue state;   // rbp internal state
    RageStructs.RbpConfig config;      // rbp internal configurations
    RageStructs.RbpRecent recent;      // rbp most recent actions
  }

  struct RbpViewState {
    uint256 price;                     // current rage price
    uint256 activeSupply;              // active supply as declared by rce
    uint256 fmv;                       // current rage fmv
    uint256 backingPerShare;           // current rage backing per share
    uint256 activeAssetsUsdcValue;     // Total USDC value of active assets
    uint256 rawHestia;                 // Raw HESTIA balance
    uint256 rawCircle;                 // Raw CIRCLE balance
    uint256 pendingHestia;             // Pending HESTIA
    uint256 pendingCircle;             // Pending CIRCLE
    uint256 bonusHestia;               // Available bonus HESTIA
    uint256 bonusCircle;               // Available bonus CIRCLE
    uint256 activePhestia;             // Active pHESTIA balance
    uint256 activePcircle;             // Active pCIRCLE balance
    uint256 activeHestia;             // Active HESTIA balance
    uint256 activeCircle;             // Active CIRCLE balance
    uint256 investPercentHestia;       // HESTIA investment percentage
    uint256 investPercentCircle;       // CIRCLE investment percentage
    uint256 underlyingHestia;          // HESTIA per RAGE
    uint256 underlyingCircle;          // CIRCLE per RAGE
    uint256 underlyingHestiaValue;     // USDC value of HESTIA per RAGE
    uint256 underlyingCircleValue;     // USDC value of CIRCLE per RAGE
    uint256 underlyingTotalValue;      // Total USDC value per RAGE
    uint256 underlyingHestiaPercent;   // HESTIA percentage
    uint256 underlyingCirclePercent;   // CIRCLE percentage
    uint256 rageFromOnePercentUsdc;    // RAGE received from one percent of active value in USDC
    uint256 hestiaFromOnePercentRage;  // HESTIA received from one percent of Rage active supply
    uint256 circleFromOnePercentRage;  // CIRCLE received from one percent of Rage active supply 
 }

  struct RageState {
    uint256 version;                   // version of the rage contract
    address owner;                     // owner of the rage token
    uint256 supply;                    // current rage supply
    uint256 initial;                   // rage initial supply
    uint256 mint;                      // total minted rage
    uint256 burn;                      // total burned rage
    uint256 mintable;                  // supply that can still be minted
    uint256 lastRequestSupply;         // timestamp of last supply request
  }

  struct RonState {
    uint256 version;                   // version of the rage option contract
    address rce;                       // address of the rce contract
    address rbp;                       // address of the rbp contract
    uint256 supply;                    // total nft supply
    string baseUri;                    // base uri for the nft metadata
    string contractUri;                // uri of the contract metadata json file
  }

  struct RbpStateValue {
    uint256 status;                    // Protocol status (0 = off, 1 = on)
    uint256 nextConfigTime;            // Next allowed configuration update timestamp
    uint256 pendingHestia;             // Amount of HESTIA tokens in pending backing
    uint256 pendingCircle;             // Amount of CIRCLE tokens in pending backing
    uint256 totalOptions;              // Total number of investment options created
    uint256 optionsMint;               // Options converted to RAGE tokens
    uint256 optionsAdp;                // Options minted using Asset Decline Protection
    uint256 optionsAdpValue;           // USDC value of options minted using Asset Decline Protection
    uint256 optionsRefund;             // Options that were refunded
    uint256 optionsRefundValue;        // USDC value of refunded options
    uint256 totalInvest;               // USDC value of invest
    uint256 totalInvestorBonus;        // USDC value of bonus given to investor
    uint256 totalEcosystemBonus;       // USDC value of bonus given to ecosystem
    uint256 totalDebt;                 // Total USDC owed for potential refunds
    uint256 totalClaims;               // Total number of unique claim wallets
    uint256 totalAdpDilution;          // Total USDC value diluted through ADP
    uint256 claimsProcessed;           // Number of claims successfully processed
    uint256 claimsHestia;              // Total HESTIA tokens claimed
    uint256 claimsCircle;              // Total CIRCLE tokens claimed
  }
  
  struct OraclePrices {
    uint256 wethTwapUsdcPrice;         // TWAP price of WETH in USDC
    uint256 hestiaTwapUsdcPrice;       // TWAP price of HESTIA in USDC
    uint256 circleTwapUsdcPrice;       // TWAP price of CIRCLE in USDC
    uint256 hestiaCircleTwapUsdcPrice; // TWAP price of 1 Hestia and 1 Circle in USDC
    uint256 rageTwapUsdcPrice;         // TWAP price of RAGE in USDC
    uint256 hestiaUsdcPriceAfterBondDebond;  // HESTIA price after bond/debond fees
    uint256 circleUsdcPriceAfterBondDebond;  // CIRCLE price after bond/debond fees
    uint256 pHestiaUsdcPriceAfterDebond;     // pHESTIA value in USDC after debonding
    uint256 pCircleUsdcPriceAfterDebond;     // pCIRCLE value in USDC after debonding
    uint256 pHestiaInHestiaAfterDebond;      // HESTIA received per pHESTIA after debond
    uint256 pCircleInCircleAfterDebond;      // CIRCLE received per pCIRCLE after debond
    uint256 pHestiaRequiredForHestia;        // pHESTIA needed to get 1 HESTIA
    uint256 pCircleRequiredForCircle;        // pCIRCLE needed to get 1 CIRCLE
    uint256 pHestiaRequiredForHestiaResult;  // HESTIA received when doing pHestiaRequiredForHestia (should be close to 1)
    uint256 pCircleRequiredForCircleResult;  // CIRCLE received when doing pHestiaRequiredForHestia (should be close to 1)
  }
  
  struct RbpConfig {
    uint256 minInvest; // Adjustable from $1 to $100 (default $10) - determines the minimum amount of USDC to receive to create a position
    uint256 maxInvest; // Adjustable from $1000 to $100000 (default $10000) - determines the maximum amount of USDC to receive to create a position
    uint256 hestiaPercent; // Adjustable from 55% to 95% (default: 80%) - determines the percentage of each investment and bonus allocated to HESTIA tokens
    uint256 investorBonus; // Adjustable from 1% to 15% (default: 6%) - sets the bonus percentage in both tokens (at their ratios) given to investors on their token purchases to cover wrapping fees and provide net benefit
    uint256 mintDelay; // Adjustable from 1 to 90 days (default: 3 days) - controls the mandatory waiting period after investment before NFT receipts can be converted to RAGE tokens
    uint256 adpDelay; // Adjustable from 30 to 300 days (default: 60 days) - sets the waiting period after investment before Asset Decline Protection becomes available for NFT conversion
    uint256 adpPercent; // Adjustable from 55% to 90% (default: 75%) - determines the percentage of original investment value used for Asset Decline Protection calculations. Cannot be more than refund percent.
    uint256 ecosystemBonus; // Adjustable from 1% to 15% (default: 6%) - controls the bonus tokens (distributed at their ratios) added to active assets with each new investment
    uint256 refundPercent; // Adjustable from 55% to 95% (default: 85%) - sets the percentage of original investment recoverable through the USDC refund mechanism (does not affect Asset Decline Protection calculations)
    uint256 refundDelay; // Adjustable from 500 days to 1500 days (default 1000 days) - sets the waiting period after investment before a refund can be requested
    uint256 minClaim; // Adjustable from 1e15 to 1e18 (default 1e18) - sets the minimum amount of Rage to reserve a claim
    uint256 maxClaim; // Adjustable from 100e18 to infinity (default 1000e18) - sets the maximum amount of Rage to reserve a claim
    uint256 claimFee; // Adjustable from 1% to 20% (default: 10%) - determines the fee applied when users claim their RAGE tokens
    uint256 claimDelay; // Adjustable from 10 to 100 days (default: 30 days) - sets the waiting period between creating and executing claims
    uint256 claimValidity; // Adjustable from 1 to 30 days (default: 10 days) - sets the validity period of a claim
    uint256 slippage; // Adjustable from 0 (off) to 2500 (25%), default is 500 or 5%, slippage when swapping on the pool
    uint32 twap; // Adjustable from 1 seconds to 3600 seconds, default is 30 seconds, twap duration for price calculation
  }

  struct RceConfig {
    uint256 stackRage;      // amount of rage to sell in stack underlying (range: 100-10000, default: 100)
    uint256 stackHestia;    // percent of hestia for stack underlying (range: 0-100, default: 80)
    uint256 boostRage;      // amount of rage to sell in pool boost (0=off, range: 100-10000, default: 100)
    uint128 crushDecrease;  // liquidity decrease for rageCrush (0=off, range: 100-10000, default: 0)
    bool crushBuy;          // whether rageCrush buys with collected USDC (default: true)
    uint256 burstRage;      // amount of rage to sell in rage burst (range: 1e18-200e18, default: 10e18)
    uint256 burstLoop;      // number of loops to do in rage burst (range: 1-5, default: 2)
    uint256 slippage;       // slippage for swaps/liquidity (0=off, max: 2500, default: 500)
    address podAddress;     // pod address excluded from active supply (default: address(0))
    address sideAddress1;   // side pool address #1 excluded from active supply (default: address(0))
    address sideAddress2;   // side pool address #2 excluded from active supply (default: address(0))
  }

  struct RbpRecent {
    uint256 lastInvest;                // Option ID of most recent investment
    uint256 lastMintRage;              // Option ID of most recent RAGE mint
    uint256 lastRefund;                // Option ID of most recent refund
    address lastReserveClaim;          // Wallet address of most recent claim reservation
    address lastClaim;                 // Wallet address of most recent claim execution
  }
  
  struct Option {
    uint256 id;                        // Unique option identifier
    uint256 version;                   // Contract version when created
    uint8 status;                      // Option status (1=active, 2=minted, 3=minted with ADP, 4=refunded)
    string transactionType;            // Transaction type ("i"=invest, "e"=ETH invest, "r"=receive)
    address walletCreated;             // Original creator wallet address
    address walletUpdated;             // Wallet that last updated the option
    address referral;                  // Referral address if applicable
    uint256 dateCreated;               // Timestamp when option was created
    uint256 dateUpdated;               // Timestamp of last update
    uint256 dateMintable;              // Timestamp when RAGE minting becomes available
    uint256 dateAdpAble;               // Timestamp when ADP protection activates
    uint256 dateRefundable;            // Timestamp when refund becomes available
    uint256 price;                     // price per rage when option was created
    uint256 fmv;                       // fmv when option was created
    uint256 backingPerShare;           // backing per share at the moment the option was created
    uint256 usdcInvest;                // Original USDC investment amount
    uint256 usdcAdp;                   // USDC value protected by ADP
    uint256 usdcRefund;                // USDC amount refundable
    uint256 pendingHestia;             // HESTIA tokens pending in this option
    uint256 pendingCircle;             // CIRCLE tokens pending in this option
    uint256 rageEstimated;             // Estimated RAGE tokens at creation
    uint256 rageMinted;                // Actual RAGE tokens minted
    uint256 usdcAdpDilution;           // USDC value diluted if ADP was used
    uint256 usdcInvestorBonus;          // USDC value of bonus given to investor
    uint256 hestiaInvestorBonus;       // HESTIA bonus given to investor
    uint256 circleInvestorBonus;       // CIRCLE bonus given to investor
    uint256 usdcEcosystemBonus;          // USDC value of bonus given to ecosystem
    uint256 hestiaEcosystemBonus;       // HESTIA bonus given to ecosystem
    uint256 circleEcosystemBonus;       // CIRCLE bonus given to ecosystem
    uint256 configHestiaPercent;       // HESTIA allocation % at creation
    uint256 configCirclePercent;       // CIRCLE allocation % at creation
    uint256 configInvestorBonus;       // Investor bonus % at creation
    uint256 configMintDelay;           // Mint delay at creation
    uint256 configAdpDelay;            // ADP delay at creation
    uint256 configAdpPercent;          // ADP percentage at creation
    uint256 configRefundPercent;       // Refund percentage at creation
    uint256 configRefundDelay;         // Refund delay at creation
  }
  
  struct Claim {
    address wallet;                    // Wallet address making the claim
    uint256 version;                   // Contract version when created
    uint8 status;                      // Claim status (1=active, 2=claimed)
    uint256 claimedCount;              // Number of times this wallet has claimed
    uint256 dateCreated;               // Timestamp when claim was reserved
    uint256 dateUpdated;               // Timestamp of last update
    uint256 dateClaimableStart;        // Start of claim validity window
    uint256 dateClaimableEnd;          // End of claim validity window
    uint256 rageBurn;                  // RAGE tokens to burn (before fee)
    uint256 rageAfterFee;              // RAGE tokens after fee deduction
    uint256 price;                     // price per rage when claim was created
    uint256 fmv;                       // fmv when claim was created
    uint256 backingPerShare;           // backing per share at the moment the claim was created
    uint256 claimHestia;               // HESTIA tokens claimable
    uint256 claimCircle;               // CIRCLE tokens claimable
    uint256 lastClaimHestia;           // HESTIA claimed in last execution
    uint256 lastClaimCircle;           // CIRCLE claimed in last execution
    uint256 totalClaimHestia;           // All HESTIA claimed by this wallet
    uint256 totalClaimCircle;           // All CIRCLE claimed by this wallet
    uint256 configClaimFee;            // Claim fee % at reservation
    uint256 configClaimDelay;          // Claim delay at reservation
    uint256 configClaimValidity;       // Validity period at reservation
  }
  
  struct OptionsOverview {
    uint256 totalDebt;                // Total USDC owed for potential refunds
    uint256 totalDebtReal;            // Real debt considering current asset values
    uint256 adpDebt;                  // USDC owed for ADP-eligible options
    uint256 adpDebtReal;              // Real ADP debt considering current asset values
    uint256 refundDebt;               // USDC owed for refundable options
    uint256 refundDebtReal;           // Real refund debt considering current asset values
    uint256 mintableRage;             // Total RAGE tokens mintable from active options
    uint256 usdcInvested;             // Total USDC invested across all options
    uint256 usdcBonus;                // Total USDC value of all bonuses
    uint256 hestiaInvestorBonus;      // Total HESTIA given as investor bonus
    uint256 circleInvestorBonus;      // Total CIRCLE given as investor bonus
    uint256 optionActiveCount;        // Count of options with status 1
    uint256 optionMintCount;          // Count of options with status 2
    uint256 optionAdpCount;           // Count of options with status 3
    uint256 optionRefundCount;        // Count of options with status 4
    uint256 totalPendingHestia;       // Sum of all pendingHestia in active options
    uint256 totalPendingCircle;       // Sum of all pendingCircle in active options
    uint256 optionsRefundableWithinThreshold; // Options becoming refundable soon (for liquidation planning)
    uint256 refundDebtRealThreshold;     // Real refund debt in the next 30 days considering current asset values
    uint256 optionsMintableNow;      // Active options that can be minted right now
    uint256 optionsAdpAbleNow;       // Active options eligible for ADP right now
    uint256 optionsRefundableNow;    // Active options that can be refunded right now
    uint256 totalAdpDilution;         // Total USDC diluted through ADP (from status 3 options)
    uint256 totalRefundValue;         // Total USDC refunded (from status 4 options)
    uint256 totalRageMinted;          // Sum of rageMinted from minted options
  }

  struct ClaimsOverview {
    uint256 activeClaimsCount;        // Count of active claims (status 1)
    uint256 claimedCount;             // Count of claimed (status 2)
    uint256 pendingClaimsCount;       // Active claims not yet in claim window
    uint256 claimableNowCount;        // Active claims currently in claim window
    uint256 expiredClaimsCount;       // Active claims past their window
    uint256 pendingHestia;            // Total HESTIA in pending claims
    uint256 pendingCircle;            // Total CIRCLE in pending claims
    uint256 claimableHestia;          // Total HESTIA in claimable-now claims
    uint256 claimableCircle;          // Total CIRCLE in claimable-now claims
    uint256 totalRageToBurn;          // Total RAGE that will be burned from active claims
    uint256 totalClaimedHestia;       // Historical total of HESTIA claimed
    uint256 totalClaimedCircle;       // Historical total of CIRCLE claimed
  }

  struct InvestOverview {
    address wallet;                    // Investor wallet address
    string transactionType;            // Transaction type identifier
    bool canInvest;                    // Whether investment is allowed
    bool isAmountValid;                // Whether amount is within min/max limits
    bool isPercentValid;               // Whether allocation percentages sum to 100%
    bool hasBonus;                     // Whether bonus HESTIA is available
    uint256 rageEstimated;             // Estimated RAGE tokens to receive
    uint256 rageEstimatedValue;        // Estimated USDC value of Rage tokens to receive
    uint256 dateMintable;              // When RAGE minting becomes available
    uint256 dateAdpAble;               // When ADP protection activates
    uint256 dateRefundable;            // When refund becomes available
    uint256 usdcInvest;                // USDC amount to invest
    uint256 usdcAdp;                   // USDC protected by ADP
    uint256 usdcRefund;                // USDC refundable amount
    uint256 usdcInvestorBonus;         // USDC value of investor bonus
    uint256 usdcEcosystemBonus;        // USDC value of ecosystem bonus
    uint256 usdcHestiaBonus;            // USDC value of Hestia investor + ecosystem bonus
    uint256 usdcCircleBonus;            // USDC value of Circle investor + ecosystem bonus
    uint256 hestiaInvestorBonus;       // HESTIA tokens as investor bonus
    uint256 hestiaEcosystemBonus;      // HESTIA tokens as ecosystem bonus
    uint256 circleInvestorBonus;       // CIRCLE tokens as investor bonus
    uint256 circleEcosystemBonus;      // CIRCLE tokens as ecosystem bonus
    uint256 configHestiaPercent;       // Current HESTIA allocation %
    uint256 configCirclePercent;       // Current CIRCLE allocation %
    uint256 configInvestorBonus;       // Current investor bonus %
    uint256 configMintDelay;           // Current mint delay setting
    uint256 configAdpDelay;            // Current ADP delay setting
    uint256 configAdpPercent;          // Current ADP percentage
    uint256 configRefundPercent;       // Current refund percentage
    uint256 configRefundDelay;         // Current refund delay
  }

  struct OptionOverview {
    address wallet;                    // Option owner wallet address
    uint256 optionId;                  // Id of the option nft
    bool canMint;                      // Whether RAGE minting is available
    bool canMintWithAdp;               // Whether ADP minting is available
    bool canRefund;                    // Whether refund is available
    bool hasRefundUsdc;                // Whether contract has USDC for refund
    uint256 rageMint;                  // RAGE tokens that can be minted
    uint256 rageMintValue;             // USDC value of Rage tokens to be minted
    uint256 usdcAssets;                // Current USDC value of the assets
    uint256 usdcCurrent;               // Current USDC value for minting
    uint256 usdcBalance;               // Contract's USDC balance
    uint256 usdcAdpDilution;           // ADP dilution amount in USDC
    uint256 backingPerShare;           // Current backing per share
    bool mintValueProfitable;          // Whether minting rage is profitable (rageMintValue higher than assets or adp value)
    bool mintBackingProfitable;        // Whether minting rage now has less backing that when option was created
  }
  
  struct ReserveClaimOverview {
    address wallet;                    // Claimer wallet address
    bool canReserve;                   // Whether claim can be reserved
    bool hasActiveClaim;               // Whether wallet has active claim
    bool isFirstClaim;                 // Whether this is wallet's first claim
    uint256 rageBurn;                  // RAGE to burn (before fee)
    uint256 rageBurnValue;             // USDC value of rage to burn (before fee)
    uint256 rageAfterFee;              // RAGE after fee deduction
    uint256 claimHestia;               // HESTIA claimable
    uint256 claimCircle;               // CIRCLE claimable
    uint256 claimValue;                // USDC value of claim assets
    uint256 dateClaimableStart;        // Start of validity window
    uint256 dateClaimableEnd;          // End of validity window
    uint256 configClaimFee;            // Current claim fee %
    uint256 configClaimDelay;          // Current claim delay
    uint256 configClaimValidity;       // Current validity period
  }
  
  struct ClaimOverview {
    address wallet;                    // Claimer wallet address
    bool canClaim;                     // Whether claim can be executed
    bool hasBalance;                   // Whether wallet has RAGE balance
    bool isValid;                      // Whether within validity window
    uint256 rageBurn;                  // RAGE to burn (before fee)
    uint256 rageBurnValue;             // USDC value of rage to burn (before fee)
    uint256 claimHestia;               // HESTIA to receive
    uint256 claimCircle;               // CIRCLE to receive
    uint256 claimValue;                // USDC value of claim assets
    uint256 pHestiaNeeded;             // pHestia needed for debond
    uint256 pCircleNeeded;             // pCircle needed for debond
    uint256 recalcClaimHestia;         // Recalculated HESTIA amount
    uint256 recalcClaimCircle;         // Recalculated CIRCLE amount
    uint256 recalcClaimValue;          // USDC value of recalculated claim assets
    uint256 backingPerShare;           // Current backing per share
  }

  struct RceStateValue {
    uint256 nextBoostTime;
    uint256 nextStackTime;
    uint256 nextCrushTime;
    uint256 nextBurstTime;
    uint256 nextConfigTime;
    uint256 nextYearlyAllowance;
    address poolToken0;
    uint256 nftLocked;
    address rageBuyingProtocol;
    address pendingRbp;
    address ownerProposer;
    address owner1;
    address owner2;
    address automator;
    uint256 amountAllowance;
    uint256 amountTransfer;
    uint256 amountMint;
    uint256 amountRageStack;
    uint256 amountUsdcBoost;
    uint256 amountRageBoost;
    uint256 amountUsdcCrush;
    uint256 lastStackTime;
    uint256 lastStackAmount;
    uint256 lastBoostTime;
    uint256 lastBoostAmount;
    uint256 lastCrushTime;
    uint256 lastCrushAmount;
    uint256 lastBurstTime;
    uint256 lastBurstAmount;
  }

  struct RceState {
    uint256 version;                    // Contract version identifier
    address rageSwapper;               // Address of the Rage Swapper contract for DEX operations
    address multisig;                  // Multisig wallet address for admin operations
    address poolAddress;               // Uniswap V3 pool address for RAGE/USDC
    uint256 nftId;                     // Uniswap V3 NFT position ID
    uint256 nftSupply;                  // RAGE tokens within the NFT of the RAGE/USDC pool
    uint256 activeSupply;               // RAGE tokens that are active and backed by underlying assets
    uint256 rageBalance;               // Current RAGE balance in contract
    uint256 usdcBalance;               // Current USDC balance in contract
    RceConfig config;
    RceStateValue state;
  }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "viaIR": true,
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"supply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RageBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"RageChaosEngineSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"rce","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"SupplyRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FINAL_MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMintableSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMintedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getState","outputs":[{"components":[{"internalType":"uint256","name":"version","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"initial","type":"uint256"},{"internalType":"uint256","name":"mint","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"mintable","type":"uint256"},{"internalType":"uint256","name":"lastRequestSupply","type":"uint256"}],"internalType":"struct RageStructs.RageState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"requestSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setRageChaosEngine","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60e0806040523461049b57602081611594803803809161001f82856104a0565b83398101031261049b5751604051906100396040836104a0565b600d82526c149859d948141c9bdd1bd8dbdb609a1b6020830152604051906100626040836104a0565b60048252635241474560e01b602083015282516001600160401b0381116103c25761008e6000546104c3565b601f8111610449575b506020601f82116001146103e357819293946000926103d8575b50508160011b916000199060031b1c1916176000555b81516001600160401b0381116103c2576100e26001546104c3565b601f811161035d575b50602092601f82116001146102f857928192936000926102ed575b50508160011b916000199060031b1c1916176001555b60126080524660a0526040516000906000549181610139846104c3565b9182825260208201946001811690816000146102d15750600114610285575b610164925003826104a0565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a081526101d860c0826104a0565b51902060c052600680546001600160a01b0319163317905560025481810190811061026f57600255336000526003602052604060002081815401905560405181815260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a360075560405161107690816104fe823960805181610945015260a05181610df4015260c05181610e1b0152f35b634e487b7160e01b600052601160045260246000fd5b50600080805290916000805160206115748339815191525b8183106102b557505090602061016492820101610158565b602091935080600191548385880101520191019091839261029d565b60ff191686525061016492151560051b82016020019050610158565b015190503880610106565b601f198216936001600052806000209160005b868110610345575083600195961061032c575b505050811b0160015561011c565b015160001960f88460031b161c1916905538808061031e565b9192602060018192868501518155019401920161030b565b60016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c810191602084106103b8575b601f0160051c01905b8181106103ac57506100eb565b6000815560010161039f565b9091508190610396565b634e487b7160e01b600052604160045260246000fd5b0151905038806100b1565b601f1982169060008052806000209160005b81811061043157509583600195969710610418575b505050811b016000556100c7565b015160001960f88460031b161c1916905538808061040a565b9192602060018192868b0151815501940192016103f5565b60008052600080516020611574833981519152601f830160051c81019160208410610491575b601f0160051c01905b8181106104855750610097565b60008155600101610478565b909150819061046f565b600080fd5b601f909101601f19168101906001600160401b038211908210176103c257604052565b90600182811c921680156104f3575b60208310146104dd57565b634e487b7160e01b600052602260045260246000fd5b91607f16916104d256fe6080604052600436101561001257600080fd5b60003560e01c806306fdde0314610c10578063095ea7b314610b96578063102c500314610b7857806318160ddd14610b5a5780631865c57d14610a665780631fcdbed314610a3f57806323b872dd14610969578063313ce5671461092b578063332b746e146109105780633644e515146108f557806342966c681461086957806370a082311461082f5780637ecebe00146107f557806381a4a6d8146107d75780638cddbfc11461072957806395d89b4114610649578063a9059cbb146105cf578063b198e1b5146103b6578063c4e41b2214610393578063d505accf14610182578063dd62ed3e146101315763f2113b5a1461010e57600080fd5b3461012c57600036600319011261012c576020600854604051908152f35b600080fd5b3461012c57604036600319011261012c5761014a610d70565b610152610d86565b6001600160a01b039182166000908152600460209081526040808320949093168252928352819020549051908152f35b3461012c5760e036600319011261012c5761019b610d70565b6101a3610d86565b6044356064359260843560ff811680910361012c5742851061034e5760806000916020936101cf610def565b9060018060a01b03169687855260058652604085209889549960018b01905560405190878201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b03169a8b6060840152898784015260a083015260c082015260c0815261024c60e082610d05565b519020604051908682019261190160f01b84526022830152604282015260428152610278606282610d05565b519020906040519182528482015260a435604082015260c435606082015282805260015afa15610342576000516001600160a01b031680151580610339575b15610303577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160209160005260048252604060002085600052825280604060002055604051908152a3005b60405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606490fd5b508281146102b7565b6040513d6000823e3d90fd5b60405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606490fd5b3461012c57600036600319011261012c5760206103ae610fb9565b604051908152f35b3461012c57602036600319011261012c57600654600435906001600160a01b03166103e2338214610f7e565b600a54620151808101809111610541574210610598578115158061058d575b156105575761040e610fb9565b90828202828104841483151715610541576064900491821561050b57610441836b011b4f32342d2bebe680000092610f71565b116104d257816040916104777ffd3d7013fc09061d166a60d8e0481284544d01db34c202ebba67ee1c23f93ebf94600254610f71565b60025580600052600360205282600020828154019055600060008051602061102183398151915260208551858152a36104b281600854610f71565b60085542600a5560018060a01b03600654169382519182526020820152a2005b60405162461bcd60e51b81526020600482015260116024820152701b585e14dd5c1c1b1e515e18d959591959607a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d151bdbd4db585b1b60921b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5914195c98d95b9d60921b6044820152606490fd5b506005821115610401565b60405162461bcd60e51b815260206004820152600f60248201526e6d757374576169743234486f75727360881b6044820152606490fd5b3461012c57604036600319011261012c576105e8610d70565b602435903360005260036020526040600020610605838254610d9c565b905560018060a01b031690816000526003602052604060002081815401905560405190815260008051602061102183398151915260203392a3602060405160018152f35b3461012c57600036600319011261012c576040516001546000908161066d82610c98565b808552916001811690811561070257506001146106a5575b6106a18461069581860382610d05565b60405191829182610d27565b0390f35b600181527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106106e85750909150810160200161069582610685565b9192600181602092548385880101520191019092916106cf565b60ff191660208087019190915292151560051b850190920192506106959150839050610685565b3461012c57602036600319011261012c57610742610d70565b6006549061075a336001600160a01b03841614610f7e565b6001600160a01b03169081156107a1576001600160a01b0319168117600655337f10b35f6837cc3382dde80a8dc8ef211a8786e14e1f8ed5c0b2320d091c92912b600080a3005b60405162461bcd60e51b815260206004820152600e60248201526d696e76616c69644164647265737360901b6044820152606490fd5b3461012c57600036600319011261012c576020600754604051908152f35b3461012c57602036600319011261012c576001600160a01b03610816610d70565b1660005260056020526020604060002054604051908152f35b3461012c57602036600319011261012c576001600160a01b03610850610d70565b1660005260036020526020604060002054604051908152f35b3461012c57602036600319011261012c577f2bbc7f1958700d1a653af8f27f9697416bfe42b495ec5dd5aaae48892297b3d86020600435336000526003825260406000206108b8828254610d9c565b905580600254036002556000604051828152600080516020611021833981519152843392a36108e981600954610f71565b600955604051908152a1005b3461012c57600036600319011261012c5760206103ae610def565b3461012c57600036600319011261012c5760206103ae610da9565b3461012c57600036600319011261012c57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461012c57606036600319011261012c57610982610d70565b61098a610d86565b6001600160a01b0390911660008181526004602090815260408083203384528252909120546044359360008051602061102183398151915292918560018201610a19575b5050836000526003825260406000206109e8868254610d9c565b90556001600160a01b03166000818152600383526040908190208054870190555194855293a3602060405160018152f35b610a2291610d9c565b6000858152600484526040808220338352855290205585856109ce565b3461012c57600036600319011261012c5760206040516b011b4f32342d2bebe68000008152f35b3461012c57600036600319011261012c57600060e0604051610a8781610cd2565b8281528260208201528260408201528260608201528260808201528260a08201528260c0820152015261010060018060a01b0360065416610ac6610fb9565b60075460085460095490610ad8610da9565b92600a549460e0604051610aeb81610cd2565b600181526020810198895260408101928352606081019384526080810194855260a0810195865260c0810196875201958652604051966001885260018060a01b0390511660208801525160408701525160608601525160808501525160a08401525160c08301525160e0820152f35b3461012c57600036600319011261012c576020600254604051908152f35b3461012c57600036600319011261012c576020600954604051908152f35b3461012c57604036600319011261012c57610baf610d70565b3360008181526004602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b3461012c57600036600319011261012c576040516000805481610c3282610c98565b80855291600181169081156107025750600114610c59576106a18461069581860382610d05565b80805260208120939250905b808210610c7e5750909150810160200161069582610685565b919260018160209254838588010152019101909291610c65565b90600182811c92168015610cc8575b6020831014610cb257565b634e487b7160e01b600052602260045260246000fd5b91607f1691610ca7565b610100810190811067ffffffffffffffff821117610cef57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610cef57604052565b91909160208152825180602083015260005b818110610d5a575060409293506000838284010152601f8019910116010190565b8060208092870101516040828601015201610d39565b600435906001600160a01b038216820361012c57565b602435906001600160a01b038216820361012c57565b9190820391821161054157565b610db1610fb9565b6b011b4f32342d2bebe6800000811015610de9576b011b4f32342d2bebe6800000036b011b4f32342d2bebe680000081116105415790565b50600090565b6000467f000000000000000000000000000000000000000000000000000000000000000003610e3d57507f000000000000000000000000000000000000000000000000000000000000000090565b6040518181815493610e4e85610c98565b928383526020830195600181169081600014610f525750600114610ef4575b50610e7a92500382610d05565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610eee60c082610d05565b51902090565b808093949250527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818310610f36575050906020610e7a9282010138610e6d565b6020919350806001915483858801015201910190918392610f1d565b60ff1916875250610e7a93151560051b83016020019150389050610e6d565b9190820180921161054157565b15610f8557565b60405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b60036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff5461dead6000527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c5460025461101d9261101891610d9c565b610d9c565b9056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f1f0570eb5169b56667753c4809be103b77aa4da23ebbe21b722a5c69df35fe164736f6c634300081a0033290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563000000000000000000000000000000000000000000000740b23b7fb908e80000

Deployed Bytecode

0x6080604052600436101561001257600080fd5b60003560e01c806306fdde0314610c10578063095ea7b314610b96578063102c500314610b7857806318160ddd14610b5a5780631865c57d14610a665780631fcdbed314610a3f57806323b872dd14610969578063313ce5671461092b578063332b746e146109105780633644e515146108f557806342966c681461086957806370a082311461082f5780637ecebe00146107f557806381a4a6d8146107d75780638cddbfc11461072957806395d89b4114610649578063a9059cbb146105cf578063b198e1b5146103b6578063c4e41b2214610393578063d505accf14610182578063dd62ed3e146101315763f2113b5a1461010e57600080fd5b3461012c57600036600319011261012c576020600854604051908152f35b600080fd5b3461012c57604036600319011261012c5761014a610d70565b610152610d86565b6001600160a01b039182166000908152600460209081526040808320949093168252928352819020549051908152f35b3461012c5760e036600319011261012c5761019b610d70565b6101a3610d86565b6044356064359260843560ff811680910361012c5742851061034e5760806000916020936101cf610def565b9060018060a01b03169687855260058652604085209889549960018b01905560405190878201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b03169a8b6060840152898784015260a083015260c082015260c0815261024c60e082610d05565b519020604051908682019261190160f01b84526022830152604282015260428152610278606282610d05565b519020906040519182528482015260a435604082015260c435606082015282805260015afa15610342576000516001600160a01b031680151580610339575b15610303577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160209160005260048252604060002085600052825280604060002055604051908152a3005b60405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606490fd5b508281146102b7565b6040513d6000823e3d90fd5b60405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606490fd5b3461012c57600036600319011261012c5760206103ae610fb9565b604051908152f35b3461012c57602036600319011261012c57600654600435906001600160a01b03166103e2338214610f7e565b600a54620151808101809111610541574210610598578115158061058d575b156105575761040e610fb9565b90828202828104841483151715610541576064900491821561050b57610441836b011b4f32342d2bebe680000092610f71565b116104d257816040916104777ffd3d7013fc09061d166a60d8e0481284544d01db34c202ebba67ee1c23f93ebf94600254610f71565b60025580600052600360205282600020828154019055600060008051602061102183398151915260208551858152a36104b281600854610f71565b60085542600a5560018060a01b03600654169382519182526020820152a2005b60405162461bcd60e51b81526020600482015260116024820152701b585e14dd5c1c1b1e515e18d959591959607a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d151bdbd4db585b1b60921b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5914195c98d95b9d60921b6044820152606490fd5b506005821115610401565b60405162461bcd60e51b815260206004820152600f60248201526e6d757374576169743234486f75727360881b6044820152606490fd5b3461012c57604036600319011261012c576105e8610d70565b602435903360005260036020526040600020610605838254610d9c565b905560018060a01b031690816000526003602052604060002081815401905560405190815260008051602061102183398151915260203392a3602060405160018152f35b3461012c57600036600319011261012c576040516001546000908161066d82610c98565b808552916001811690811561070257506001146106a5575b6106a18461069581860382610d05565b60405191829182610d27565b0390f35b600181527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106106e85750909150810160200161069582610685565b9192600181602092548385880101520191019092916106cf565b60ff191660208087019190915292151560051b850190920192506106959150839050610685565b3461012c57602036600319011261012c57610742610d70565b6006549061075a336001600160a01b03841614610f7e565b6001600160a01b03169081156107a1576001600160a01b0319168117600655337f10b35f6837cc3382dde80a8dc8ef211a8786e14e1f8ed5c0b2320d091c92912b600080a3005b60405162461bcd60e51b815260206004820152600e60248201526d696e76616c69644164647265737360901b6044820152606490fd5b3461012c57600036600319011261012c576020600754604051908152f35b3461012c57602036600319011261012c576001600160a01b03610816610d70565b1660005260056020526020604060002054604051908152f35b3461012c57602036600319011261012c576001600160a01b03610850610d70565b1660005260036020526020604060002054604051908152f35b3461012c57602036600319011261012c577f2bbc7f1958700d1a653af8f27f9697416bfe42b495ec5dd5aaae48892297b3d86020600435336000526003825260406000206108b8828254610d9c565b905580600254036002556000604051828152600080516020611021833981519152843392a36108e981600954610f71565b600955604051908152a1005b3461012c57600036600319011261012c5760206103ae610def565b3461012c57600036600319011261012c5760206103ae610da9565b3461012c57600036600319011261012c57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000012168152f35b3461012c57606036600319011261012c57610982610d70565b61098a610d86565b6001600160a01b0390911660008181526004602090815260408083203384528252909120546044359360008051602061102183398151915292918560018201610a19575b5050836000526003825260406000206109e8868254610d9c565b90556001600160a01b03166000818152600383526040908190208054870190555194855293a3602060405160018152f35b610a2291610d9c565b6000858152600484526040808220338352855290205585856109ce565b3461012c57600036600319011261012c5760206040516b011b4f32342d2bebe68000008152f35b3461012c57600036600319011261012c57600060e0604051610a8781610cd2565b8281528260208201528260408201528260608201528260808201528260a08201528260c0820152015261010060018060a01b0360065416610ac6610fb9565b60075460085460095490610ad8610da9565b92600a549460e0604051610aeb81610cd2565b600181526020810198895260408101928352606081019384526080810194855260a0810195865260c0810196875201958652604051966001885260018060a01b0390511660208801525160408701525160608601525160808501525160a08401525160c08301525160e0820152f35b3461012c57600036600319011261012c576020600254604051908152f35b3461012c57600036600319011261012c576020600954604051908152f35b3461012c57604036600319011261012c57610baf610d70565b3360008181526004602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b3461012c57600036600319011261012c576040516000805481610c3282610c98565b80855291600181169081156107025750600114610c59576106a18461069581860382610d05565b80805260208120939250905b808210610c7e5750909150810160200161069582610685565b919260018160209254838588010152019101909291610c65565b90600182811c92168015610cc8575b6020831014610cb257565b634e487b7160e01b600052602260045260246000fd5b91607f1691610ca7565b610100810190811067ffffffffffffffff821117610cef57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610cef57604052565b91909160208152825180602083015260005b818110610d5a575060409293506000838284010152601f8019910116010190565b8060208092870101516040828601015201610d39565b600435906001600160a01b038216820361012c57565b602435906001600160a01b038216820361012c57565b9190820391821161054157565b610db1610fb9565b6b011b4f32342d2bebe6800000811015610de9576b011b4f32342d2bebe6800000036b011b4f32342d2bebe680000081116105415790565b50600090565b6000467f000000000000000000000000000000000000000000000000000000000000210503610e3d57507fd3effdd75209a66881d02d370e8246f86147a38da120c974d6b9627f9137689990565b6040518181815493610e4e85610c98565b928383526020830195600181169081600014610f525750600114610ef4575b50610e7a92500382610d05565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610eee60c082610d05565b51902090565b808093949250527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818310610f36575050906020610e7a9282010138610e6d565b6020919350806001915483858801015201910190918392610f1d565b60ff1916875250610e7a93151560051b83016020019150389050610e6d565b9190820180921161054157565b15610f8557565b60405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b60036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff5461dead6000527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c5460025461101d9261101891610d9c565b610d9c565b9056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f1f0570eb5169b56667753c4809be103b77aa4da23ebbe21b722a5c69df35fe164736f6c634300081a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000740b23b7fb908e80000

-----Decoded View---------------
Arg [0] : supply (uint256): 34250000000000000000000

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000740b23b7fb908e80000


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Self-growing treasury powered by $HESTIA + $ULTRAROUND. Rage and the Rage Buying Protocol reimagines MicroStrategy through smart contract automation on-chain.

Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.