Developers

Status: SDK in development

Add quantum randomness and quantum-safe custody to any dApp.

TypeScript and Rust packages for randomness, vaults, PQ accounts and post-quantum messaging. The API below shows the intended shape and may change.

SDK packages

PackagePurpose
@bb84/corePQC primitives: Falcon-512, ML-DSA, ML-KEM, SPHINCS+
@bb84/rngRequest and check quantum randomness on Solana
@bb84/vaultFalcon vaults and smart accounts on Solana
@bb84/evmERC-4337 PQC accounts and verifiers
@bb84/proofRead and check QuantumJob records
@bb84/kemML-KEM encrypted messaging and files
@bb84/quantumKet bridge to cloud QPUs
bb84-anchorRust crate for CPI into bb84 programs

Install (when published):

npm install {{SDK_PACKAGE_NAME}}

TypeScript: five lines to quantum-safe (intended API)

const bb = new BB84({ cluster: "mainnet-beta" });
const r = await bb.rng.request({ bytes: 32 });          // value + proof.jobId
const vault = await bb.vault.create({ seed: r.value });
await vault.transfer({ to, amount });                    // Falcon-signed
const acct = await bb.evm.createAccount({ chain: "robinhood" });
const msg = await bb.kem.encrypt(recipientPubKey, "hello");

CLI (planned):

curl bb84.sh | sh

Solana programs: four programs, live on devnet

Anchor programs any dApp can read from or call. Every result is a plain account.

ProgramProductWhat it doesInstructions
qproofQPU job receiptsReceipts for QPU jobs: job ID hash, backend, circuit hash and result hash, posted by the relayer.initialize, set_relayer, record_job
qentropybb84 RNGCommit-reveal randomness seeded by QPU measurements, mixed with a slot hash sampled after the commitment. Providers stake and can be slashed.register_provider, open, sample, reveal, next, slash, close
qptbb84 Wallet & VaultQuantum Proof Table: Falcon-512 keys registered with their QPU receipt and slot, a vault with an irreversible Q-Day switch, and a Falcon smart account.register, enable_qday, withdraw, withdraw_pq, execute, execute_pq
qsimsolana-qsimQuantum circuits simulated inside a Solana program, to score a QPU's counts against the ideal result.simulate, simulate_receipt, init_state, apply, apply_range, score

Addresses

ProgramDevnetMainnet
qproof6pxqWGoxSRBwmL6GJie9BD43HGe3ybFu9xmJQ24TvcXB{{MAINNET_QPROOF_ADDRESS}}
qentropyFZXp8BVcsPZcE6ZP4wCYouMsupGEGKSZFwNfzNaoiQmm{{MAINNET_QENTROPY_ADDRESS}}
qptE4cwdChwHz3bqfeLUdJcRnPSsgKBEz7mwov1qCHgEmsK{{MAINNET_QPT_ADDRESS}}
qsim6sHufVFfaMwxPuDKxBuV8qZqNot8bJNgtFKhZKXHdhSw{{MAINNET_QSIM_ADDRESS}}

IDLs: {{IDL_URL}}

Integration: Ket ↔ Rust

  1. Rust oracle using Libket. The preferred path.
  2. Shared crate. bb84-types used by both oracle and programs.
  3. On-chain classical post-processing. Sifting, QBER, QAOA checks and commit-reveal in Rust.
  4. On-chain circuit simulator. Scores QPU results on-chain: up to 11 qubits in one transaction, 20 across transactions.

Open source: solana-qsim

The on-chain circuit simulator is public: fixed-point state vector, gate encoding, scoring and the qsim program. https://github.com/bb84sh/solana-qsim

An on-chain simulator is a quantum circuit simulator, not quantum computing on Solana. We label it that way everywhere.

See solana-qsim.


Did this page help you?