For the complete documentation index, see llms.txt. This page is also available as Markdown.

Technical Reference

Technical reference documentation regarding the Radiant Capital DAO sunset announcement.

Radiant V2 User Sunset Reference

This document captures what a user or stakeholder needs to know going forward.

1. What stops, what stays

What stops

  • Lending pool — borrow parameter is set to 1, which effectively disables it operationally.

  • RDNT no longer flows into the ChefIncentivesController. With nothing to distribute, claim() and claimAll() continue to function but return zero. No on-chain transaction is required to disable emissions — the absence of RDNT in CIC is sufficient. stopEmissionsFor and similar levers are not needed.

What stays operational

  • Lending pool — deposit, withdraw, repay, and liquidations all function normally.

  • Reserve factor accrual — protocol fees continue accruing to reserves and are forwarded to MFD via MiddleFeeDistribution on user interactions.

  • RadiantOFT cross-chain transfers — bridging continues.

  • MultiFeeDistribution — reward streams already in the contract continue draining over rewardsDuration. Existing vesting positions continue to vest over vestDuration. Existing dLP locks continue to release on schedule.

  • Compounder, BountyManager, EligibilityDataProvider — remain callable. Without new RDNT emissions, relock bounties yield nothing and eligibility gating becomes a no-op for reward purposes.

  • Leverager, LockZap, StargateBorrow — remain callable.

  • Oracles — Chainlink adapters continue to read live feeds. AaveOracle.setAssetSources is an owner-gated lever if a feed is ever delisted.

Tail liabilities (drain naturally)

  • RDNT already deposited into MFD's reward stream — drains over rewardsDuration.

  • Outstanding vesting RDNT per locker — drains over vestDuration.

  • Bounty contract balances — remain claimable while BountyManager is active.

Quantities are dynamic; query on-chain when needed.

2. User exits

  • Lending pool — LendingPool.withdraw(asset, amount, to), or redeem aTokens.

  • MFD locks — withdrawExpiredLocksFor(user) releases any locks past their unlock date with no penalty. exit(claimRewards) claims everything immediately, applying the early-exit penalty burn on locks not yet expired.

  • MFD vesting — vested RDNT becomes claimable through MFD as vestDuration elapses per position.

  • dLP — exit the underlying LP directly via Balancer (mainnet / arbitrum), Uniswap (bsc), or Velodrome / UniV3 (base).

  • RDNT cross-chain — RadiantOFT.sendFrom(...) continues to move RDNT between deployed chains.

3. Instructions for exiting positions via contracts

Your Funds Remain Safe

Radiant's smart contracts continue to operate on-chain even if the Radiant website is unavailable.

Your deposits, collateral, rewards, and borrowing positions remain under your control and can always be managed directly through the blockchain.

If the Radiant app is offline, you can get an overview of your assets via debank.com.

This guide explains how to access and close your positions using trusted block explorers such as Etherscan, Arbiscan, BscScan, and BaseScan.

Important: You do not need coding experience to complete these actions.


Before you begin

You will need:

✅ The wallet that owns the position

✅ A small amount of gas tokens (ETH or BNB)

✅ The address of the token you will be transacting (they are different for each blockchain)

✅ The appropriate Radiant contract (or use links provided)

Official contract addresses

For reference, all verified Radiant contract addresses are maintained here, under the CONTRACTS & SECURITY section. However, contract links are provided in the ▶️ how-to sections for your convenience.

Caution: Always verify an address on the explorer's Read Contract tab (e.g. owner(), name()) before signing any transaction.

Based on your position type, follow these ▶️ how-to sections below.

▶️ Core markets

✅ Repaying loans and withdrawing deposits

  1. Open the LendingPool contract on Ethereum, Arbitrum, BNB Chain, or Base. Note: If you open the block explorer and enter the contract address yourself, you’ll also need to select “Contract” and “Write as Proxy” (or “Write Contract” in some cases).

  2. Connect Wallet

  3. Expand the repay function and enter required info

  • asset: Token address you’re repaying

  • amount: Use the appropriate number of decimals (examples below)

  • 1 USDC (6) = 1000000

  • 1 ETH (18) = 1000000000000000000

  • For the entire/max balance, enter this as the amount, verbatim: 115792089237316195423570985008687907853269984665640564039457584007913129639935

  • rateMode: 2

  • onBehalfOf: Your wallet address

  1. Expand the withdraw function and enter asset, amount, your wallet address to return your collateral/deposit back to your wallet.

✅ Withdrawing unlocked dLP (no penalty)

  1. Open the MultiFeeDistribution contract on Ethereum, Arbitrum, BNB Chain, or Base.

  2. Connect Wallet.

  3. Expand the withdrawExpiredLocksForWithOptions function and enter your wallet address (ignore the other options).

✅ Withdraw RDNT

RDNT rewards vest over 90 days inside the MultiFeeDistribution contract on Ethereum, Arbitrum, BNB Chain, or Base. Select from 3 scenarios:

  • No penalty: Enter amount* in the withdraw function for vested RDNT. You can check the eligible amount* by querying against your wallet address in the withdrawableBalance function on the contract’s Read as Proxy tab (ensure wallet is connected).

  • Exiting each position early (50 % penalty): In the individualEarlyExit function, fill out claimRewards (set to True to also pull platform revenue/rewards) and unlockTime*. You can check each position’s unlockTime* from the earnedBalances function on the contract’s Read as Proxy tab (ensure wallet is connected).

  • Exit everything (50 % penalty on un-vested): Enter true for claimRewards in the exit function to claim all dLP locking rewards and RDNT (100% for fully vested; 50% for unvested)

✅ Claiming dLP locking rewards/platform revenue

  1. Open the MultiFeeDistribution contract on Ethereum, Arbitrum, BNB Chain, or Base.

  2. Connect Wallet

  3. Expand the getAllRewards function and select Write

▶️ RIZ v1 (isolated AAVE-style pools)

Every RIZ v1 market has its own RizLendingPool contract. The interface is identical to Core Markets - the only thing that changes is the pool address.

✅ Repaying loans and withdrawing deposits

  1. Open the appropriate RizLendingPool contract from the table below. Note: If you open the block explorer and enter the contract address yourself, you’ll also need to select “Contract” and “Write as Proxy” (or “Write Contract” in some cases).

  1. Connect Wallet

  2. Expand the repay function and enter required info

  • asset: Token address you’re repaying

  • amount: Use the appropriate number of decimals (examples below)

    • 1 USDC (6) = 1000000

    • 1 ETH (18) = 1000000000000000000

    • For the entire/max balance, enter this as the amount, verbatim: 115792089237316195423570985008687907853269984665640564039457584007913129639935

  • rateMode: 2

  • onBehalfOf: Your wallet address

  1. Expand the withdraw function and enter asset, amount, your wallet address to return your collateral/deposit back to your wallet.

▶️ RIZ v2 (single Mmlti-market contract, Morpho-style)

RIZ v2 uses one RadiantLendingMarket contract per chain. Every market lives inside it, identified by a MarketParams tuple.

✅ Repaying loans and withdrawing deposits

  1. Open the RadiantLendingMarket contract on Ethereum, Arbitrum, BNB Chain, or Base. Note: These contract links will take you to the Event tab, where you can go to step 3 below to read your position.

  2. Connect your wallet

  3. Read your position

You need three (3) numbers (supplyShares, borrowShares, collateral) before you can exit cleanly.

  1. Switch back to Write Contract tab.

    1. repay: marketParams = tuple

      1. assets = 0

      2. shares = your borrowShares

      3. onBehalf = your wallet address

      4. data = 0x. (Using shares clears your debt to the last wei; using assets leaves dust.)

    2. withdrawCollateral: marketParams = tuple

      1. assets = your collateral

      2. onBehalf = your wallet address

      3. receiver = your wallet address

    3. If you also lent into the market, withdraw: marketParams = tuple

      1. assets = 0

      2. shares = your supplyShares

      3. onBehalf = your wallet address

      4. receiver = your wallet address. (Reverts with INSUFFICIENT_LIQUIDITY if the market is fully utilized - wait for borrowers to repay or withdraw a smaller amount.)

Need help?
  • Reverts on repay? Check (a) the asset is the correct underlying, (b) you used 2 for rateMode (V2 Core / RIZ v1), (c) you approved enough of the underlying token first.

  • RIZ v2 reverts with MARKET_NOT_CREATED? A single typo in the MarketParams tuple changes the id and points to a non-existent market - verify all six fields.

  • RIZ v1 / V2 vault redeem reverts? Vault may be in emergency shutdown - call emergencyWithdraw instead.

Every action above is permissionless and yours to execute. The Radiant smart contracts are immutable infrastructure - even with the front-end down, your funds are always recoverable directly on-chain.

Last updated