Skip to main content
Sign plain text messages using Para’s secure signing infrastructure.
Wagmi is not available on React Native. Use Ethers.js or Viem for EVM operations.

Sign Personal Messages

import { ethers } from "ethers";
import { ParaEthersSigner } from "@getpara/ethers-v6-integration";

async function signMessage(signer: ParaEthersSigner, message: string) {
  const signature = await signer.signMessage(message);
  const address = await signer.getAddress();
  const recoveredAddress = ethers.verifyMessage(message, signature);

  return {
    signature,
    address,
    isValid: address.toLowerCase() === recoveredAddress.toLowerCase()
  };
}

Sign Structured Messages

async function signStructuredMessage(signer: ParaEthersSigner, data: any) {
  const message = JSON.stringify(data, null, 2);
  const signature = await signer.signMessage(message);
  const signerAddress = await signer.getAddress();
  const recoveredAddress = ethers.verifyMessage(message, signature);

  return {
    signature,
    isValid: signerAddress.toLowerCase() === recoveredAddress.toLowerCase()
  };
}

Next Steps