Scan Wallet

POST /v1/scan/wallet Analyze a blockchain address for quantum vulnerability across 19 supported chains. Returns a risk score (W1-W4), chain readiness grade, and detailed risk factors. Authentication: Publishable or Secret key (qs_pub_* or qs_sec_*)

Request

{
  "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18",
  "chain": "ethereum"
}

Parameters

FieldTypeRequiredDescription
addressstringYesBlockchain address to scan
chainstringNoChain identifier (default: auto-detect)

Supported Chains (19)

ValueCategoryDescription
ethereumMajorEthereum mainnet
bitcoinMajorBitcoin mainnet
solanaMajorSolana mainnet
baseEVM L2Base (Coinbase L2)
arbitrumEVM L2Arbitrum One
optimismEVM L2Optimism mainnet
polygonEVM L2 ZKPolygon PoS
zksyncEVM L2 ZKzkSync Era
lineaEVM L2Linea mainnet
scrollEVM L2Scroll mainnet
gnosisEVM L1Gnosis Chain
celoEVM L1Celo mainnet
mantleEVM L2Mantle mainnet
blastEVM L2Blast mainnet
sonicEVM L2Sonic (prev. Fantom)
bscEVM L1BNB Smart Chain
avalancheEVM L1Avalanche C-Chain
cosmosNon-EVMCosmos Hub
tronNon-EVMTron mainnet

Address Validation Rules

Chain TypeFormatExample
EVM chains0x + 40 hex chars0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18
SolanaBase58, 32-44 chars9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
Bitcoin1/3/bc1 prefixbc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
Cosmoscosmos1 prefix (bech32)cosmos1xy2kgdygjrsqtzq2n0yrf2493p83kkfj6mvnqd
TronT prefix (base58check)TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW

Request Examples

EVM Chain (Ethereum)

curl -X POST https://api.qsafe.dev/v1/scan/wallet \
  -H "Authorization: Bearer qs_pub_live_pk_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18",
    "chain": "ethereum"
  }'

Solana

curl -X POST https://api.qsafe.dev/v1/scan/wallet \
  -H "Authorization: Bearer qs_pub_live_pk_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "address": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
    "chain": "solana"
  }'

Bitcoin

curl -X POST https://api.qsafe.dev/v1/scan/wallet \
  -H "Authorization: Bearer qs_pub_live_pk_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
    "chain": "bitcoin"
  }'

Cosmos

curl -X POST https://api.qsafe.dev/v1/scan/wallet \
  -H "Authorization: Bearer qs_pub_live_pk_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "address": "cosmos1xy2kgdygjrsqtzq2n0yrf2493p83kkfj6mvnqd",
    "chain": "cosmos"
  }'

Tron

curl -X POST https://api.qsafe.dev/v1/scan/wallet \
  -H "Authorization: Bearer qs_pub_live_pk_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "address": "TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW",
    "chain": "tron"
  }'

Response 200 OK

EVM Chain Response

{
  "data": {
    "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18",
    "chain": "ethereum",
    "riskScore": "W3",
    "riskLabel": "High",
    "riskValue": 72,
    "chainGrade": "D",
    "chainGradeLabel": "No PQC activity",
    "publicKeyExposed": true,
    "balanceAtRisk": "15.42 ETH",
    "balanceAtRiskUsd": 48250.00,
    "riskFactors": [
      {
        "factor": "public_key_exposure",
        "weight": 0.35,
        "score": 95,
        "detail": "Public key exposed in 142 outbound transactions"
      },
      {
        "factor": "balance_at_risk",
        "weight": 0.25,
        "score": 70,
        "detail": "15.42 ETH ($48,250) held in exposed address"
      },
      {
        "factor": "transaction_frequency",
        "weight": 0.15,
        "score": 60,
        "detail": "142 transactions in the last 12 months"
      },
      {
        "factor": "address_type",
        "weight": 0.15,
        "score": 50,
        "detail": "EOA address — no hash protection layer"
      },
      {
        "factor": "address_reuse",
        "weight": 0.10,
        "score": 85,
        "detail": "Single address used for all transactions"
      }
    ],
    "chainFactors": [
      {
        "factor": "pqc_migration_plan",
        "status": "none",
        "detail": "No official PQC migration plan announced"
      },
      {
        "factor": "signature_scheme",
        "status": "vulnerable",
        "detail": "ECDSA (secp256k1) — vulnerable to Shor's algorithm"
      },
      {
        "factor": "community_activity",
        "status": "active",
        "detail": "EIP discussions on PQC account abstraction"
      }
    ],
    "scannedAt": "2026-01-15T10:30:00Z"
  },
  "meta": {
    "requestId": "req_xyz789",
    "timestamp": "2026-01-15T10:30:00Z"
  }
}

Solana Response (Non-EVM Differences)

{
  "data": {
    "address": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
    "chain": "solana",
    "riskScore": "W2",
    "riskLabel": "Medium",
    "riskValue": 45,
    "chainGrade": "F",
    "chainGradeLabel": "Public key exposed by address format. No PQC plan.",
    "publicKeyExposed": true,
    "balanceAtRisk": "120.5 SOL",
    "balanceAtRiskUsd": 15200.00,
    "riskFactors": [
      {
        "factor": "public_key_exposure",
        "weight": 0.35,
        "score": 40,
        "detail": "Solana address is the public key — always exposed (baseline 40)"
      },
      {
        "factor": "balance_at_risk",
        "weight": 0.25,
        "score": 55,
        "detail": "120.5 SOL ($15,200) held in address"
      },
      {
        "factor": "transaction_frequency",
        "weight": 0.15,
        "score": 40,
        "detail": "35 transactions in the last 12 months"
      },
      {
        "factor": "address_type",
        "weight": 0.15,
        "score": 70,
        "detail": "Ed25519 public key address — no hash protection"
      },
      {
        "factor": "address_reuse",
        "weight": 0.10,
        "score": 30,
        "detail": "Standard single-address usage"
      }
    ],
    "chainFactors": [
      {
        "factor": "pqc_migration_plan",
        "status": "none",
        "detail": "No PQC migration plan. EdDSA (Ed25519) vulnerable to Shor's algorithm."
      },
      {
        "factor": "signature_scheme",
        "status": "vulnerable",
        "detail": "EdDSA (Ed25519) — vulnerable to Shor's algorithm"
      },
      {
        "factor": "address_format_exposure",
        "status": "vulnerable",
        "detail": "Address = public key. All addresses inherently exposed."
      }
    ],
    "scannedAt": "2026-01-15T10:31:00Z"
  },
  "meta": {
    "requestId": "req_abc456",
    "timestamp": "2026-01-15T10:31:00Z"
  }
}

Bitcoin Response (UTXO Model)

{
  "data": {
    "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
    "chain": "bitcoin",
    "riskScore": "W1",
    "riskLabel": "Low",
    "riskValue": 18,
    "chainGrade": "D",
    "chainGradeLabel": "No PQC activity",
    "publicKeyExposed": false,
    "balanceAtRisk": "0.85 BTC",
    "balanceAtRiskUsd": 52000.00,
    "riskFactors": [
      {
        "factor": "public_key_exposure",
        "weight": 0.35,
        "score": 0,
        "detail": "Bech32 address with unspent UTXOs only — public key hash-protected"
      },
      {
        "factor": "balance_at_risk",
        "weight": 0.25,
        "score": 72,
        "detail": "0.85 BTC ($52,000) in hash-protected UTXOs"
      },
      {
        "factor": "transaction_frequency",
        "weight": 0.15,
        "score": 0,
        "detail": "Receive-only address, no outbound transactions"
      },
      {
        "factor": "address_type",
        "weight": 0.15,
        "score": 35,
        "detail": "P2WPKH (bech32) — witness hash protection"
      },
      {
        "factor": "address_reuse",
        "weight": 0.10,
        "score": 0,
        "detail": "No outbound transaction reuse"
      }
    ],
    "chainFactors": [
      {
        "factor": "pqc_migration_plan",
        "status": "none",
        "detail": "No official PQC migration plan. BIP discussions ongoing."
      },
      {
        "factor": "signature_scheme",
        "status": "vulnerable",
        "detail": "ECDSA (secp256k1) — vulnerable to Shor's algorithm"
      },
      {
        "factor": "utxo_model",
        "status": "protective",
        "detail": "UTXO model: unspent outputs have hash-protected public keys"
      }
    ],
    "scannedAt": "2026-01-15T10:32:00Z"
  },
  "meta": {
    "requestId": "req_def789",
    "timestamp": "2026-01-15T10:32:00Z"
  }
}

Response Fields

FieldTypeDescription
addressstringScanned address
chainstringDetected or specified chain
riskScorestringRisk category: W1, W2, W3, or W4
riskLabelstringHuman-readable label: Low, Medium, High, Critical
riskValuenumberNumeric risk score (0-100)
chainGradestringChain readiness grade: A, B, C, D, or F
chainGradeLabelstringHuman-readable grade description
publicKeyExposedbooleanWhether the public key has been revealed on-chain
balanceAtRiskstringNative token balance in the address
balanceAtRiskUsdnumberUSD equivalent of balance at risk
riskFactorsarrayDetailed breakdown of address-level risk factors
chainFactorsarrayChain-level PQC readiness factors
scannedAtstringISO 8601 scan timestamp

Risk Factor Object

FieldTypeDescription
factorstringFactor identifier
weightnumberWeight in composite score (0-1)
scorenumberIndividual score (0-100)
detailstringHuman-readable explanation

Chain Factor Object

FieldTypeDescription
factorstringFactor identifier
statusstringStatus: active, planned, none, vulnerable, protective
detailstringHuman-readable explanation

Errors

CodeDescription
AUTH_001Missing API key
SCAN_001Invalid address format
SCAN_002Unsupported chain
SCAN_003Address not found (no on-chain activity)
SCAN_004Chain data temporarily unavailable
RATE_001Rate limit exceeded