in-solana by Supanode

Signature verification failed

The transaction is missing a required signature or one of the signatures does not match its corresponding public key. Every account marked as a signer in the transaction must have a valid Ed25519 signature.

Common causes

  1. Forgot to sign. The transaction was sent without all required signers adding their signatures.
  2. Wrong keypair. The keypair used to sign does not match the public key listed as a signer in the transaction.
  3. Transaction modified after signing. Any change to the transaction (adding instructions, changing blockhash) after signing invalidates existing signatures.
  4. Serialization error. The transaction was incorrectly serialized, corrupting the signature or message.

How to fix

  1. Verify that every account marked isSigner: true in the transaction’s instructions has provided a signature.
  2. Sign the transaction after all instructions and the blockhash are finalized — never modify the transaction after signing.
  3. Ensure the signing keypair’s public key matches the signer account in the transaction.
  4. Use simulateTransaction with sigVerify: true to test signatures before sending.

FAQ

Which accounts need to sign? The fee payer (always the first signer) and any account that an instruction declares as a signer. Program accounts and read-only accounts do not sign.

Can I partially sign a transaction? Yes. For multisig workflows, each signer adds their signature separately. The transaction is valid only when all required signatures are present.

Why did it fail after I changed the blockhash? Changing the blockhash changes the transaction message, which invalidates all existing signatures. You must re-sign after setting a new blockhash.

Error text variants

  • Signature verification failed
  • Transaction signature verification failure
  • Missing signature for public key

Updated: