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
- Forgot to sign. The transaction was sent without all required signers adding their signatures.
- Wrong keypair. The keypair used to sign does not match the public key listed as a signer in the transaction.
- Transaction modified after signing. Any change to the transaction (adding instructions, changing blockhash) after signing invalidates existing signatures.
- Serialization error. The transaction was incorrectly serialized, corrupting the signature or message.
How to fix
- Verify that every account marked
isSigner: truein the transaction’s instructions has provided a signature. - Sign the transaction after all instructions and the blockhash are finalized — never modify the transaction after signing.
- Ensure the signing keypair’s public key matches the signer account in the transaction.
- Use simulateTransaction with
sigVerify: trueto 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: