1. Unhosted Wallet Intro
Unhosted Wallet Verification validates wallet ownership based on a signature proof from a user's personal (unhosted) wallet.
- Principles: Ownership is confirmed by verifying a signature generated with the user's private key for a specific message. VASP validates this signature to ensure the user has full control over the wallet.
- Security: This process utilizes ECDSA (secp256k1) and keccak256 hashing. By using the ecrecover to derive the address directly from the signature, the system ensures that ownership claims are cryptographically secure and impossible to forge.
- Prerequisites: To use this feature, please contact the CodeVASP team for activation. You can reach out via partnership@codevasp.com or your designated Slack channel.
Integration Workflow
- Token Issuance: Request and receive an Access Token and a Session ID from the CodeVASP server. These credentials are required to authorize the verification process.
- Widget Execution: Render the verification widget on the user's screen using the issued token. The widget provides a seamless UI for users to connect their wallets and sign messages.
- Verification Result Processing: Once verification is complete, you can retrieve the results by either receiving real-time updates via a pre-registered callback or manually querying the status using the Session ID.
Before Integration
Headers
Every API request must include the following mandatory headers. These headers should be generated using either the CodeVASP Cipher or a separate encryption/decryption module.
- X-Code-Req-PubKey
- X-Code-Req-Signature
- X-Code-Req-Datetime
- X-Code-Req-Nonce
- X-Request-Origin
Host
Creating a Webhook
Create a webhook endpoint on your server to receive data. Once deployed, ensure the URL is publicly accessible. If you prefer to restrict access for security, please add the following CodeVASP IP addresses to your whitelist:
- Dev:
3.35.100.55/32,13.209.222.19/32,211.187.7.130/32 - Prod:
3.37.135.89/32
Supported Networks
Below is the list of networks available for Unhosted Wallet Verification. Please map the value from the network field to the blockchain field when requesting a token. If you require a network that is not listed, please contact us.
[
{
"network": "ETH",
"name": "Ethereum"
},
{
"network": "ARBITRUM",
"name": "Arbitrum One"
},
{
"network": "BASE",
"name": "Base"
},
{
"network": "KAIA",
"name": "Kaia"
},
{
"network": "MATIC",
"name": "Polygon"
},
{
"network": "SOL",
"name": "Solana"
},
{
"network": "BSC",
"name": "BNB Smart Chain"
}
]