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, just 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, so 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