Sign messages from EVM wallets
Use this for personal messages (personal_sign) from a user’s EVM wallet. Without it, each message goes to the user for review.
request-evm-message-signing.json
sign_message and has no chainId, because a message carries no network and a policy that names one never matches it. The SDKs sign messages from a user’s Cosmos wallet as EVM personal messages, so this template covers them too.
Test it on your Development key: sign a message from a test user’s wallet, approve the consent screen, then sign the message. Sign another message and it signs without a prompt.
Sign messages from Solana wallets
On Solana, Stellar and Sui, every message is a raw signature. Without a Request, each one goes to the user for review:While Permissions is on, raw signatures follow the same defaults as other signing requests: an app-owned wallet signs them, and a user-owned wallet sends them to the user for review. Rules that name the
raw_signature action, and rules with "actions": "all", can change that. Raw signatures are sign-raw requests, messages from Solana, Stellar and Sui wallets, and REST sign-message requests from a Cosmos wallet that do not pass walletType: "EVM". The SDKs sign messages from Cosmos wallets as EVM sign_message requests. Raw signatures carry no network a selector can name, so only a policy without chainId governs them. A rule that names raw_signature can read only para.wallet.* facts. The Developer Portal forms cannot create one, so write it in policy JSON, with Edit JSON in the Developer Portal or with the CLI.request-solana-message-signing.json
para.wallet.hasUserOwner is always true for the user-owned wallets a Request covers, so the rule matches every message.
Test it on your Development key: open the URL that
getPolicyConsentUrl returns for a test user and approve the consent screen. A message from that user’s Solana wallet then signs without a prompt.id and change walletType to STELLAR or SUI. Each wallet type needs its own policy and its own consent. Cosmos wallets need no copy, because the EVM template covers their messages.
Publish your message signing permissions
Users see yourdescription on the consent screen before anything else, so make sure it names the messages your app signs. Check how it reads on beta before you request a production review.