Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.startale.com/llms.txt

Use this file to discover all available pages before exploring further.

Two signing methods are supported.
MethodUse for
personal_signPlain-string messages, login challenges, terms acknowledgements
eth_signTypedData_v4Structured EIP-712 data, orders, permits, domain-bound consent
Signatures are produced by the user’s smart account. They are ERC-1271 compatible and verifiable off-chain with viem’s verifyMessage or verifyTypedData.

Sign a string

import { useAccount, useSignMessage } from 'wagmi'

const { signMessageAsync } = useSignMessage()
const signature = await signMessageAsync({
  message: 'I acknowledge the airdrop terms.',
})
With the raw provider:
const signature = await provider.request({
  method: 'personal_sign',
  params: [stringToHex('I acknowledge the airdrop terms.'), address],
})

Sign typed data

import { useSignTypedData } from 'wagmi'

const { signTypedDataAsync } = useSignTypedData()
const signature = await signTypedDataAsync({
  domain: {
    name: 'My App',
    version: '1',
    chainId: 1868,
    verifyingContract: '0x...',
  },
  types: {
    Order: [
      { name: 'item', type: 'string' },
      { name: 'amount', type: 'uint256' },
    ],
  },
  primaryType: 'Order',
  message: { item: 'Pass', amount: 1n },
})

Verify a signature offchain

Use viem. Smart-account signatures are resolved automatically, no special handling required.
import { publicClient } from './viem'

const isValid = await publicClient.verifyMessage({
  address,
  message: 'I acknowledge the airdrop terms.',
  signature,
})
For typed data, use verifyTypedData.

Counterfactual signatures

Before a smart account is deployed on a given chain, signatures are wrapped per ERC-6492. The wrapping is transparent: verifiers that support 6492, including viem, accept both wrapped and unwrapped signatures. If you write your own verifier, look up “ERC-6492 magic byte”. The suffix 0x6492649264926492… indicates an undeployed account; unwrap the signature before validation.