0

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}
  );

change 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}
);

change 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.

1 Answer 1

1

Add higher priority fee, probably same of higher than avg priority fee of last block, 10micolamports too low now a days on solana due to high traffic on chain

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.