Skip to main content
Verify Ed25519 signatures to confirm that a message was signed by a specific Solana address. Essential for authentication and ensuring data integrity.

Verify Signatures

import { useParaSolanaSigner } from '@getpara/react-sdk';
import { createSolanaRpc } from '@solana/kit';
import { getUtf8Encoder } from '@solana/codecs-strings';
import nacl from 'tweetnacl';
import bs58 from 'bs58';

const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");

function VerifySignature() {
  const { solanaSigner, isLoading } = useParaSolanaSigner({ rpc });

  const verifyMessage = async () => {
    if (!solanaSigner) return false;

    const message = "Hello, Solana!";
    const messageBytes = new Uint8Array(getUtf8Encoder().encode(message));

    const signatureResult = await solanaSigner.signMessages([
      { content: messageBytes, signatures: {} }
    ]);
    const signatureBytes = signatureResult[0][solanaSigner.address];

    const publicKeyBuffer = solanaSigner.sender;

    const isValid = nacl.sign.detached.verify(
      messageBytes,
      signatureBytes,
      publicKeyBuffer
    );

    return isValid;
  };

  return <button onClick={verifyMessage}>Sign & Verify Message</button>;
}

Next Steps