Skip to content

Your First Transaction

Generate a quantum-safe wallet, fund it, and broadcast a real transaction on stagenet — all in the browser, under 60 seconds.

Stagenet only

These are throwaway keys on the staging network. No real value — a developer preview.


1. Open the playground

Go to soqu.org/playground. Everything runs client-side — your private key never leaves the browser.

2. Generate a wallet

Click Generate throwaway wallet. The playground calls SoqOnchain.mlDsaKeygen() to create an ML-DSA-44 (Dilithium) keypair locally, then derives a Bech32m address:

address = bech32m("ssq", 1, SHA256(pubkey₁₃₁₂))

Your address will start with ssq1p.... The keypair is stored in localStorage — it persists across page reloads but is discarded if you clear site data.

3. Fund from the faucet

Click Request faucet SOQ. The playground calls:

POST https://gateway.soqu.org/v1/faucet
{ "address": "ssq1p..." }

The faucet sends ~10 SOQ (1,000,000,000 shors). Wait ~60 seconds for the block to confirm, then click Refresh to see your balance.

4. Send a transaction

Enter a recipient address and amount, then click Send. Under the hood:

  1. Fetch UTXOsGET /v1/address/{address}/utxos
  2. Get fee rateGET /v1/feerate
  3. Build + signSoqOnchain.buildSignedSend() assembles the transaction and signs it with ML-DSA-44 (2,420-byte signature)
  4. BroadcastPOST /v1/tx with { "rawtx": "..." }

The node validates the witness-v1 format:

witness = [ sig₂₄₂₀ ‖ 0x01,        // SIGHASH_ALL
            0x00 ‖ pubkey₁₃₁₂ ]     // FIPS-204 form

sighash = BIP143, empty-context ML-DSA

Confirmation takes ~60 seconds (one block).


What just happened

You signed a real transaction with a NIST FIPS 204 lattice-based signature — the same standard the U.S. federal government mandates for post-quantum digital signatures. The private key never left your browser. The gateway assembled UTXO data; your browser did the signing.

Next steps