D8X
  • D8X TL;DR
    • D8X Overview
    • Onboarding
      • Pick your D8X Frontend
      • Get Funds on X Layer
      • Get Funds on zkEVM
  • Contribute & Earn
    • White-label D8X
    • Traders
    • Liquidity Providers
    • Refer Traders
    • Order Executors
    • Liquidators
    • Governors
    • D8X Trading Competition
      • Week 1: 16th March 2025
      • Week 2: 23rd March 2025
      • Week 3: 30th of March 2025
      • Week 4: 6th of April
      • Week 5: 13th of April
      • Week 6: 20th of April
  • Perpetual Contracts Guide
    • Overview
    • Order Types
    • Fee Structure
    • Profit/Loss & Position Marking
    • Liquidity Pools & Liquidity Provision
    • Liquidations
    • Oracles
  • Contracts
    • Berachain
    • Arbitrum
    • Polygon ZKEVM
  • D8X Token
    • What is $D8X?
    • Supply
    • Utility
  • Node SDK
    • Getting Started
    • Modules
      • Market Data
      • Parent Class PerpetualDataHandler
      • Traders
      • Liquidity Providers
      • Liquidators
      • Order Executors
      • White-Label Partners
    • Market data API
  • SECURITY
    • Audits
  • Contact
    • Brand assets
    • Contact us
Powered by GitBook
On this page
  • Pre-requisites
  • Installation
  • Initialization
  1. Node SDK

Getting Started

Last updated 1 year ago

Pre-requisites

In order to use the D8X Node SDK you will need to have TypeScript and Yarn installed:

  • Install Typescript:

    • $ npm install -g typescript

    • $ npm install -g ts-node

  • Install yarn for the installed version of node you plan to use:

    • nvm use 18.12.1

      npm install -g yarn

  • Install Typescript:

    • $ npm install -g typescript

    • $ npm install -g ts-node

Installation

You can install the SDK using NPM or Yarn to access the latest stable version of the package, or by cloning the repo in order to have access to experimental and state-of-the art developments in the D8X API. We recommend using Yarn.

$ yarn add @d8x/perpetuals-sdk
$ npm install @d8x/perpetuals-sdk
  • Run yarn in the root directory of the repo to install the package

Initialization

Once the SDK is installed, import the modules you need from @d8x/d8x-futures-node-sdk:

//ts-node
import { MarketData, AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';

Read-only modules, such as MarketData, do not require you to specify a private key and can be instantiated without any additional user-provided data:

//ts-node
async function main() {
    // see what chain configurations are available:
    const configs = PerpetualDataHandler.getAvailableConfigs();
    console.log(configs);
    // output of the form:
    // Set(2) { '1101; zkevm', `196; xlayer'}
    
    // load configuration for xlayer
    const config = PerpetualDataHandler.readSDKConfig("xlayer");
    
    // MarketData (read only, no authentication needed)
    let mktData = new MarketData(config);
    
    // Create a proxy instance to access the blockchain
    await mktData.createProxyInstance();
    // now you can access all methods of the Market Data object
}
main();

Modules that require the user to cryptographically sign, such as AccountTrade that allows you to post orders on the blockchain, do require you to specify your private key. We recommend setting your private key as an environment variable, e.g. in a terminal prompt:

$ export PK="your-private-key-without-0x"
> set PK=your-private-key-without-0x

You can then instantiate modules with write-access as follows:

//ts-node
async function main() {
    // load configuration for ZKEVM cardona testnet
    const config = PerpetualDataHandler.readSDKConfig("cardona");
    
    // AccountTrade (authentication required)
    const pk: string = <string>process.env.PK;
    let accTrade = new AccountTrade(config, pk);
    
    // Create a proxy instance to access the blockchain
    await accTrade.createProxyInstance();
    // now you can access all methods of the Account Trade object
}
main();

Config

The D8X Node SDK package provides default configuration files and readSDKConfig accepts the choices "cardona" (for chainId 2442), "zkevm"(for chainId 1101), "x1" (for chainId 195) and "xlayer" (for chainId 196). The configuration file is required to initialize the node-package classes. There is most likely no reason to deviate from either of the default configuration files, but if you want you can, by providing a path to your configuration file:

//ts-node
// load bespoke configuration
const config = PerpetualDataHandler.readSDKConfig("../config/myConfig.json");

Install Node via nvm,

Install Yarn,

Install node.js with nvm-windows,

Clone the official repo

see here
see here
see here
D8X Futures Node SDK