# 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 [<mark style="color:blue;">**SDK**</mark>](https://github.com/expand-network/sdk-nodejs.git), follow these steps:-

### **Step 1:** Installation

&#x20;User needs to install the expand.network SDK using the following command:&#x20;

```git
npm i expand-network
```

### **Step 2: Wallet Initialisation**

```javascript
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**

<pre class="language-javascript"><code class="lang-javascript">// Preparing the approve transaction from expand.network
<strong>const preparedTx = await prepareTransaction("https://api.expand.network/fungibletoken/approve", {
</strong>        "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
    });
</code></pre>

### **Step 4: Sign Transaction**

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

### **Step 5: Send Transaction**

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

### Sample code to approve a fungible token using Fireblocks Wallet:&#x20;

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