How to Sign and Verify a Message

The primary function of a keypair is to sign messages, transactions and enable verification of the signature. Verification of a signature allows the recipient to be sure that the data was signed by the owner of a specific private key.

import {
  generateKeyPair,
  signBytes,
  verifySignature,
  getUtf8Encoder,
  getBase58Decoder,
} from "@solana/web3.js";
 
const keys = await generateKeyPair();
const message = getUtf8Encoder().encode("Hello, World!");
const signedBytes = await signBytes(keys.privateKey, message);
 
const decoded = getBase58Decoder().decode(signedBytes);
console.log("Signature:", decoded);
 
const verified = await verifySignature(keys.publicKey, signedBytes, message);
console.log("Verified:", verified);