Transaction Format¶
Soqucoin uses a UTXO transaction model based on Bitcoin's, with one critical difference: every signature is ML-DSA-44 (NIST FIPS 204) instead of ECDSA. This page documents the byte-exact witness format accepted by soqucoind on the live stagenet.
Witness-v1 layout¶
Every Soqucoin spend carries a witness with exactly two stack items:
witness = [ sig₂₄₂₀ ‖ 0x01, // Item 1: signature + SIGHASH_ALL
0x00 ‖ pubkey₁₃₁₂ ] // Item 2: key type + public key
| Field | Size (bytes) | Description |
|---|---|---|
sig |
2,420 | ML-DSA-44 signature (FIPS 204) |
0x01 |
1 | SIGHASH_ALL flag |
0x00 |
1 | Key type byte (ML-DSA-44 / FIPS-204 form) |
pubkey |
1,312 | ML-DSA-44 public key |
Total witness size: 3,734 bytes per input.
Sighash computation¶
Soqucoin uses BIP-143 sighash with empty-context ML-DSA signing:
- Compute the BIP-143 sighash digest (same algorithm as Bitcoin SegWit v0)
- Sign with ML-DSA-44 using an empty context string (per FIPS 204 §4.2)
- Append
SIGHASH_ALL(0x01) to the signature
Address scheme¶
Addresses use Bech32m encoding (BIP-350):
address = bech32m(hrp, witness_version, witness_program)
hrp = "ssq" (stagenet) / "soq" (mainnet)
witness_version = 1
witness_program = SHA-256(pubkey₁₃₁₂) // 32 bytes
Example: ssq1p7wk3v5f4e2r8n6h9a1c4d7g0j3m6q2t5x8...
Units¶
| Unit | Value |
|---|---|
| 1 SOQ | 100,000,000 shors |
| 1 shor | smallest unit (like satoshis) |
MAX_MONEY = 100,000,000,000 SOQ — this is a validation constant, not a supply cap (Soqucoin has perpetual tail emission).
UTXO model¶
Soqucoin transactions consume unspent outputs (UTXOs) and create new ones, exactly like Bitcoin. Key differences:
- No legacy address types. All addresses are witness-v1 (Bech32m).
- Larger witness. ML-DSA-44 signatures are 2,420 bytes (vs 72 bytes for ECDSA). PAT batch verification compresses this at the block level.
- 60-second blocks. Target block time is 60 seconds (vs Bitcoin's 10 minutes).
- Coinbase maturity. 100 blocks before coinbase outputs are spendable.
Verification¶
This witness format is:
- Byte-exact against soqucoind consensus (node-proven)
- Accepted live on stagenet (TS E2E PASS, 2026-06-20)
- Audited by Halborn (30 findings, all remediated)
Next steps¶
- SDK reference — build and sign transactions with the TypeScript SDK
- RPC API reference — query UTXOs and broadcast directly
- Address scheme — full Bech32m derivation details
- ML-DSA-44 specification — the signature algorithm