5-Minute Quick Start

Get your first PQC key pair generated, registered, and verified in under 5 minutes.

Supported Chains

QuantumSafe supports 19 chains across EVM and non-EVM ecosystems:
CategoryChains
MajorEthereum, Bitcoin, Solana
EVM L1BSC, Avalanche, Gnosis, Celo
EVM L2Base, Arbitrum, Optimism, Mantle, Blast, Sonic, Linea, Scroll
EVM L2 ZKPolygon, zkSync
Non-EVMSolana, Bitcoin, Cosmos, Tron
Non-EVM chains use different address formats: Solana (base58), Bitcoin (1/3/bc1 prefixes), Cosmos (cosmos1 prefix), Tron (T prefix). The SDK handles format validation automatically.

Step 1: Install the SDK

npm install @quantumsafe/sdk

Step 2: Initialize the Client

import { QuantumSafe } from "@quantumsafe/sdk";

const qs = new QuantumSafe({
  apiKey: "qs_sec_test_your_api_key_here",
  network: "testnet",
});

Step 3: Generate a PQC Key Pair

const keypair = await qs.keys.generate({
  algorithm: "ml-dsa-65",
  chain: "ethereum",
  format: "hex",
});

console.log("Public key:", keypair.publicKey);
// Private key is stored locally — never sent to the server
Key generation happens entirely on the client. The private key never leaves your device. Only the public key is registered with QuantumSafe.

Step 4: Scan a Wallet (Any Chain)

// Ethereum (EVM)
const ethScan = await qs.scan.wallet({
  address: "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18",
  chain: "ethereum",
});

// Solana (base58 address)
const solScan = await qs.scan.wallet({
  address: "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
  chain: "solana",
});

// Bitcoin (bc1 bech32 address)
const btcScan = await qs.scan.wallet({
  address: "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
  chain: "bitcoin",
});

Step 5: Sign a Message (Hybrid)

const attestation = await qs.sign.hybrid({
  message: "0xdeadbeef",
  ecdsaSignature: "0x...",      // Your existing ECDSA signature
  ecdsaPublicKey: "0x...",      // Your ECDSA public key
  pqcPrivateKey: keypair.privateKey,
  pqcPublicKey: keypair.publicKey,
  algorithm: "ml-dsa-65",
});

console.log("Attestation ID:", attestation.id);

Step 6: Verify the Attestation

const result = await qs.verify({
  attestationId: attestation.id,
});

console.log("Valid:", result.valid);
console.log("Algorithm:", result.algorithm);

Next Steps