Skip to main content
Sign plain text messages using Para’s secure signing infrastructure.

Prerequisites

You need Web3 libraries configured with Para authentication.

Setup Web3 Libraries

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