Skip to main content

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:

  1. Wallet Connection: The user connects their crypto wallet using a compatible wallet provider (e.g., MetaMask, Phantom, WalletConnect).
  2. 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
  3. Message Signing: The user signs the generated message with their wallet's private key.
  4. Signature Verification: The system verifies the signature cryptographically to confirm wallet ownership.
  5. 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

Wallet Verification Configuration
Example of wallet verification step configuration

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

  1. Multiple Chain Support: Enable multiple blockchain networks to accommodate users with different wallet preferences.
  2. Clear Instructions: Provide clear guidance to users about which wallets are supported for each chain.
  3. Error Handling: Inform users if their signature verification fails and allow them to retry.
  4. 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.