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
  • initializeTradingStorage
  • Parameters
  • updateTradingActivated
  • Parameters
  • addCollateral
  • Parameters
  • toggleCollateralActiveState
  • Parameters
  • updateGToken
  • Parameters
  • storeTrade
  • Parameters
  • updateTradeMaxClosingSlippageP
  • Parameters
  • updateTradeCollateralAmount
  • Parameters
  • updateTradePosition
  • Parameters
  • updateOpenOrderDetails
  • Parameters
  • updateTradeTp
  • Parameters
  • updateTradeSl
  • Parameters
  • closeTrade
  • Parameters
  • storePendingOrder
  • Parameters
  • closePendingOrder
  • Parameters
  • getCollateral
  • Parameters
  • isCollateralActive
  • Parameters
  • isCollateralListed
  • Parameters
  • getCollateralsCount
  • getCollaterals
  • getCollateralIndex
  • Parameters
  • getTradingActivated
  • getTraderStored
  • Parameters
  • getTradersCount
  • getTraders
  • Parameters
  • getTrade
  • Parameters
  • getTrades
  • Parameters
  • getAllTradesForTraders
  • Parameters
  • getAllTrades
  • Parameters
  • getTradeInfo
  • Parameters
  • getTradeInfos
  • Parameters
  • getAllTradeInfosForTraders
  • Parameters
  • getAllTradeInfos
  • Parameters
  • getPendingOrder
  • Parameters
  • getPendingOrders
  • Parameters
  • getAllPendingOrdersForTraders
  • Parameters
  • getAllPendingOrders
  • Parameters
  • getTradePendingOrderBlock
  • Parameters
  • getCounters
  • Parameters
  • getCountersForTraders
  • Parameters
  • getGToken
  • Parameters
  • getTradeLiquidationParams
  • Parameters
  • getTradesLiquidationParams
  • Parameters
  • getAllTradesLiquidationParamsForTraders
  • Parameters
  • getAllTradesLiquidationParams
  • Parameters
  • getCurrentContractsVersion

Was this helpful?

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

GNSTradingStorage

Facet #5: Trading storage

constructor

constructor() public

initializeTradingStorage

function initializeTradingStorage(address _gns, address _gnsStaking, address[] _collaterals, address[] _gTokens) external

Initializes the trading storage facet

Parameters

Name
Type
Description

_gns

address

address of the gns token

_gnsStaking

address

address of the gns staking contract

_collaterals

address[]

_gTokens

address[]

updateTradingActivated

function updateTradingActivated(enum ITradingStorage.TradingActivated _activated) external

Updates the trading activated state

Parameters

Name
Type
Description

_activated

enum ITradingStorage.TradingActivated

the new trading activated state

addCollateral

function addCollateral(address _collateral, address _gToken) external

Adds a new supported collateral

Parameters

Name
Type
Description

_collateral

address

the address of the collateral

_gToken

address

the gToken contract of the collateral

toggleCollateralActiveState

function toggleCollateralActiveState(uint8 _collateralIndex) external

Toggles the active state of a supported collateral

Parameters

Name
Type
Description

_collateralIndex

uint8

index of the collateral

updateGToken

function updateGToken(address _collateral, address _gToken) external

Updates the contracts of a supported collateral trading stack

Parameters

Name
Type
Description

_collateral

address

address of the collateral

_gToken

address

the gToken contract of the collateral

storeTrade

function storeTrade(struct ITradingStorage.Trade _trade, struct ITradingStorage.TradeInfo _tradeInfo) external virtual returns (struct ITradingStorage.Trade)

Stores a new trade (trade/limit/stop)

Parameters

Name
Type
Description

_trade

trade to be stored

_tradeInfo

trade info to be stored

updateTradeMaxClosingSlippageP

function updateTradeMaxClosingSlippageP(struct ITradingStorage.Id _tradeId, uint16 _maxSlippageP) external virtual

Updates an existing trade max closing slippage %

Parameters

Name
Type
Description

_tradeId

id of the trade

_maxSlippageP

uint16

new max slippage % (1e3 precision)

updateTradeCollateralAmount

function updateTradeCollateralAmount(struct ITradingStorage.Id _tradeId, uint120 _collateralAmount) external virtual

Updates an open trade collateral

Parameters

Name
Type
Description

_tradeId

id of updated trade

_collateralAmount

uint120

new collateral amount value (collateral precision)

updateTradePosition

function updateTradePosition(struct ITradingStorage.Id _tradeId, uint120 _collateralAmount, uint24 _leverage, uint64 _openPrice, bool _isPartialIncrease, bool _isPnlPositive) external virtual

Updates an open trade collateral

Parameters

Name
Type
Description

_tradeId

id of updated trade

_collateralAmount

uint120

new collateral amount value (collateral precision)

_leverage

uint24

new leverage value

_openPrice

uint64

new open price value

_isPartialIncrease

bool

refreshes trade liquidation params if true

_isPnlPositive

bool

whether the pnl is positive (only relevant when closing)

updateOpenOrderDetails

function updateOpenOrderDetails(struct ITradingStorage.Id _tradeId, uint64 _openPrice, uint64 _tp, uint64 _sl, uint16 _maxSlippageP) external virtual

Updates an open order details (limit/stop)

Parameters

Name
Type
Description

_tradeId

id of updated trade

_openPrice

uint64

new open price (1e10)

_tp

uint64

new take profit price (1e10)

_sl

uint64

new stop loss price (1e10)

_maxSlippageP

uint16

new max slippage % value (1e3)

updateTradeTp

function updateTradeTp(struct ITradingStorage.Id _tradeId, uint64 _newTp) external virtual

Updates the take profit of an open trade

Parameters

Name
Type
Description

_tradeId

the trade id

_newTp

uint64

the new take profit (1e10 precision)

updateTradeSl

function updateTradeSl(struct ITradingStorage.Id _tradeId, uint64 _newSl) external virtual

Updates the stop loss of an open trade

Parameters

Name
Type
Description

_tradeId

the trade id

_newSl

uint64

the new sl (1e10 precision)

closeTrade

function closeTrade(struct ITradingStorage.Id _tradeId, bool _isPnlPositive) external virtual

Marks an open trade/limit/stop as closed

Parameters

Name
Type
Description

_tradeId

the trade id

_isPnlPositive

bool

whether the pnl is positive

storePendingOrder

function storePendingOrder(struct ITradingStorage.PendingOrder _pendingOrder) external virtual returns (struct ITradingStorage.PendingOrder)

Stores a new pending order

Parameters

Name
Type
Description

_pendingOrder

the pending order to be stored

closePendingOrder

function closePendingOrder(struct ITradingStorage.Id _orderId) external virtual

Closes a pending order

Parameters

Name
Type
Description

_orderId

the id of the pending order to be closed

getCollateral

function getCollateral(uint8 _index) external view returns (struct ITradingStorage.Collateral)

Returns collateral data by index

Parameters

Name
Type
Description

_index

uint8

the index of the supported collateral

isCollateralActive

function isCollateralActive(uint8 _index) external view returns (bool)

Returns whether can open new trades with a collateral

Parameters

Name
Type
Description

_index

uint8

the index of the collateral to check

isCollateralListed

function isCollateralListed(uint8 _index) external view returns (bool)

Returns whether a collateral has been listed

Parameters

Name
Type
Description

_index

uint8

the index of the collateral to check

getCollateralsCount

function getCollateralsCount() external view returns (uint8)

Returns the number of supported collaterals

getCollaterals

function getCollaterals() external view returns (struct ITradingStorage.Collateral[])

Returns the supported collaterals

getCollateralIndex

function getCollateralIndex(address _collateral) external view returns (uint8)

Returns the index of a supported collateral

Parameters

Name
Type
Description

_collateral

address

the address of the collateral

getTradingActivated

function getTradingActivated() external view returns (enum ITradingStorage.TradingActivated)

Returns the trading activated state

getTraderStored

function getTraderStored(address _trader) external view returns (bool)

Returns whether a trader is stored in the traders array

Parameters

Name
Type
Description

_trader

address

trader to check

getTradersCount

function getTradersCount() external view returns (uint256)

Returns the length of the traders array

getTraders

function getTraders(uint32 _offset, uint32 _limit) external view returns (address[])

Returns all traders that have open trades using a pagination system

Parameters

Name
Type
Description

_offset

uint32

start index in the traders array

_limit

uint32

end index in the traders array

getTrade

function getTrade(address _trader, uint32 _index) external view returns (struct ITradingStorage.Trade)

Returns open trade/limit/stop order

Parameters

Name
Type
Description

_trader

address

address of the trader

_index

uint32

index of the trade for trader

getTrades

function getTrades(address _trader) external view returns (struct ITradingStorage.Trade[])

Returns all open trades/limit/stop orders for a trader

Parameters

Name
Type
Description

_trader

address

address of the trader

getAllTradesForTraders

function getAllTradesForTraders(address[] _traders, uint256 _offset, uint256 _limit) external view returns (struct ITradingStorage.Trade[])

Returns all trade/limit/stop orders using a pagination system

Parameters

Name
Type
Description

_traders

address[]

list of traders to return trades for

_offset

uint256

index of first trade to return

_limit

uint256

index of last trade to return

getAllTrades

function getAllTrades(uint256 _offset, uint256 _limit) external view returns (struct ITradingStorage.Trade[])

Returns all trade/limit/stop orders using a pagination system. Calls getAllTradesForTraders internally with all traders.

Parameters

Name
Type
Description

_offset

uint256

index of first trade to return

_limit

uint256

index of last trade to return

getTradeInfo

function getTradeInfo(address _trader, uint32 _index) external view returns (struct ITradingStorage.TradeInfo)

Returns trade info of an open trade/limit/stop order

Parameters

Name
Type
Description

_trader

address

address of the trader

_index

uint32

index of the trade for trader

getTradeInfos

function getTradeInfos(address _trader) external view returns (struct ITradingStorage.TradeInfo[])

Returns all trade infos of open trade/limit/stop orders for a trader

Parameters

Name
Type
Description

_trader

address

address of the trader

getAllTradeInfosForTraders

function getAllTradeInfosForTraders(address[] _traders, uint256 _offset, uint256 _limit) external view returns (struct ITradingStorage.TradeInfo[])

Returns all trade infos of open trade/limit/stop orders using a pagination system

Parameters

Name
Type
Description

_traders

address[]

list of traders to return tradeInfo for

_offset

uint256

index of first tradeInfo to return

_limit

uint256

index of last tradeInfo to return

getAllTradeInfos

function getAllTradeInfos(uint256 _offset, uint256 _limit) external view returns (struct ITradingStorage.TradeInfo[])

Returns all trade infos of open trade/limit/stop orders using a pagination system. Calls getAllTradeInfosForTraders internally with all traders.

Parameters

Name
Type
Description

_offset

uint256

index of first tradeInfo to return

_limit

uint256

index of last tradeInfo to return

getPendingOrder

function getPendingOrder(struct ITradingStorage.Id _orderId) external view returns (struct ITradingStorage.PendingOrder)

Returns a pending ordeer

Parameters

Name
Type
Description

_orderId

id of the pending order

getPendingOrders

function getPendingOrders(address _user) external view returns (struct ITradingStorage.PendingOrder[])

Returns all pending orders for a trader

Parameters

Name
Type
Description

_user

address

address of the trader

getAllPendingOrdersForTraders

function getAllPendingOrdersForTraders(address[] _traders, uint256 _offset, uint256 _limit) external view returns (struct ITradingStorage.PendingOrder[])

Returns all pending orders using a pagination system

Parameters

Name
Type
Description

_traders

address[]

list of traders to return pendingOrder for

_offset

uint256

index of first pendingOrder to return

_limit

uint256

index of last pendingOrder to return

getAllPendingOrders

function getAllPendingOrders(uint256 _offset, uint256 _limit) external view returns (struct ITradingStorage.PendingOrder[])

Returns all pending orders using a pagination system Calls getAllPendingOrdersForTraders internally with all traders.

Parameters

Name
Type
Description

_offset

uint256

index of first pendingOrder to return

_limit

uint256

index of last pendingOrder to return

getTradePendingOrderBlock

function getTradePendingOrderBlock(struct ITradingStorage.Id _tradeId, enum ITradingStorage.PendingOrderType _orderType) external view returns (uint256)

Returns the block number of the pending order for a trade (0 = doesn't exist)

Parameters

Name
Type
Description

_tradeId

id of the trade

_orderType

enum ITradingStorage.PendingOrderType

pending order type to check

getCounters

function getCounters(address _trader, enum ITradingStorage.CounterType _type) external view returns (struct ITradingStorage.Counter)

Returns the counters of a trader (currentIndex / open count for trades/tradeInfos and pendingOrders mappings)

Parameters

Name
Type
Description

_trader

address

address of the trader

_type

enum ITradingStorage.CounterType

the counter type (trade/pending order)

getCountersForTraders

function getCountersForTraders(address[] _traders, enum ITradingStorage.CounterType _type) external view returns (struct ITradingStorage.Counter[])

Returns the counters for a list of traders

Parameters

Name
Type
Description

_traders

address[]

the list of traders

_type

enum ITradingStorage.CounterType

the counter type (trade/pending order)

getGToken

function getGToken(uint8 _collateralIndex) external view returns (address)

Returns the address of the gToken for a collateral stack

Parameters

Name
Type
Description

_collateralIndex

uint8

the index of the supported collateral

getTradeLiquidationParams

function getTradeLiquidationParams(address _trader, uint32 _index) external view returns (struct IPairsStorage.GroupLiquidationParams)

Returns the liquidation params for a trade

Parameters

Name
Type
Description

_trader

address

address of the trader

_index

uint32

index of the trade for trader

getTradesLiquidationParams

function getTradesLiquidationParams(address _trader) external view returns (struct IPairsStorage.GroupLiquidationParams[])

Returns all trade liquidation params of open trade/limit/stop orders for a trader

Parameters

Name
Type
Description

_trader

address

address of the trader

getAllTradesLiquidationParamsForTraders

function getAllTradesLiquidationParamsForTraders(address[] _traders, uint256 _offset, uint256 _limit) external view returns (struct IPairsStorage.GroupLiquidationParams[])

Returns all trade liquidation params of open trade/limit/stop orders using a pagination system

Parameters

Name
Type
Description

_traders

address[]

list of traders to return liq params for

_offset

uint256

index of first liq param to return

_limit

uint256

index of last liq param to return

getAllTradesLiquidationParams

function getAllTradesLiquidationParams(uint256 _offset, uint256 _limit) external view returns (struct IPairsStorage.GroupLiquidationParams[])

Returns all trade liquidation params of open trade/limit/stop orders using a pagination system Calls getAllTradesLiquidationParamsForTraders internally with all traders.

Parameters

Name
Type
Description

_offset

uint256

index of first liq param to return

_limit

uint256

index of last liq param to return

getCurrentContractsVersion

function getCurrentContractsVersion() external pure returns (enum ITradingStorage.ContractsVersion)

Returns the current contracts version

PreviousGNSTradingCallbacksNextGNSMultiCollatDiamond

Last updated 7 months ago

Was this helpful?

ITradingStorage.Trade
ITradingStorage.TradeInfo
ITradingStorage.Id
ITradingStorage.Id
ITradingStorage.Id
ITradingStorage.Id
ITradingStorage.Id
ITradingStorage.Id
ITradingStorage.Id
ITradingStorage.PendingOrder
ITradingStorage.Id
ITradingStorage.Id
ITradingStorage.Id