Get started
Node.js configuration environment

Node.js configuration environment#

1. Import necessary Node.js libraries#

First, import the required Node.js libraries and set up your environment variables.

const cryptoJS = require('crypto-js'); // Import encryption modules for subsequent encryption calculations
const { Web3 } = require('web3'); // Import the Web3 library for interacting with Ethereum
const fetch = (...args) =>
import('node-fetch').then(({ default: fetch }) => fetch(...args)); // Import the fetch library for making HTTP requests

2. Set Up Your Environment Variables#

Define fundamental variables for subsequent requests and API URLs, and initialize Web3. Web3 is a set of libraries that enables you to interact with local or remote Ethereum nodes using HTTP, IPC, or WebSocket.

const apiBaseUrl = 'https://www.okx.com/'; // Define the underlying path of the request
const web3RpcUrl = 'https://.....pro'; // The URL for the Ethereum node you want to connect to
const privateKey = '0x...xxx'; // Set the private key of your wallet (replace '0x...xxx' with your actual private key). NEVER SHARE THIS WITH ANYONE!
const chainId = '1';
const fromTokenAddress = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee';    // Native token address
const toTokenAddress = '0xdac17f958d2ee523a2206206994597c13d831ec7';

const userWalletAddress = '0x...35'; // User wallet address
const secretKey = '31...D2'; // The key obtained from the previous application
const apiKey = '42d0fd46-6f11-4681-a64a-9ba17d99d406'; // The api Key obtained from the previous application
const passphrase = '*********'; // The password created when applying for the key
const date = new Date(); // Get the current time
const timestamp = date.toISOString(); // Convert the current time to the desired format
const web3 = new Web3(new Web3.providers.HttpProvider(web3RpcUrl)); //Establishing web3 link

3. Define Helper Functions#

Define auxiliary functions that will be used for interacting with the OKX API.

// Construct full API request URL
const getRequestUrl = (apiBaseUrl, api, queryParams) => {
    return apiBaseUrl + api + '?' + new URLSearchParams(queryParams).toString();
  };
  const apiRequestUrl = getRequestUrl(apiBaseUrl, '/swap', swapParams);

4. Assemble Header Parameters#

Set header properties. All parameters, except for the apiRequestUrlparameter, are generic, while the apiRequestUrlparameter is generated based on different requests.

const headersParams = {
    'Content-Type': 'application/json',
    'OK-ACCESS-KEY': apiKey,
    'OK-ACCESS-SIGN': cryptoJS.enc.Base64.stringify(
      cryptoJS.HmacSHA256(timestamp + 'GET' + '/api/v5/dex/aggregator/xxx?xxx=xxx', secretKey)
    ),
    'OK-ACCESS-TIMESTAMP': timestamp,
    'OK-ACCESS-PASSPHRASE': passphrase,
  };