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:
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:
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:
- Fetch UTXOs —
GET /v1/address/{address}/utxos - Get fee rate —
GET /v1/feerate - Build + sign —
SoqOnchain.buildSignedSend()assembles the transaction and signs it with ML-DSA-44 (2,420-byte signature) - Broadcast —
POST /v1/txwith{ "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¶
- SDK reference — the full TypeScript API
- RPC API — direct node communication
- Transaction format — byte-level witness anatomy
- Mining overview — mine SOQ with your Scrypt hardware