PHANTOM

Phantom is a digital wallet which makes it easy to store, send, receive, collect, and swap tokens on Solana, Ethereum and Polygon. To use Phantom 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 { WalletPhantom, prepareTransaction } = require('expand-network');
const wallet  = new WalletPhantom({ privateKey:'YOUR_PRIVATE_KEY', xApiKey:xApiKey});

Step 3: Prepare Transaction

const preparedTx = await prepareTransaction('https://api.expand.network/fungibletoken/approve', {
        "from": "OWNER_WALLET_ADDRESS",
        "tokenAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F",  
        "amount": "1000000000000",                  
        "to": "SPENDER_WALLET_ADDRESS", //For approve 
        "gas": "100000",
        "chainId": "1",
        "xApiKey":xApiKey
    });

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 Phantom:

const { WalletPhantom, prepareTransaction } = require('expand-network');
const xApiKey = 'YOUR_API_KEY';        //Replace this with your API key
async function main() {
    const wallet  = new WalletPhantom({ privateKey:'YOUR_PRIVATE_KEY', xApiKey:xApiKey});

    const preparedTx = await prepareTransaction('https://api.expand.network/fungibletoken/approve', {
            "from": "OWNER_WALLET_ADDRESS",
            "tokenAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F",  
            "amount": "1000000000000",                  
            "to": "SPENDER_WALLET_ADDRESS",
            "gas": "100000",
            "chainId": "1",        // Replace with other chainId to toggle between chains
            "xApiKey":xApiKey
    });

    const signedTx = await wallet.signTransaction(preparedTx);
    console.log(signedTx);

    const tx = await wallet.sendTransaction(signedTx);
    console.log("Transaction Pending....", tx.data);
}
main();

Last updated

#553: ENC-2526-LIDO

Change request updated