Skip to content

Storage Contract 📜

Where all open limit orders, open positions, and their corresponding open interest are stored on chain.

State Variables

PRECISION

solidity
uint256 public constant PRECISION = 1e10;
uint256 public constant PRECISION = 1e10;

honey

solidity
ERC20 public honey;
ERC20 public honey;

pairsStorage

solidity
PairsStorageInterfaceV6 public pairsStorage;
PairsStorageInterfaceV6 public pairsStorage;

trading

solidity
address public trading;
address public trading;

callbacks

solidity
address public callbacks;
address public callbacks;

vault

solidity
IGToken public vault;
IGToken public vault;

maxTradesPerPair

solidity
uint256 public maxTradesPerPair;
uint256 public maxTradesPerPair;

maxPendingMarketOrders

solidity
uint256 public maxPendingMarketOrders;
uint256 public maxPendingMarketOrders;

gov

solidity
address public gov;
address public gov;

bot

solidity
address public bot;
address public bot;

_openTrades

solidity
mapping(address => mapping(uint256 => mapping(uint256 => Trade))) private _openTrades;
mapping(address => mapping(uint256 => mapping(uint256 => Trade))) private _openTrades;

_openTradesInfo

solidity
mapping(address => mapping(uint256 => mapping(uint256 => TradeInfo))) private _openTradesInfo;
mapping(address => mapping(uint256 => mapping(uint256 => TradeInfo))) private _openTradesInfo;

openTradesCount

solidity
mapping(address => mapping(uint256 => uint256)) public openTradesCount;
mapping(address => mapping(uint256 => uint256)) public openTradesCount;

openLimitOrderIds

solidity
mapping(address => mapping(uint256 => mapping(uint256 => uint256))) public openLimitOrderIds;
mapping(address => mapping(uint256 => mapping(uint256 => uint256))) public openLimitOrderIds;

openLimitOrdersCount

solidity
mapping(address => mapping(uint256 => uint256)) public openLimitOrdersCount;
mapping(address => mapping(uint256 => uint256)) public openLimitOrdersCount;

openLimitOrders

solidity
OpenLimitOrder[] public openLimitOrders;
OpenLimitOrder[] public openLimitOrders;

pairTraders

solidity
mapping(uint256 => address[]) public pairTraders;
mapping(uint256 => address[]) public pairTraders;

pairTradersId

solidity
mapping(address => mapping(uint256 => uint256)) public pairTradersId;
mapping(address => mapping(uint256 => uint256)) public pairTradersId;

isTradingContract

solidity
mapping(address => bool) public isTradingContract;
mapping(address => bool) public isTradingContract;

Functions

initialize

solidity
function initialize(
    ERC20 _honey,
    address _gov,
    address _bot,
    address _pairStorage,
    address _vault,
    address _trading,
    address _callbacks
) external initializer;
function initialize(
    ERC20 _honey,
    address _gov,
    address _bot,
    address _pairStorage,
    address _vault,
    address _trading,
    address _callbacks
) external initializer;

onlyGov

solidity
modifier onlyGov();
modifier onlyGov();

onlyTrading

solidity
modifier onlyTrading();
modifier onlyTrading();

setGov

solidity
function setGov(address _gov) external onlyGov;
function setGov(address _gov) external onlyGov;

setBot

solidity
function setBot(address _bot) external onlyGov;
function setBot(address _bot) external onlyGov;

removeTradingContract

solidity
function removeTradingContract(address _trading) external onlyGov;
function removeTradingContract(address _trading) external onlyGov;

setMaxTradesPerPair

solidity
function setMaxTradesPerPair(uint256 _maxTradesPerPair) external onlyGov;
function setMaxTradesPerPair(uint256 _maxTradesPerPair) external onlyGov;

setMaxPendingMarketOrders

solidity
function setMaxPendingMarketOrders(uint256 _maxPendingMarketOrders) external onlyGov;
function setMaxPendingMarketOrders(uint256 _maxPendingMarketOrders) external onlyGov;

storeTrade

solidity
function storeTrade(Trade memory _trade, TradeInfo memory _tradeInfo) external onlyTrading;
function storeTrade(Trade memory _trade, TradeInfo memory _tradeInfo) external onlyTrading;

unregisterTrade

solidity
function unregisterTrade(address trader, uint256 pairIndex, uint256 index) external onlyTrading;
function unregisterTrade(address trader, uint256 pairIndex, uint256 index) external onlyTrading;

storeOpenLimitOrder

solidity
function storeOpenLimitOrder(OpenLimitOrder memory o) external onlyTrading;
function storeOpenLimitOrder(OpenLimitOrder memory o) external onlyTrading;

updateOpenLimitOrder

solidity
function updateOpenLimitOrder(OpenLimitOrder calldata _o) external onlyTrading;
function updateOpenLimitOrder(OpenLimitOrder calldata _o) external onlyTrading;

unregisterOpenLimitOrder

solidity
function unregisterOpenLimitOrder(address _trader, uint256 _pairIndex, uint256 _index) external onlyTrading;
function unregisterOpenLimitOrder(address _trader, uint256 _pairIndex, uint256 _index) external onlyTrading;

updateSl

solidity
function updateSl(address _trader, uint256 _pairIndex, uint256 _index, uint256 _newSl) external onlyTrading;
function updateSl(address _trader, uint256 _pairIndex, uint256 _index, uint256 _newSl) external onlyTrading;

updateTp

solidity
function updateTp(address _trader, uint256 _pairIndex, uint256 _index, uint256 _newTp) external onlyTrading;
function updateTp(address _trader, uint256 _pairIndex, uint256 _index, uint256 _newTp) external onlyTrading;

updateTrade

solidity
function updateTrade(Trade memory _t) external onlyTrading;
function updateTrade(Trade memory _t) external onlyTrading;

handleDevGovFees

solidity
function handleDevGovFees(uint256 _pairIndex, uint256 _leveragedPositionSize, bool _fullFee)
    external
    onlyTrading
    returns (uint256 fee);
function handleDevGovFees(uint256 _pairIndex, uint256 _leveragedPositionSize, bool _fullFee)
    external
    onlyTrading
    returns (uint256 fee);

firstEmptyTradeIndex

solidity
function firstEmptyTradeIndex(address trader, uint256 pairIndex) public view returns (uint256 index);
function firstEmptyTradeIndex(address trader, uint256 pairIndex) public view returns (uint256 index);

firstEmptyOpenLimitIndex

solidity
function firstEmptyOpenLimitIndex(address trader, uint256 pairIndex) public view returns (uint256 index);
function firstEmptyOpenLimitIndex(address trader, uint256 pairIndex) public view returns (uint256 index);

hasOpenLimitOrder

solidity
function hasOpenLimitOrder(address trader, uint256 pairIndex, uint256 index) public view returns (bool);
function hasOpenLimitOrder(address trader, uint256 pairIndex, uint256 index) public view returns (bool);

openTrades

solidity
function openTrades(address trader, uint256 pairIndex, uint256 index) external view returns (Trade memory);
function openTrades(address trader, uint256 pairIndex, uint256 index) external view returns (Trade memory);

openTradesInfo

solidity
function openTradesInfo(address trader, uint256 pairIndex, uint256 index) external view returns (TradeInfo memory);
function openTradesInfo(address trader, uint256 pairIndex, uint256 index) external view returns (TradeInfo memory);

pairTradersArray

solidity
function pairTradersArray(uint256 _pairIndex) external view returns (address[] memory);
function pairTradersArray(uint256 _pairIndex) external view returns (address[] memory);

getOpenLimitOrder

solidity
function getOpenLimitOrder(address _trader, uint256 _pairIndex, uint256 _index)
    external
    view
    returns (OpenLimitOrder memory);
function getOpenLimitOrder(address _trader, uint256 _pairIndex, uint256 _index)
    external
    view
    returns (OpenLimitOrder memory);

getOpenLimitOrders

solidity
function getOpenLimitOrders() external view returns (OpenLimitOrder[] memory);
function getOpenLimitOrders() external view returns (OpenLimitOrder[] memory);

Events

SupportedTokenAdded

solidity
event SupportedTokenAdded(address a);
event SupportedTokenAdded(address a);

TradingContractAdded

solidity
event TradingContractAdded(address a);
event TradingContractAdded(address a);

TradingContractRemoved

solidity
event TradingContractRemoved(address a);
event TradingContractRemoved(address a);

AddressUpdated

solidity
event AddressUpdated(string name, address a);
event AddressUpdated(string name, address a);

NumberUpdated

solidity
event NumberUpdated(string name, uint256 value);
event NumberUpdated(string name, uint256 value);

NumberUpdatedPair

solidity
event NumberUpdatedPair(string name, uint256 pairIndex, uint256 value);
event NumberUpdatedPair(string name, uint256 pairIndex, uint256 value);

SpreadReductionsUpdated

solidity
event SpreadReductionsUpdated(uint256[5]);
event SpreadReductionsUpdated(uint256[5]);