I am trying to sign a transaction using a delegate account, but transaction.verifySignature() always returns false. However, the transaction works perfectly when I sign it with the owner's keypair. Here's a little reference to my code.

// delegate the ATA to delegate authority
await approve(connection,owner,ataAddress,delegateAuthority.publicKey,owner.publicKey,3000)

//build swap tx
tx = buildSwapTransaction(params)

This particular chunk of code returns false for delegate keypair and true for owner's keypair

P.S. I hope you get the idea of what I am trying to do

1 Answer 1


So I found out that when sending a transfer instruction using delegate account, you have to specify the delegate account as both the signer and the owner. Previously, I was specifying the actual owner as the owner in transaction, and was then trying to sign transaction with delegate keypair. This was causing the transaction to fail.

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.