You've created a wallet feature using the Web3js SDK. 

I created functions related to Solana and SPL-token retrieval and transfer and used them well. However, recently I am getting an error when transferring SPL-tokens. 

I tried various methods to fix the error, but it was not possible to fix the error. 

Below is the Javascript code I used before and the code I have modified now. 

Do any of these codes require additional settings or other methods to fix the error? 

Or is this a bug in the Solana  node network?


**old code**

      const myMint = new solanaWeb3.PublicKey(req.query.contract);
      const myToken = new splToken.Token(
        conn,
        myMint,
        splToken.TOKEN_PROGRAM_ID,
        fromWallet
      );
      let toWallet = new solanaWeb3.PublicKey(req.query.to);
      const fromTokenAccount = await myToken.getOrCreateAssociatedAccountInfo(
        fromWallet.publicKey
      );
      const toTokenAccount = await myToken.getOrCreateAssociatedAccountInfo(
        toWallet
      );
      amount = req.query.amount * Math.pow(10, 8)
      // Add token transfer instructions to transaction
      const transaction = new solanaWeb3.Transaction()
        .add(
          splToken.Token.createTransferInstruction(
            splToken.TOKEN_PROGRAM_ID,
            fromTokenAccount.address,
            toTokenAccount.address,
            fromWallet.publicKey,
            [],
            amount
          )
        );
      // Sign transaction, broadcast, and confirm
      const signature = await solanaWeb3.sendAndConfirmTransaction(
        conn,
        transaction,
        [fromWallet] , 
        { commitment: 'confirmed',   skipPreflight: true}
      );


**new code1**

    const modifyComputeUnits = solanaWeb3.ComputeBudgetProgram.setComputeUnitLimit({ 
      units: 300_000
    });
    
    const addPriorityFee = solanaWeb3.ComputeBudgetProgram.setComputeUnitPrice({ 
      microLamports: 10
    });
    
    
    let latestBlockhash = await conn.getLatestBlockhash("confirmed");
    const transaction = new solanaWeb3.Transaction({
      feePayer : fromWallet.publicKey , 
      blockhash: latestBlockhash.blockhash,
      lastValidBlockHeight: latestBlockhash.lastValidBlockHeight
    })
    .add(modifyComputeUnits)
    .add(addPriorityFee)
    .add(
      splToken.Token.createTransferInstruction(
        splToken.TOKEN_PROGRAM_ID,
        fromTokenAccount.address,
        toTokenAccount.address,
        fromWallet.publicKey,
        [],
        amount
      )
    );
    
    const transactionSignature = await solanaWeb3.sendAndConfirmTransaction(
      conn,
      transaction,
      [fromWallet] , 
      { commitment: 'confirmed',   skipPreflight: true}
    );


**new code2**

    let latestBlockhash = await conn.getLatestBlockhash("confirmed");
    
    const transaction = new solanaWeb3.Transaction({
      feePayer : fromWallet.publicKey , 
      blockhash: latestBlockhash.blockhash,
      lastValidBlockHeight: latestBlockhash.lastValidBlockHeight,
    })
    .add(modifyComputeUnits)
    .add(addPriorityFee)
    .add(
      splToken.Token.createTransferInstruction(
        splToken.TOKEN_PROGRAM_ID,
        fromTokenAccount.address,
        toTokenAccount.address,
        fromWallet.publicKey,
        [],
        amount
      )
    );
    const message = transaction.serializeMessage();
    const signature = nacl.sign.detached(message, fromWallet.secretKey);
    transaction.addSignature(fromWallet.publicKey, Buffer.from(signature));
    
    
    const transactionSignature = await conn.sendRawTransaction(
      transaction.serialize(),
      { commitment: 'confirmed', skipPreflight: true , maxRetries: 150 }
    );
    
    const latestBlockHash = await conn.getLatestBlockhash();
    const tx = await conn.confirmTransaction(transactionSignature, { 
        blockhash: latestBlockHash.blockhash,
        lastValidBlockHeight: latestBlockHash.lastValidBlockHeight,
        commitment: 'confirmed', skipPreflight: true , maxRetries: 150
     });


Error Msg : TransactionExpiredBlockheightExceededError: Signature 53fgvUBnx9L57Xt3GcRqwUbQXNZmbCo6Vcu53UiFzHPoQHbPpDPNvpWcSJFday2heYU2QVpDLWUekZNotajRd4Lh has expired: block height exceeded.