Skip to content
LogoLogo

verifyMessage

Verify that a message was signed by the provided address.

Supports verification of:

  • Externally Owned Accounts
  • Smart Contract Accounts:

Usage

// @filename: client.ts
import 'viem/window'
// ---cut---
import { createPublicClient, createWalletClient, custom, http } from 'viem'
import { mainnet } from 'viem/chains'
 
export const publicClient = createPublicClient({
  chain: mainnet,
  transport: http()
})
 
export const walletClient = createWalletClient({
  transport: custom(window.ethereum!)
})
 
↓ JSON-RPC Account
export const [account] = await walletClient.getAddresses()
 
↓ Local Account
// export const account = privateKeyToAccount(...)
// @filename: example.ts
// ---cut---
import { account, walletClient, publicClient } from './client'
 
const signature = await walletClient.signMessage({
  account,
  message: 'hello world',
})
const valid = await publicClient.verifyMessage({
  address: account.address,
  message: 'hello world',
  signature,
})
true

Returns

boolean

Whether the signed message is valid for the given address.

Parameters

address

The Ethereum address that signed the original message.

const  = await .({
  : '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', 
  : 'hello world',
  :
    '0x66edc32e2ab001213321ab7d959a2207fcef5190cc9abb6da5b0d2a8a9af2d4d2b0700e2c317c4106f337fd934fbbb0bf62efc8811a78603b33a8265d3b8f8cb1c',
})

message

  • Type: string

The message to be verified.

By default, viem verifies the UTF-8 representation of the message.

const  = await .({
  : '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
  : 'hello world', 
  :
    '0x66edc32e2ab001213321ab7d959a2207fcef5190cc9abb6da5b0d2a8a9af2d4d2b0700e2c317c4106f337fd934fbbb0bf62efc8811a78603b33a8265d3b8f8cb1c',
})

To verify the data representation of the message, you can use the raw attribute.

const  = await .({
  : '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
  : { : '0x68656c6c6f20776f726c64' }, 
  :
    '0x66edc32e2ab001213321ab7d959a2207fcef5190cc9abb6da5b0d2a8a9af2d4d2b0700e2c317c4106f337fd934fbbb0bf62efc8811a78603b33a8265d3b8f8cb1c',
})

signature

  • Type: Hex | ByteArray | Signature

The signature that was generated by signing the message with the address's signer.

const  = await .({
  : '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
  : 'hello world',
  : 
    '0x66edc32e2ab001213321ab7d959a2207fcef5190cc9abb6da5b0d2a8a9af2d4d2b0700e2c317c4106f337fd934fbbb0bf62efc8811a78603b33a8265d3b8f8cb1c', 
})