Qalnet: the fork, the fleet, the design · 03_qals_architecture/QALS_ARCHITECTURE.md
QALS — The qalarc Chain: Architecture Blueprint
Project: QALS / Qalnet — qalarc's own IOTA-derived coin, data-transfer network, and token economy Author: qalcode autonomous research session Date: 2026-09-06 Status: v1 draft (synthesised from live research + cloned IOTA source; see companion docs)
1. Vision
qalarc runs a family of applications (qalarc.com AI services, tradez.au, doof.ing, endispute.com.au, the Signal/WhatsApp agent hub, GPU compute rigs across a Tailscale fleet). Today these apps share no common ledger: credits, bills, data receipts, agent permissions and compute accounting all live in silos.
QALS is the connective tissue: one fast, fee-subsidised, object-based chain — forked from IOTA's own open-source node (itself Sui-lineage) — that lets every qalarc app, device, AI agent and user share:
- A currency —
QALS, used as pre-paid service credit, gas, and settlement rail. - A data layer — tamper-evident transfer and provenance of data between apps/agents.
- An identity layer — DIDs for humans and AI agents, with verifiable permissions.
- A compute ledger — escrow, tracking and settlement of compute jobs (GPU-hours as tradeable goods).
- A market — DeFi trading interface (Qalx), NFTs, and later a credit/stablecoin system (qAUD).
The original IOTA dream was "the backbone of IoT — machines paying machines, transferring data and value feelessly." That dream failed as a public network for many reasons (see
01_iota_deep_research/), but as a private/company network the exact same architecture is not just viable — it's ideal: we control the validator set, we subsidise gas for our users, and we inherit five years of hardened open-source engineering for free.
2. Naming system (qalarc brand theme)
| Thing | Name | Notes |
|---|---|---|
| The coin / token | QALS | "Qals" — as requested, in the qalarc family (qalarc, QalCode, qalhub) |
| Smallest unit (10⁻⁹) | doof | 1 QALS = 1,000,000,000 doofs. Homage to doof.ing. (IOTA has "nanos"; we have doofs.) |
| Ternary homage unit | trit | informal: 1 QALS = 3²⁰ trits ≈ joke unit for docs/merch (see ternary research doc) |
| The chain / network | Qalnet | private/consortium L1, fork of iotaledger/iota |
| Public testnet | Doofnet | public-facing faucet + demos |
| The DEX | Qalx | "the qalarc exchange" (see 05_defi_trading/) |
| Stablecoin (later) | qAUD | tokenized AUD claim, see 06_bank_exchange/ |
| Identity system | Qal ID | DID/VC layer, see 09_identity_ai/ |
| Gas-station / sponsorship service | Qal Pass | pays gas for app users so in-app UX feels feeless |
| Compute marketplace | Qal Compute | see 07_compute_marketplace/ |
| NFT family | Doofs, Gumleaf Edition | see 08_nft_strategy/ |
| Validator set nickname | The Fleet | superlocal, minirig, bb-mini, cachyos-x8664 + cloud nodes |
Total supply proposal: 4,600,000,000 QALS (9 decimals, smallest = doof) — a deliberate homage to IOTA's own rebased supply of 4.6B, and a comfortable size for credit-denominated usage (a doof of compute ≈ a micro-inference).
3. Strategic options — how to get an "IOTA-like" chain of our own
| Option | What | Pros | Cons | Verdict | |
|---|---|---|---|---|---|
| A | Deploy on IOTA mainnet/EVM | QALS as Move coin + ERC-20 on public IOTA (chain 8822 EVM) | Zero infra; instant trust; existing DeFi (Pools Finance), dApp-kit, Gas Station product | No sovereignty; QALS is a guest, not gas; public speculation we may not want pre-licensing | ✅ Phase 0 — prove demand, ship in weeks |
| B | Private fork of iotaledger/iota ("Qalnet") | Fork the Apache-licensed Rust node (Sui-lineage: Move VM + EVM + Mysticeti/Starfish DAG consensus + Delegated PoS) | Full control of supply, validators, fees, privacy; dual VM; object model is perfect for data/compute/identity objects; we inherit audits & 10 yrs of IOTA/Sui engineering | We own all ops; no public token liquidity (fine internally); Rust/Move skill needed | ✅ Phase 1–2 — the real ask |
| C | Run an ISC chain (wasp) on IOTA/Shimmer L1 | Spin up a smart-contract chain anchored to public IOTA | L1 security inheritance; Wasm contracts; wasp is open source | Confirmed dead end: Shimmer sunsets 30 Sept 2026 (block production stops; LayerZero bridge closed 29 Aug 2026; announced 23 July 2026 — see 01_iota_deep_research/SHIMMER_AND_DATA_TRANSFER.md). ISC is the obsolete pre-Rebased architecture |
❌ skip (dead end, now officially confirmed) |
| D | Build from scratch | Custom DAG chain | Max differentiation | Years of work, security risk, no ecosystem | ❌ never |
Decision: A → B. Start by deploying QALS on public IOTA (Move + EVM) as a live pilot with real tooling; in parallel fork the node into Qalnet and run it across the fleet; bridge Qalnet↔IOTA when the time comes. This mirrors exactly what IOTA itself did when it "rebased" onto Sui's design — we're rebasing onto theirs.
4. What we're forking (verified 2026-09-06)
repos/iota in this project = the live IOTA mainnet client. Key verified facts:
- It is a Sui fork. IOTA's own docs footer states the documentation is "adapted from the SUI Documentation, © 2024 SUI Foundation" and links MystenLabs/sui. The object-centric model, Move dialect, dApp-kit, and DeepBook-lineage tooling all carry over.
- Consensus: Mysticeti-class DAG BFT, now hardened as Starfish (whitepaper: https://eprint.iacr.org/2025/567, IOTA Foundation authors, last revision Apr 2026; live on IOTA mainnet since April 2026). Starfish makes uncertified DAG-BFT provably live (Push/Lazy-Push pacemakers), decouples payload from metadata via Reed-Solomon erasure coding + Data Availability Certificates (order-optimal linear payload communication), and carries full safety/liveness proofs. Slow parties "catch up" safely — exactly the property we want for a validator fleet that includes home machines on residential internet.
- Dual execution: native Move (objects, resources, safe assets) as the day-one VM, with EVM compatibility as a phased add-on — IOTA runs a fully EVM-compatible surface on its public network (chain 8822, "Magic Smart Contracts" bridgeless native↔ERC, LayerZero bridging, free RNG), but the EVM stack is not inside the
iotaledger/iotarepo (component map §fork notes): it's integrated separately (thewasprepo demonstrates the EVM-as-core-contract + JSON-RPC sidecar pattern at L2). Qalnet decision: Move-first; EVM surface in Phase 4+ via the same pattern if/when Solidity compatibility is actually needed. - Tokenomics primitives: Delegated PoS with validator subsidy minting, gas partially burned, optional tips, storage deposits refundable on object deletion — a neat fit for Qalnet where "data you anchor costs a deposit, deleting it refunds you".
- Product suite we inherit for free: Gas Station (sponsored transactions), Notarization, Audit Trails, Identity (DID/VC), Hierarchies (trust delegation: root authority → federation → accreditation → attestation, validatable off-chain via Rust/WASM).
- License: Apache-2.0 (Sui lineage; [component map doc] confirms — do not ship without re-checking LICENSE in the fork).
5. Qalnet design
5.1 Genesis parameters (proposal)
| Parameter | Value | Rationale |
|---|---|---|
| Chain name | qalnet-mainnet (v1: qalnet-dev-1) |
|
| Native coin | QALS, 9 decimals ("doof"); two classes: B-QALS (AU$1-reserve-backed, mint-on-deposit/burn-on-use — see QALS_BACKING_DESIGN.md) and G-QALS (fixed growth allocation) |
the AU$1 backing is structural, not promised |
| Total supply | 4,600,000,000 QALS, minted at genesis, no protocol inflation | Validator rewards from a dedicated allocation, not % inflation (simplest for accounting/tax) |
| Consensus | Inherited Mysticeti/Starfish, committee = validator set | BFT with instant finality; 3f+1 fault tolerance |
| Validators at launch | 4 (superlocal, qalcachyminirig, bb-mini, one cloud VM) | 4 validators tolerate 1 Byzantine fault (3f+1=4). Grow to 7 → tolerates 2. |
| Epoch length | 24h | key rotation / committee changes daily |
| Gas | fixed low price in QALS; 50% burned, 50% to validators | burn keeps ledger tidy; Qal Pass sponsors gas for end users |
| Storage deposit | refundable, small | discourages data spam, pays us nothing — good UX |
| EVM | enabled from genesis | Solidity tooling, MetaMask support day one |
| Anchoring | every checkpoint, post Qalnet state-root tx on public IOTA mainnet | tamper-evidence without running a full L2 bridge; "notarised by IOTA" story |
5.2 Supply allocation (4.6B QALS)
| Bucket | % | QALS | Vesting/use |
|---|---|---|---|
| Ecosystem & user rewards | 25% | 1.15B | faucet, cashback, compute rewards, community |
| Treasury (qalarc) | 20% | 0.92B | 4y programmatic; funds Qal Pass gas sponsorship |
| Team & founders | 15% | 0.69B | 4y linear, 1y cliff |
| Investors / partners | 10% | 0.46B | 3y linear, 1y cliff |
| Compute rewards pool | 10% | 0.46B | paid to compute providers over 10y (see 07) |
| Liquidity & Qalx seeding | 10% | 0.46B | LP positions QALS/qAUD etc. |
| Validator subsidy | 5% | 0.23B | epoch rewards to The Fleet + future external validators |
| Airdrop to qalarc app users | 5% | 0.23B | identity-gated (Qal ID) — also our identity pilot |
Legal note: QALS starts life as a prepaid service credit (buy QALS → spend on compute/AI services inside qalarc apps). That framing keeps Phase 1 inside "prepaid services" territory rather than "financial product" territory. Any public trading/listing is deliberately deferred until the AUSTRAC/licensing work in
06_bank_exchange/says it's safe. Not legal advice — take the plan to a fintech lawyer before any public sale.
5.3 The Fleet — validators on hardware we already own
| Machine | Tailscale IP | Role | Notes |
|---|---|---|---|
| superlocal (96GB RAM, AMD iGPU) | 100.73.134.20 | Validator #1 + full node + indexer | beefiest box; also runs dev faucet |
| qalcachyminirig | 100.121.212.116 | Validator #2 + compute provider | GPU node for Qal Compute |
| bb-mini | 100.68.213.66 | Validator #3 | mini PC — Starfish's lag-tolerance is designed for exactly this |
| cachyos-x8664 | 100.111.199.12 | Validator #4 (when online) or witness/sync node | often offline → prefer a $20/mo cloud VM for #4 and keep this as spare |
| Cloud VM ×1–3 (Hetzner/AWS syd) | public | Validator(s) + RPC gateway + explorer | geographic spread, public RPC endpoint |
Ops notes: validators behind Tailscale for p2p consensus traffic (private, authenticated, NAT-free — the fleet is already a mesh), with a public full-node/RPC gateway in the cloud for apps. Docker-compose per node from the fork's docker/ — the IOTA repo ships single-node/local-network tooling we keep intact for qalnet-dev-1.
5.4 Object model = our data model (why this chain, not an EVM L2)
The object-centric model means every business concept is a first-class on-chain object with an ID, owner, and version history:
// sketches — full module specs in companion docs
public struct DataAnchor has key, store {
id: UID, // object address
owner: address, // app or agent DID-controlled address
content_hash: vector<u8>, // sha3-256 of payload
uri: String, // where the (possibly encrypted/off-chain) payload lives
mime: String, // "application/json", "model/qal-tensor"...
anchored_at_ms: u64,
signature: vector<u8>, // producer's signature over hash (provenance)
}
public struct ComputeJob has key { /* see 07_compute_marketplace */ }
public struct CreditAccount has key { /* see 04_credit_token_platform */ }
public struct AgentCredential has key { /* see 09_identity_ai */ }
Objects can be owned (transfer like an NFT), shared (all apps read/write via consensus), or immutable (data anchors). Deletion refunds the storage deposit — so ephemeral data (job payloads) is cheap, permanent records (invoices, receipts) cost a small deposit forever. This is the "tangle spirit" — pay for data presence, not per-byte compute — reborn in an object ledger.
5.5 Data transfer layer ("the tangle for our data")
End-to-end pattern for app→app data with integrity + confidentiality:
- Payload (any bytes) stays off-chain: in Tailscale-hosted object storage (MinIO on the fleet) or on the sending machine.
- DataAnchor object goes on Qalnet: hash + URI + mime + producer signature (+ optional recipient). Consumers verify integrity and provenance without trusting the transport.
- Streams-style encryption (IOTA Streams is archived — we rebuild the pattern, not the code): per-channel key broadcast via the hub, payload keys derived per recipient; only the anchor is public. (See
01_iota_deep_research/SHIMMER_AND_DATA_TRANSFER.mdfor the full options analysis.) - Audit Trails product pattern: every anchor into an append-only per-subject trail → compliance-grade history (who saw what, when, signed by whom).
- Anchoring to public IOTA: a light relayer posts Qalnet checkpoint roots to IOTA mainnet → our private data ledger inherits public tamper-evidence. This is the modern replacement for IOTA's old "anchoring to Bitcoin" idea, done in-house.
5.6 Trust framework: Hierarchies for humans, agents and devices
We fork the IOTA Hierarchies pattern (their Rust/WASM libs are open source — component map will confirm; if usable directly, we embed them):
- Root Authority: qalarc issuer service (controls role definitions at genesis).
- Federation: "qalarc-apps" federation = {qalarc.com, tradez, doof, hub, compute}.
- Accreditations: e.g.
agent.hub.can-send-signal,agent.spend-cap: 50 QALS/day,device.minirig.can-run-jobs,user.kyc.tier-2(VC-anchored on Qalnet). - Attestations: every completed job/report/receipt emits one.
Off-chain WASM validation = apps check permissions locally in µs without a chain round-trip; on-chain validation only where money moves. This is exactly how we make AI agents safely hold wallets (see 09).
5.7 Move first, EVM later
- Move = system contracts (QALS, credits, compute, identity anchors, Qalx core). It's in the fork, day one.
- EVM = a compatibility surface for Solidity devs and MetaMask users, deliberately deferred (not in the base repo — see §4). When needed: deploy the EVM-as-core-contract pattern (as
waspdemonstrates) so an ERC-20 QALS representation exists without a token bridge. - Rule of thumb we adopt: value-creation logic in Move; compatibility shims in EVM.
- Value model note (see
QALS_BACKING_DESIGN.md): the native unit splits into B-QALS (minted only against AU$1 in the segregated Reserve, redeemable, burns on consumption) and G-QALS (growth allocation, FloorVault-supported). Phase 1 B-QALS are non-transferable credit — transferability is a legal gate (doc 06), not a technical one.
5.8 Wallets & UX
- Embed the IOTA dApp Kit (TS SDK) in every qalarc web app — "Connect Qal ID" button becomes as normal as "Sign in with Google".
- Mobile: qalarc apps embed wallet SDK; key material in Stronghold (IOTA's open-source secure storage — battle-tested by their wallet) wrapped by OS secure enclave.
- Qal Pass (our Gas Station): user transactions in-app are sponsored by the treasury bucket → users never see gas. Gaslessness inside our own ecosystem was the founding IOTA promise; in a private chain we can actually keep it.
6. Build plan (fork execution)
Step 0 — Recon (done): clones in repos/, component map in 01_iota_deep_research/IOTA_COMPONENT_MAP.md.
Step 1 — Local devnet (1–2 weeks):
- git clone repos/iota → qalnet ; rename crates/chains (their repo has crates/iota-..., network config, genesis builder). IOTA's own tooling for local multi-node networks is the starting point (docker compose + iota start-style commands — component map documents exact entry points).
- Custom genesis: 4.6B QALS to treasury address, validator keys for The Fleet, epoch params, EVM enabled.
- Ship: qalnet-dev-1 single node on superlocal, faucet CLI, explorer (fork IOTA's explorer).
Step 2 — The Fleet (2–4 weeks):
- Validators on superlocal + minirig + bb-mini + 1 cloud VM; consensus over Tailscale; public RPC via cloud gateway; monitoring (Prometheus/Grafana — IOTA node exports metrics).
- Publish qalctl (small CLI wrapping iota CLI with Qalnet config baked in).
Step 3 — Core contracts (4–8 weeks): Move packages: qal_framework (QALS utils), qal_data (DataAnchor + trails), qal_credit (accounts, metering, subscription streams), qal_compute (escrow + jobs), qal_id (DID anchoring + status lists), qal_pass (gas sponsorship rules).
Step 4 — Apps integrate (parallel): dApp-kit in qalarc web properties; hub agents get DID wallets; compute jobs start settling on-chain (they already have the GPU hardware and agents to do this).
Step 5 — Qalx + NFTs (after 04/05/08 docs): AMM → CLOB → aggregator; Doofs NFT drop as first consumer surface.
Step 6 — Public surfaces (when compliance clears): Doofnet public testnet, IOTA-mainnet deployment of QALS as bridged asset, qAUD stablecoin work per 06_bank_exchange/.
7. Risks & mitigations
| Risk | Severity | Mitigation |
|---|---|---|
| Fork maintenance (upstream IOTA moves fast) | Med | Track upstream monthly; Qalnet changes confined to genesis + qal_* Move packages (minimise core edits) |
| Validator outage (home machines on residential net) | Med | Starfish lag-tolerance by design; cloud validators in committee; alerts to Signal via the hub |
| Security bug in inherited code | Med | We inherit Sui/IOTA audits; still: pen-test before real value moves; bug bounty in QALS |
| Regulatory (token = financial product?) | High | Phase as prepaid credit; no public sale/listing until AUSTRAC path cleared (06_bank_exchange/) |
| Key management for agents | High | Stronghold + per-agent caps via Hierarchies credentials + revocation drills |
| Move/Rust expertise ramp | Med | The ecosystem's docs/workshops are excellent; start with small packages; keep EVM fallback |
| IOTA itself fails / abandons repo | Low-Med | It's Apache-2.0 and Sui-lineage — worst case we track MystenLabs/sui directly; our investment is portable |
8. What "Qals" inherits from IOTA vs what we drop
| IOTA concept | Qals decision |
|---|---|
| Feeless public DAG (old Tangle) | Drop as public tokenomics; keep the spirit via Qal Pass sponsorship in our owned network |
| Coordinator (central milestone issuer, pre-2025) | Never — we inherit real BFT consensus (Mysticeti/Starfish) |
| Ternary (Curl/trytes, 2015–2021) | Honour in branding only ("trit" joke unit); binary everywhere (see 02_ternary_systems/) |
| Move + object model + EVM (Rebased era) | Inherit wholesale — it's the fork |
| Gas Station, Identity, Hierarchies, Notarization, Audit Trails | Inherit + rebrand as Qal Pass / Qal ID / Qal Trust / Qal Notary / Qal Trails |
| Public Delegated PoS with external validators | Start private (The Fleet), open validator set only if/when QALS goes public |
| Anchoring (old: to Bitcoin; new: Qalnet → IOTA) | Adopt — cheap tamper-evidence |
9. Immediate next actions (this week)
- ✅ Research corpus cloned (
repos/, 16 repos, ~550MB) + org metadata indata/. - Read
01_iota_deep_research/IOTA_COMPONENT_MAP.md→ confirm license + private-network tooling entry points. qalnetfork repo init on GitHub (private), CI from upstream.- Stand up
qalnet-dev-1single-node on superlocal (docker). - Write
qal_data::DataAnchorMove package + anchor the first real payload from the agent hub. - Decision memo: QALS-on-public-IOTA pilot (Phase 0) — yes/no.
Companion documents: 01 (IOTA research), 02 (ternary), 04 (credit platform), 05 (Qalx DeFi), 06 (bank/exchange), 07 (compute), 08 (NFTs), 09 (identity/AI), 10 (roadmap).