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.

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.

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.

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.

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.

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.

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();