FIREBLOCKS

The Fireblocks Network is a secure transfer network that allows you to instantly find, connect, and move digital assets across exchanges, fiat providers, liquidity partners, and counterparties.

To use FIREBLOCKS with expand.network SDK, follow these steps:-

Step 1: Installation

User needs to install the expand.network SDK using the following command:

npm i expand-network

Step 2: Wallet Initialisation

const {  WalletFireblocks, prepareTransaction } = require('expand-network');
const xApiKey = 'YOUR_API_KEY';                //Replace this with your API key
const dotenv = require('dotenv');
const fs = require('fs');
const path = require('path');
const apiSecret = fs.readFileSync(path.resolve("SECRET_KEY_FILE_PATH"), "utf8");
async function initialiseFireblocksWallet(){
    const options = {
      apiSecret: apiSecret,
      apiKey: "FIREBLOCKS_API_KEY",        //Replace this with your Fieblocks API key
    }
    const wallet  = new WalletFireblocks(options);
    return wallet;
}

const wallet = await initialiseFireblocksWallet();    //Initialise the wallet

Step 3: Prepare Transaction

// Preparing the approve transaction from expand.network
const preparedTx = await prepareTransaction("https://api.expand.network/fungibletoken/approve", {
        "from": "FIREBLOCKS_WALLET_ADDRESS",
        "tokenAddress":"0x6B175474E89094C44Da98b954EedeAC495271d0F",
        "amount": "10000",
        "to": "SPENDER_WALLET_ADDRESS",
        "gas": "100000",
        "chainId": "1",                    // Replace with other chainId to toggle between chains
        "xApiKey": "YOUR_API_KEY",        // Replace this with your API Key
    });

Step 4: Sign Transaction

// Sign the transaction locally using sdk client
const signedTx = await wallet.signTransaction(preparedTx);
console.log(signedTx);

Step 5: Send Transaction

// Send the signed transaction
const tx = await wallet.sendTransaction(signedTx);
console.log(tx);

Sample code to approve a fungible token using Fireblocks Wallet:

const {  WalletFireblocks, prepareTransaction } = require('expand-network');
const xApiKey = 'YOUR_API_KEY';
const dotenv = require('dotenv');
const fs = require('fs');
const path = require('path');
const apiSecret = fs.readFileSync(path.resolve("SECRET_KEY_FILE_PATH"), "utf8");
async function initialiseFireblocksWallet(){
    const options = {
      apiSecret: apiSecret,
      apiKey: "FIREBLOCKS_API_KEY",        
    }
    const wallet  = new WalletFireblocks(options);
    return wallet;
}
async function main() {
    dotenv.config();
    const wallet = await initialiseFireblocksWallet();
    const preparedTx = await prepareTransaction("https://api.expand.network/fungibletoken/approve", {
        "from": "FIREBLOCKS_WALLET_ADDRESS",
        "tokenAddress":"TOKEN_CONTRACT_ADDRESS",
        "amount": "10000",
        "to": "SPENDER_WALLET_ADDRESS",
        "gas": "100000",
        "chainId": "1",
        "xApiKey": "YOUR_API_KEY",
    });
    const signedTx = await wallet.signTransaction(preparedTx);
    console.log(signedTx);
    const tx = await wallet.sendTransaction(signedTx);
    console.log(tx);
}
main();

Last updated

#553: ENC-2526-LIDO

Change request updated