Skip to main content
Sign messages to prove ownership of a Solana address without submitting a transaction. This is commonly used for authentication and verification purposes.
import { useParaSolanaSigner } from '@getpara/react-sdk';
import { createSolanaRpc } from '@solana/kit';
import { getUtf8Encoder } from '@solana/codecs-strings';
import bs58 from 'bs58';

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

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

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

    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 signatureBase58 = bs58.encode(signatureBytes);

    return { message, signature: signatureBase58, signer: solanaSigner.address };
  };

  return <button onClick={signMessage}>Sign Message</button>;
}

Next Steps