Your First Transaction¶
Get a quantum-safe wallet, receive SOQ, and send a real transaction on Soqucoin mainnet.
Mainnet: real value
SOQ on mainnet is real. Write down your 24 recovery words before you receive anything, keep them offline, and send a small amount first when you pay someone new.
1. Get a wallet¶
Install SoquShield, the self-custodial Soqucoin wallet: Google Play on Android, and on iOS TestFlight while the App Store listing completes review. Keys are generated and stored on your device, and a new wallet is created on Mainnet. See soqu.org/soqushield.
You can also generate a wallet in the browser at soqu.org/wallet. The derivation is the same as the app's, so the same 24 words restore the same address in SoquShield.
Your address starts with sq1p:
2. Receive SOQ¶
There is no mainnet faucet. You get SOQ in one of two ways:
- Mine it. Point Scrypt hardware at SOQUPOOL and set your
sq1paddress as the payout address. See the Pool Mining guide. - Be paid. Share your address, as text or as the QR code SoquShield shows under Receive.
3. Send a transaction¶
In SoquShield, open Send, paste or scan the recipient's address, enter the amount, review, and confirm. The app builds the transaction and signs it with your ML-DSA-44 key on the device; the key never leaves it.
Each transaction in Activity opens in the public block explorer at explorer.soqu.org.
For developers: the same transaction in code¶
The TypeScript SDK does the same work client-side:
- Keys and address:
onchain.mlDsaKeygen()creates an ML-DSA-44 keypair locally; regenerate it if the public key's first byte is0xFF, which the node rejects (details).onchain.deriveAddress(publicKey, "sq")gives the mainnet address. - Unspent outputs: list the address's UTXOs from your own infrastructure. The Go SDK's Exchange Integration guide describes an address indexer;
gettxoutconfirms each output against your node's UTXO set. - Build + sign:
onchain.buildSignedSend({ hrp: "sq", ... })assembles the transaction and signs it with ML-DSA-44 (2,420-byte signature). - Broadcast through your own node:
The node validates the witness-v1 format:
witness = [ sig₂₄₂₀ ‖ 0x01, // SIGHASH_ALL
0x00 ‖ pubkey₁₃₁₂ ] // FIPS-204 form
sighash = BIP143, empty-context ML-DSA
Blocks are targeted 60 seconds apart, so a transaction usually confirms within a few minutes.
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 device or your browser.
Next steps¶
- SDK reference: the full TypeScript API
- Install & run a node: broadcast through your own node
- RPC API: direct node communication
- Transaction format: byte-level witness anatomy
- Mining overview: mine SOQ with your Scrypt hardware