Liquidators

Liquidators are participants that liquidate underfunded positions and earn a fee. LiquidatorTool is the relevant SDK component.

LiquidatorTool ⇐ WriteAccessHandler

Functions to liquidate traders. This class requires a private key and executes smart-contract interactions that require gas-payments.

Kind: global class Extends: WriteAccessHandler

  • LiquidatorToolWriteAccessHandler

    • new LiquidatorTool(config, signer)

    • .liquidateTrader(symbol, traderAddr, [liquidatorAddr], priceFeedData)

    • .isMaintenanceMarginSafe(symbol, traderAddr, indexPrices)boolean

    • .countActivePerpAccounts(symbol)number

    • .getActiveAccountsByChunks(symbol, from, to)Array.<string>

    • .getAllActiveAccounts(symbol)Array.<string>

new LiquidatorTool(config, signer)

Constructs a LiquidatorTool instance for a given configuration and private key.

ParamTypeDescription

config

NodeSDKConfig

Configuration object, see PerpetualDataHandler. readSDKConfig.

signer

string | Signer

Private key or ethers Signer of the account

Example

import { LiquidatorTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
async function main() {
  console.log(LiquidatorTool);
  // load configuration for Polygon zkEVM (tesnet)
  const config = PerpetualDataHandler.readSDKConfig("cardona");
  // LiquidatorTool (authentication required, PK is an environment variable with a private key)
  const pk: string = <string>process.env.PK;
  let lqudtrTool = new LiquidatorTool(config, pk);
  // Create a proxy instance to access the blockchain
  await lqudtrTool.createProxyInstance();
}
main();

liquidatorTool.liquidateTrader(symbol, traderAddr, [liquidatorAddr], priceFeedData) ⇒

Liquidate a trader.

Kind: instance method of LiquidatorTool Returns:

Transaction object.

ParamTypeDescription

symbol

string

Symbol of the form ETH-USD-MATIC.

traderAddr

string

Address of the trader to be liquidated.

[liquidatorAddr]

string

Address to be credited if the liquidation succeeds.

priceFeedData

PriceFeedSubmission

optional. VAA and timestamps for oracle. If not provided will query from REST API. Defaults to the wallet used to execute the liquidation.

Example

import { LiquidatorTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
async function main() {
  console.log(LiquidatorTool);
  // Setup (authentication required, PK is an environment variable with a private key)
  const config = PerpetualDataHandler.readSDKConfig("cardona");
  const pk: string = <string>process.env.PK;
  let lqudtrTool = new LiquidatorTool(config, pk);
  await lqudtrTool.createProxyInstance();
  // liquidate trader
  let liqAmount = await lqudtrTool.liquidateTrader("ETH-USD-MATIC",
      "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B");
  console.log(liqAmount);
}
main();

liquidatorTool.isMaintenanceMarginSafe(symbol, traderAddr, indexPrices) ⇒ boolean

Check if the collateral of a trader is above the maintenance margin ("maintenance margin safe"). If not, the position can be liquidated.

Kind: instance method of LiquidatorTool Returns: boolean -

True if the trader is maintenance margin safe in the perpetual. False means that the trader's position can be liquidated.

ParamTypeDescription

symbol

string

Symbol of the form ETH-USD-MATIC.

traderAddr

string

Address of the trader whose position you want to assess.

indexPrices

Array.<number>

optional, index price S2/S3 for which we test

Example

import { LiquidatorTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
async function main() {
  console.log(LiquidatorTool);
  // Setup (authentication required, PK is an environment variable with a private key)
  const config = PerpetualDataHandler.readSDKConfig("cardona");
  const pk: string = <string>process.env.PK;
  let lqudtrTool = new LiquidatorTool(config, pk);
  await lqudtrTool.createProxyInstance();
  // check if trader can be liquidated
  let safe = await lqudtrTool.isMaintenanceMarginSafe("ETH-USD-MATIC",
      "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B");
  console.log(safe);
}
main();

liquidatorTool.countActivePerpAccounts(symbol) ⇒ number

Total number of active accounts for this symbol, i.e. accounts with positions that are currently open.

Kind: instance method of LiquidatorTool Returns: number -

Number of active accounts.

ParamTypeDescription

symbol

string

Symbol of the form ETH-USD-MATIC.

Example

import { LiquidatorTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
async function main() {
  console.log(LiquidatorTool);
  // Setup (authentication required, PK is an environment variable with a private key)
  const config = PerpetualDataHandler.readSDKConfig("cardona");
  const pk: string = <string>process.env.PK;
  let lqudtrTool = new LiquidatorTool(config, pk);
  await lqudtrTool.createProxyInstance();
  // get number of active accounts
  let accounts = await lqudtrTool.countActivePerpAccounts("ETH-USD-MATIC");
  console.log(accounts);
}
main();

liquidatorTool.getActiveAccountsByChunks(symbol, from, to) ⇒ Array.<string>

Get addresses of active accounts by chunks.

Kind: instance method of LiquidatorTool Returns: Array.<string> -

Array of addresses at locations 'from', 'from'+1 ,..., 'to'-1.

ParamTypeDescription

symbol

string

Symbol of the form ETH-USD-MATIC.

from

number

From which account we start counting (0-indexed).

to

number

Until which account we count, non inclusive.

Example

import { LiquidatorTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
async function main() {
  console.log(LiquidatorTool);
  // Setup (authentication required, PK is an environment variable with a private key)
  const config = PerpetualDataHandler.readSDKConfig("cardona");
  const pk: string = <string>process.env.PK;
  let lqudtrTool = new LiquidatorTool(config, pk);
  await lqudtrTool.createProxyInstance();
  // get all active accounts in chunks
  let accounts = await lqudtrTool.getActiveAccountsByChunks("ETH-USD-MATIC", 0, 4);
  console.log(accounts);
}
main();

liquidatorTool.getAllActiveAccounts(symbol) ⇒ Array.<string>

Addresses for all the active accounts in this perpetual symbol.

Kind: instance method of LiquidatorTool Returns: Array.<string> -

Array of addresses.

ParamTypeDescription

symbol

string

Symbol of the form ETH-USD-MATIC.

Example

import { LiquidatorTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
async function main() {
  console.log(LiquidatorTool);
  // Setup (authentication required, PK is an environment variable with a private key)
  const config = PerpetualDataHandler.readSDKConfig("cardona");
  const pk: string = <string>process.env.PK;
  let lqudtrTool = new LiquidatorTool(config, pk);
  await lqudtrTool.createProxyInstance();
  // get all active accounts
  let accounts = await lqudtrTool.getAllActiveAccounts("ETH-USD-MATIC");
  console.log(accounts);
}
main();