Gains Network
  • 📚Home
  • Gains Network
    • 🔎Overview
    • 🍏GNS Token
    • 📔Contract Addresses
      • Apechain Mainnet
      • Arbitrum Mainnet
      • Base Mainnet
      • Polygon Mainnet
  • gTrade (Leveraged Trading)
    • 🔎Overview
    • 🎛️Setting up to trade
      • 🟣Polygon Network Setup
      • 🔵Arbitrum Network Setup
    • 🏦Opening / Closing trades
    • 💲Trade Collaterals
      • Spotlight: WETH
    • 📖Asset classes
      • 🪙Cryptocurrencies
      • 💵Forex
      • 🛢️Commodities
    • 🎫Fees & Spread
    • 📰Pair List
    • 🧒How to use Practice Mode
    • ⚡One-Click Trading (1CT)
    • 🌌gTrade Solana
    • 📺Video tutorials
  • Loyalty Programs
    • Prime Trader
    • gTrade Credits
  • Community
    • gTrade Guardians
    • Governance forum
  • Reward Pools
    • 💚GNS Staking
    • 👛gToken Vaults
      • 👷Staker Functions
      • ❔Staker FAQ
      • ⏳Upgrades, updates, and timelocks
    • 🔼Active Pools & Incentives
  • Help
    • ❓FAQ
    • ⏳Chain congestion
  • Bridges
    • 🪐Arbitrum <-> Polygon Bridge
    • 🪐ERC20 Bridge (Polygon)
    • 🪐NFT Bridge (Polygon)
  • Developer
    • Integrators
      • Trading Contracts
      • Backend
      • Price Feed
      • Guides
        • v9 migration
        • Calculating borrowing fees
        • Calculating liquidation price
    • Technical Reference
      • Contracts
        • Changelogs
          • v9.2.1 Update
          • v9.1 Update
          • v9.1.1 Update
          • v9 Update
        • Core
          • Abstract
            • GNSAddressStore
            • GNSDiamondCut
            • GNSDiamondLoupe
            • GNSDiamondStorage
          • Facets
            • GNSBorrowingFees
            • GNSOtc
            • GNSPriceAggregator
            • GNSTradingInteractions
            • GNSTriggerRewards
            • GNSFeeTiers
            • GNSPairsStorage
            • GNSPriceImpact
            • GNSReferrals
            • GNSTradingCallbacks
            • GNSTradingStorage
          • GNSMultiCollatDiamond
          • GNSStaking
          • GToken
          • GTokenOpenPnlFeed
        • Interfaces
          • Libraries
            • IBorrowingFeesUtils
            • IOtcUtils
            • IPriceAggregatorUtils
            • ITriggerRewardsUtils
            • IFeeTiersUtils
            • IPairsStorageUtils
            • IPriceImpactUtils
            • IReferralsUtils
            • ITradingCallbacksUtils
            • ITradingCommonUtils
            • ITradingInteractionsUtils
            • ITradingStorageUtils
            • IUpdateLeverageUtils
            • IUpdatePositionSizeUtils
          • Types
            • IAddressStore
            • IBorrowingFees
            • IDiamondStorage
            • IOtc
            • IPriceAggregator
            • ITradingStorage
            • ITradingInteractions
            • ITriggerRewards
            • ITypes
            • IUpdateLeverage
            • IPairsStorage
            • IFeeTiers
            • IPriceImpact
            • IReferrals
            • ITradingCallbacks
            • IUpdatePositionSize
          • IChainlinkFeed
          • IArbSys
          • IChainlinkOracle
          • IERC20
          • IERC721
          • IERC721Design
          • IGeneralErrors
          • IGNSAddressStore
          • IGNSDiamond
          • IGNSDiamondCut
          • IGNSMultiCollatDiamond
          • IGNSDiamondLoupe
          • IGNSStaking
          • IGToken
          • IGTokenLockedDepositNft
          • IGTokenOpenPnlFeed
          • IGTokenLockedDepositNftDesign
          • ILiquidityPool
          • IRateProvider
          • IOwnable
        • Libraries
          • updateLeverage
            • UpdateLeverageLifecycles
          • updatePositionSize
            • IncreasePositionSizeUtils
            • DecreasePositionSizeUtils
            • UpdatePositionSizeLifecycles
          • AddressStoreUtils
          • ChainlinkClientUtils
          • ChainUtils
          • ConstantsUtils
          • CollateralUtils
          • DiamondUtils
          • LiquidityPoolUtils
          • OtcUtils
          • PackingUtils
          • StorageUtils
          • TriggerRewardsUtils
          • ArrayGetters
          • BorrowingFeesUtils
          • FeeTiersUtils
          • PriceAggregatorUtils
          • PriceImpactUtils
          • ReferralsUtils
          • TradingCallbacksUtils
          • PairsStorageUtils
          • TradingCommonUtils
          • TradingStorageUtils
          • TradingInteractionsUtils
        • Misc
          • EpochBasedTokenClaim
          • GNSCompensationHandler
          • GTokenRateProvider
          • GTokenLockedDepositNftDesign
          • ManagerTimelock
          • OwnerTimelock
          • VotingDelegator
        • Tokens
          • GainsNetworkToken
          • GTokenLockedDepositNft
      • Backend
        • Backend Types
      • SDK
        • Client Types
  • Archived
    • 🖼️gFARM2 NFTs
Powered by GitBook
On this page
  • constructor
  • initializeFeeTiers
  • Parameters
  • setGroupVolumeMultipliers
  • Parameters
  • setFeeTiers
  • Parameters
  • setTradersFeeTiersEnrollment
  • Parameters
  • addTradersUnclaimedPoints
  • Parameters
  • updateTraderPoints
  • Parameters
  • calculateFeeAmount
  • Parameters
  • getFeeTiersCount
  • getFeeTier
  • Parameters
  • getGroupVolumeMultiplier
  • Parameters
  • getFeeTiersTraderInfo
  • Parameters
  • getFeeTiersTraderDailyInfo
  • Parameters
  • getTraderFeeTiersEnrollment
  • Parameters
  • getTraderUnclaimedPoints
  • Parameters

Was this helpful?

  1. Developer
  2. Technical Reference
  3. Contracts
  4. Core
  5. Facets

GNSFeeTiers

Facet #3: Fee tiers

constructor

constructor() public

initializeFeeTiers

function initializeFeeTiers(uint256[] _groupIndices, uint256[] _groupVolumeMultipliers, uint256[] _feeTiersIndices, struct IFeeTiers.FeeTier[] _feeTiers) external

Parameters

Name
Type
Description

_groupIndices

uint256[]

group indices (pairs storage fee index) to initialize

_groupVolumeMultipliers

uint256[]

corresponding group volume multipliers (1e3)

_feeTiersIndices

uint256[]

fee tiers indices to initialize

_feeTiers

fee tiers values to initialize (feeMultiplier, pointsThreshold)

setGroupVolumeMultipliers

function setGroupVolumeMultipliers(uint256[] _groupIndices, uint256[] _groupVolumeMultipliers) external

Updates groups volume multipliers

Parameters

Name
Type
Description

_groupIndices

uint256[]

indices of groups to update

_groupVolumeMultipliers

uint256[]

corresponding new volume multipliers (1e3)

setFeeTiers

function setFeeTiers(uint256[] _feeTiersIndices, struct IFeeTiers.FeeTier[] _feeTiers) external

Updates fee tiers

Parameters

Name
Type
Description

_feeTiersIndices

uint256[]

indices of fee tiers to update

_feeTiers

new fee tiers values (feeMultiplier, pointsThreshold)

setTradersFeeTiersEnrollment

function setTradersFeeTiersEnrollment(address[] _traders, struct IFeeTiers.TraderEnrollment[] _values) external

Updates traders enrollment status in fee tiers

Parameters

Name
Type
Description

_traders

address[]

group of traders

_values

corresponding enrollment values

addTradersUnclaimedPoints

function addTradersUnclaimedPoints(address[] _traders, enum IFeeTiers.CreditType[] _creditTypes, uint224[] _points) external

Credits points to traders

Parameters

Name
Type
Description

_traders

address[]

traders addresses

_creditTypes

enum IFeeTiers.CreditType[]

types of credit (IMMEDIATE, CLAIMABLE)

_points

uint224[]

points to credit (1e18)

updateTraderPoints

function updateTraderPoints(address _trader, uint256 _volumeUsd, uint256 _pairIndex) external virtual

Increases daily points from a new trade, re-calculate trailing points, and cache daily fee tier for a trader.

Parameters

Name
Type
Description

_trader

address

trader address

_volumeUsd

uint256

trading volume in USD (1e18)

_pairIndex

uint256

pair index

calculateFeeAmount

function calculateFeeAmount(address _trader, uint256 _normalFeeAmountCollateral) external view returns (uint256)

Returns fee amount after applying the trader's active fee tier multiplier

Parameters

Name
Type
Description

_trader

address

address of trader

_normalFeeAmountCollateral

uint256

base fee amount (collateral precision)

getFeeTiersCount

function getFeeTiersCount() external view returns (uint256)

Returns the current number of active fee tiers

getFeeTier

function getFeeTier(uint256 _feeTierIndex) external view returns (struct IFeeTiers.FeeTier)

Returns a fee tier's details (feeMultiplier, pointsThreshold)

Parameters

Name
Type
Description

_feeTierIndex

uint256

fee tier index

getGroupVolumeMultiplier

function getGroupVolumeMultiplier(uint256 _groupIndex) external view returns (uint256)

Returns a group's volume multiplier

Parameters

Name
Type
Description

_groupIndex

uint256

group index (pairs storage fee index)

getFeeTiersTraderInfo

function getFeeTiersTraderInfo(address _trader) external view returns (struct IFeeTiers.TraderInfo)

Returns a trader's info (lastDayUpdated, trailingPoints)

Parameters

Name
Type
Description

_trader

address

trader address

getFeeTiersTraderDailyInfo

function getFeeTiersTraderDailyInfo(address _trader, uint32 _day) external view returns (struct IFeeTiers.TraderDailyInfo)

Returns a trader's daily fee tier info (feeMultiplierCache, points)

Parameters

Name
Type
Description

_trader

address

trader address

_day

uint32

day

getTraderFeeTiersEnrollment

function getTraderFeeTiersEnrollment(address _trader) external view returns (struct IFeeTiers.TraderEnrollment)

Returns a trader's fee tiers enrollment status

Parameters

Name
Type
Description

_trader

address

trader address

getTraderUnclaimedPoints

function getTraderUnclaimedPoints(address _trader) external view returns (uint224)

Returns a trader's unclaimed points, credited by Governance

Parameters

Name
Type
Description

_trader

address

trader address

PreviousGNSTriggerRewardsNextGNSPairsStorage

Last updated 7 months ago

Was this helpful?

IFeeTiers.FeeTier[]
IFeeTiers.FeeTier[]
IFeeTiers.TraderEnrollment[]