Wallet Verification
The Wallet Verification step allows users to prove ownership of their cryptocurrency wallet addresses by connecting their wallet and signing a cryptographic message. This provides a secure and decentralized way to verify wallet ownership without exposing private keys.
Supported Blockchains
The wallet verification step supports the following blockchain networks:
- Ethereum (Mainnet)
- Solana (Mainnet)
- Ethereum Testnet (Sepolia)
- Solana Testnet (Devnet)
How It Works
The wallet verification process follows these steps:
- Wallet Connection: The user connects their crypto wallet using a compatible wallet provider (e.g., MetaMask, Phantom, WalletConnect).
- Message Generation: The system generates a unique cryptographic message that includes:
- Domain information
- Verification request details
- Timestamp and expiration time (5 minutes)
- Unique nonce for security
- Message Signing: The user signs the generated message with their wallet's private key.
- Signature Verification: The system verifies the signature cryptographically to confirm wallet ownership.
- Result Storage: Upon successful verification, the wallet address, chain, signed message, and signature are securely stored.
Customize Settings
General Details
- Name: The name of the flow step. It will be used to identify the step in the flow.
- Chains: Select one or more blockchain networks that users can use for wallet verification. You can allow multiple chains to give users flexibility in choosing their preferred network.
- Success Button Label: A custom label for the Continue button that is shown once the step is completed.
Security Features
The wallet verification implements several security measures:
- Message Expiration: Generated messages expire after 5 minutes to prevent replay attacks.
- Rate Limiting: Signature verification is rate-limited to 5 attempts per minute per verification request.
- Domain Verification: The system validates that the message domain matches the expected domain.
- URI Validation: The verification ensures the message URI corresponds to the correct verification request.
- Nonce Generation: Each message includes a unique nonce to prevent message reuse.
Technical Details
The wallet verification step uses the SIWX (Sign-In With X) standard, which provides a blockchain-agnostic approach to wallet-based authentication. The implementation supports:
- Ethereum chains: Uses SECP256K1 signature verification
- Solana chains: Uses ED25519 signature verification
Use Cases
Wallet verification is particularly useful for:
- DeFi Platforms: Verify user wallet ownership for decentralized finance applications
- NFT Marketplaces: Confirm wallet ownership before allowing trading or minting
- Token Gating: Verify wallet addresses to gate access to exclusive content or services
- Compliance: Add wallet verification as part of a comprehensive KYC flow
- Airdrop Eligibility: Verify wallet ownership for token distribution
Configuration Example

Webhook Payload
When a wallet verification is completed, a webhook is triggered (if configured in the flow settings) with the following information:
- Verification request details
- Wallet address
- Blockchain network used
- Signed message
- Signature
- Verification timestamp
Best Practices
- Multiple Chain Support: Enable multiple blockchain networks to accommodate users with different wallet preferences.
- Clear Instructions: Provide clear guidance to users about which wallets are supported for each chain.
- Error Handling: Inform users if their signature verification fails and allow them to retry.
- Combine with Other Steps: Consider combining wallet verification with document verification for enhanced KYC/KYB processes.
Notes
- The verification message must be signed within 5 minutes of generation.
- Each wallet address can be verified once per verification request.
- The signed message and signature are stored for audit purposes.
- Testnet chains should only be used for development and testing purposes.