> For the complete documentation index, see [llms.txt](https://docs.expand.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.expand.network/integrations/supported-wallets/hd-wallets.md).

# HD Wallets

A hierarchical deterministic wallet is a digital wallet commonly used to store the keys for holders of cryptocurrencies.

To use an hd wallet 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 { Wallet, prepareTransaction } = require('expand-network');
const wallet  = new Wallet({ privateKey:'SENDER_PRIVATE_KEY', xApiKey:xApiKey});
```

### **Step 3: Prepare Transaction**

```javascript
const chainId = '1';        // Replace with other chainId to toggle between chains
const preparedTx = {
        "from": "SENDER_WALLET_ADDRESS",
        "value": "10000",
        "to": "RECEIVER_WALLET_ADDRESS",
        "chainId": "1",
        "gas": "25000",
        "xApiKey": "YOUR_API_KEY"  
    };
```

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

```javascript
const signedTx = await wallet.signTransaction(preparedTx);
signedTx.chainId = '1';
console.log(signedTx);
```

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

```javascript
const tx = await wallet.sendTransaction(signedTx);
console.log(tx.data);
```

### Sample code to approve a fungible token using any HD wallet:

```javascript
const { Wallet, prepareTransaction } = require('expand-network');
const xApiKey = 'YOUR_API_KEY';    //Replace this with your API key
async function main() {
    const chainId = '1';
    const preparedTx = await prepareTransaction('https://api.expand.network/fungibletoken/approve', {
        "from": "OWNER_WALLET_ADDRESS",
        "value": "10000",
        "to": "SPENDER_WALLET_ADDRESS",
        "chainId": "1",
        "gas": "25000",
        "xApiKey": xApiKey  
    };
    const wallet  = new Wallet({ privateKey:'SENDER_PRIVATE_KEY', xApiKey:xApiKey});
    const signedTx = await wallet.signTransaction(preparedTx);
    signedTx.chainId = '1';
    console.log(signedTx);
    const tx = await wallet.sendTransaction(signedTx);
    console.log(tx.data);
}
main();
```
