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:
| Category | Chains |
|---|
| Major | Ethereum, Bitcoin, Solana |
| EVM L1 | BSC, Avalanche, Gnosis, Celo |
| EVM L2 | Base, Arbitrum, Optimism, Mantle, Blast, Sonic, Linea, Scroll |
| EVM L2 ZK | Polygon, zkSync |
| Non-EVM | Solana, 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