Calling window.phantom.solana.signMessage() with non-Solana, arbitrary bytes (a Cosmos SignDoc protobuf) is rejected with:
Error: You cannot sign solana transactions using sign message
repo
The payload is not a Solana transaction or message; it’s a Cosmos SDK SignDoc (arbitrary bytes) that we need signed with the wallet’s Ed25519 key for cross-chain flows. It looks like Phantom is heuristically detecting “transaction-like” bytes and blocking, but this triggers on unrelated binary formats.
This prevents Phantom from being used for legitimate, user-consented cross-chain signing scenarios where a raw Ed25519 signature (no Solana domain-separation) is required.
We need to sign only bytes with wallet, but there is no another api call, for reference we do not have problem with solflare wallet