🧠Smart Contracts

Detailed view of smart contracts.

Protocol-wide contracts

These contracts are deployed only once per chain.

  • ARBERA — ERC20 token.

  • ProtocolFees — Stores two fee values.

    • yieldAdminARBERA and rewards fee % for Future LP Yield.

    • yieldProtocolbrTOKEN fee % for the protocol.

  • ProtocolFeeRouter — Stores mutable address of ProtocolFees.

  • IndexManager — Stores all Den addresses and boolean if they are verified or not.

  • RewardsWhitelister — Stores list of whitelisted reward tokens.

  • KodiakDexAdapter — Helper contract for adding liqudity and swapping on Kodiak.

  • V3TwapUtilities — Helper functions to compute Uniswap V3 X96 price, it's square root and derive V3 pool address deterministically.

These three contracts are deployed once for each Den created.

  • WeightedIndex — Main Den contract (inherits from DecentralizedIndex).

  • StakingPoolToken — Allows staking Den LP tokens.

  • TokenRewards — Accumulates and distributes rewards for staked Den LP tokens.

Variables

  • address PAIRED_LP_TOKEN — paired Den LP token, eg. HONEY;

  • Config config — Configuration:

    • address partner — Address of Den creator.

  • Fees fees — Struct with Den fees:

    • uint16 burn — Burn fee (see ).

    • uint16 bond — Fee on wrapping TOKEN into brTOKEN.

    • uint16 debond — Fee on unwrapping brTOKEN into TOKEN.

    • uint16 buy — Fee on buying brTOKEN with TOKEN.​

    • uint16 sell — Fee on selling brTOKEN for TOKEN.

    • uint16 partner — Den creator fee.

    • For all the fees: 1000 = 10%, 100 = 1%, etc.

  • uint256 created — Timestamp of Den creation.

  • address lpRewardsToken — Address of LP rewards token.

  • address lpStakingPool — Address of Staked Den LP token.

Functions

/**
 * Wraps TOKEN into brTOKEN at current ratio (always >= 1) minus fees.
 * @param _token TOKEN address to wrap into brTOKEN.
 * @param _amount Amount of TOKEN to wrap.
 * @param _amountMintMin Minimal brTOKEN amount to receive.
 */
function bond(address _token, uint256 _amount, uint256 _amountMintMin)

/**
 * Unwraps brTOKEN into TOKEN at current ratio (always >= 1) minus fees.
 * @dev Set unnamed params as empty arrays.
 * @param _token Amount of brTOKEN to unwrap into TOKEN.
 */
function debond(uint256 _amount, address[] memory, uint8[] memory)

/**
 * Adds liquidity to the Den LP while disabling fees.
 * @param idxTokens Amount of brTOKEN.
 * @param daiTokens Amount of PAIRED_LP_TOKEN.
 * @param slippage Amount of slippage (10 == 1%).
 * @param deadline Max timestamp to execute the tx.
 */
function addLiquidityV2(uint256 idxTokens, uint256 daiTokens, uint256 slippage, uint256 deadline) returns (uint256);

/**
 * Removes liquidity from the Den LP while disabling fees.
 * @param _lpTokens Amount of Den LP tokens.
 * @param _minTokens Minimal amount of brTOKEN to receive.
 * @param _minDAI Minimal amount of PAIRED_LP_TOKEN to receive.
 * @param _deadline Max timestamp to execute the tx.
 */
function removeLiquidityV2(uint256 _lpTokens, uint256 _minTokens, uint256 _minDAI, uint256 _deadline)

/**
 * Take flashloan of TOKEN backing the brTOKEN, paying 10 HONEY fee.
 * @dev HONEY needs to be approved for spending by Den contract.
 * @param _recipient Address of flashloan receipient.
 * @param _token Address of the TOKEN to flashloan.
 * @param _amount Amount of the TOKEN to flashloan.
 * @param _data Data to send to the receipient in the callback.
 */
function flash(address _recipient, address _token, uint256 _amount, bytes calldata _data)

Last updated