Skip to main content
Signing uses the active wallet session and does not submit a transaction. Signature verification uses the public wallet API. It can verify an explicit wallet without authentication.

Sign and verify a message

signMessage requires an active Ethereum wallet. Verification checks the active wallet’s address unless you pass walletAddress.

Verify an explicit wallet publicly

With walletAddress, verification needs no session, only the project’s publishable key.
This call is read-only and does not establish, restore, or change a wallet session.

Sign and verify a Solana message

For a selected Solana wallet, use the Solana-specific methods. Off-chain messages do not take a network because they are not cluster-specific.
Solana verification can also target an explicit walletAddress without a session. Signing still requires an active Solana wallet session.

Sign and verify a Tron message

For a selected Tron wallet, use the Tron-specific methods. Like Solana, they take no network argument.
Tron verification can also target an explicit Base58Check walletAddress without a session. Signing requires an active Tron wallet session.

Sign and verify typed data

typedData is typed as unknown in both public parameter interfaces. The SDK accepts a JSON-compatible typed-data object and converts nested bigint values to decimal strings for the wallet API. Use the same semantic typed data for signing and verification. With an explicit walletAddress, you can also verify a typed-data signature from a client that is signed out. For a Tron wallet, sign and verify TIP-712 typed data with signTronTypedData and isValidTronTypedDataSignature. They take no network; the typed-data domain identifies the chain. Address values in Tron typed data can be Base58Check addresses.
Every verification method returns Promise<boolean>. A false result means the signature did not validate for the supplied target and payload; request or response failures still throw SDK errors.