QALS Wiki · the qalarc networkgenerated 2026-09-06 · qalcode autonomous research

The day-1 pull list from IOTA's repos · 01_iota_deep_research/IOTA_TECH_EXTRACTION.md

IOTA TECH EXTRACTION MANIFEST

QALS / Qalnet build — concrete shopping list. Generated 2026-09-06. Every path below was verified against the shallow clones in repos/ on this date (via directory listing); "unverified" is flagged explicitly where a path is not in our clones and must be fetched upstream.

Use-decision vocabulary: USE-AS-IS (build against it unchanged) · FORK+REBRAND (copy, rename IOTA→QALS/qalnet) · PATTERN (re-implement the design, don't copy code) · REF (read-only reference) · DROP (do not pull).

Blanket license note: everything in repos/ is Apache-2.0 (confirmed in component map + repo LICENSE files) except iota.go (MIT) and docs (no license — dead anyway). Apache-2.0 is fork-friendly: keep NOTICE/attributions, relicense our modifications as we like. Re-check LICENSE in every crate before shipping a public binary.


⚡ DAY-1 PULL LIST — the 10 things we literally copy in week one

# Pull From Into
1 The whole node repo → rename to qalnet repos/iota new private GitHub repo
2 Private-network docker stack repos/iota/dev-tools/iota-private-network/ + pg-services-local/ qalnet/dev-tools/ (unchanged at first)
3 One-command devnet (iota-localnet start --force-regenesis --with-faucet --committee-size 4) repos/iota/crates/iota-localnet/ used as-is for qalnet-dev-1
4 Genesis builder → mint 4.6B QALS, Fleet validator keys, epoch params repos/iota/crates/iota-genesis-builder/ (+ iota-genesis-common/) config + a qalnet-genesis script
5 Move framework (coin, balance, pay, kiosk, display, transfer_policy) → fork as qal_framework, rename IOTA→QALS, 9-dec "doof" repos/iota/crates/iota-framework/packages/ qal_framework Move package
6 In-tree Rust SDK for qalctl + fleet tooling repos/iota/crates/iota-sdk/, iota-rust-sdk/, iota-keys/, iota-transaction-builder/ dependency of qalctl
7 Indexer + GraphQL + Docker images → explorer/RPC backend on the cloud VM repos/iota/crates/iota-indexer/, crates/iota-graphql-rpc/, docker/ compose deployment
8 Identity stack → Qal ID (agent + human DIDs, VCs, revocation) repos/identity.rs (crates identity_iota, identity_storage, identity_stronghold, identity_credential) service crate in qalarc infra
9 Stronghold vault → agent & wallet key storage repos/stronghold.rs (client/, engine/, stm/) pinned dependency
10 Faucet + RPC hardening for Doofnet/gateway repos/iota/crates/iota-faucet/, crates/iota-traffic-controller/, crates/iota-metrics/ gateway node deployment

1. Core node — repos/iota (the fork itself)

Apache-2.0, 104-crate Rust workspace, daily upstream activity (last commit 2026-09-04). Confirmed Sui-lineage (~2,023 files carry Mysten Labs copyright). This is Option B: FORK+REBRAND wholesale.

1.1 Consensus & execution

Verified path What it does QALS use License
crates/starfish/core/ Starfish DAG-BFT consensus (IOTA's own, evolved from Mysticeti; live on mainnet since Apr 2026; provably liveness-tolerant of slow/home validators — exactly The Fleet's profile) USE-AS-IS (part of fork) Apache-2.0
crates/starfish/config/, simtests/, dag-visualizer-proto/ Consensus config, simulation tests, DAG visualiser USE-AS-IS; visualiser is great for ops dashboards Apache-2.0
crates/iota-core/ Validator/authority logic: tx ordering, epoch state, consensus adapters USE-AS-IS Apache-2.0
crates/iota-node/ The validator binary FORK+REBRAND binary name → qalnet-node Apache-2.0
crates/iota-types/ (+ gas_model/) Objects, txs, effects, computation+storage gas duality USE-AS-IS Apache-2.0
crates/iota-execution/ (+ latest/iota-adapter, iota-move-natives, iota-verifier) Chain↔Move-VM adapter USE-AS-IS Apache-2.0
crates/typed-store/ (+ -derive, -error) RocksDB wrapper (from Sui) USE-AS-IS Apache-2.0
crates/iota-authority-aggregation/ BFT signature aggregation USE-AS-IS Apache-2.0

1.2 Move framework & language

Verified path What it does QALS use License
crates/iota-framework/packages/iota-framework/sources/ Move stdlib: coin.move, iota.move (gas coin → rename to qals.move), balance, pay, bag/table/vec_set, display.move, token, timelock, deny_list, authenticator_state, crypto/, kiosk/ (incl. kiosk/transfer_policy.move — verified), package_metadata FORK+REBRAND → qal_framework Apache-2.0
crates/iota-framework/packages/iota-system/ On-chain system state: genesis.move, staking_pool.move, storage_fund.move (refundable storage deposits — our data-anchor economics), validator*.move, voting_power.move FORK+REBRAND (adjust supply/allocations) Apache-2.0
crates/iota-framework/packages/move-stdlib/ Core Move stdlib USE-AS-IS Apache-2.0
crates/iota-framework/packages/stardust/ UTXO-emulation modules (alias, unlock conditions) for legacy migration DROP as code; REF only Apache-2.0
external-crates/move/ Complete vendored Mysten Move monorepo (~60 crates: VM runtime, compiler, verifier, prover, CLI) USE-AS-IS (vendored — do not de-vendor) Apache-2.0
crates/iota-move/, iota-move-build/, iota-move-lsp/, iota-package-management/ Move toolchain: build/publish, LSP, package manager USE-AS-IS Apache-2.0

1.3 Local network / private network tooling (our ops backbone)

Verified path What it does QALS use License
crates/iota-localnet/ One-command localnet: --force-regenesis, --with-faucet, --committee-size N, --epoch-duration-ms — a real multi-validator private net in one binary USE-AS-IS for qalnet-dev-1 Apache-2.0
crates/iota-swarm/, crates/iota-swarm-config/ In-memory test swarms + network configs USE-AS-IS (test harness) Apache-2.0
crates/test-cluster/, crates/simulacrum/, simulacrum-server/ Test cluster harness; synthetic-chain simulation USE-AS-IS for CI Apache-2.0
dev-tools/iota-private-network/ Docker compose private-network deployment (verified) USE-AS-IS — this is the Fleet starter kit Apache-2.0
dev-tools/pg-services-local/ Postgres + indexer + GraphQL + explorer-backend compose USE-AS-IS Apache-2.0
dev-tools/grafana-local/, jaeger-local/, iota-indexer-monitoring/, iota-network/ Grafana dashboards, Jaeger tracing, indexer monitoring USE-AS-IS Apache-2.0
docker/ Dockerfiles: iota-node, iota-localnet, iota-indexer, iota-graphql-rpc, iota-faucet, iota-data-ingestion, iota-proxy, iota-rest-kv, iota-tools (all verified) FORK+REBRAND image names → qalnet/* Apache-2.0

1.4 Genesis, tokenomics, names

Verified path What it does QALS use License
crates/iota-genesis-builder/ + iota-genesis-common/ Builds genesis.blob: validator set, allocations, migration blob (skip migration) USE-AS-IS + our config Apache-2.0
crates/iota-faucet/ Gas faucet service FORK+REBRAND → Qal Pass dev faucet Apache-2.0
crates/iota-names/ IOTA Names service (SuiNS analogue) FORK+REBRAND → qalnames (agent-nameable identities, later phase) Apache-2.0
crates/iota-mainnet-unlocks/ IOTA's vesting-unlock schedule queries DROP (IOTA-history-specific) Apache-2.0
crates/iota-gas-station/not present Gas Station sponsor service lives in a separate upstream repo (iotaledger/gas-station), not cloned PULL NEXT → Qal Pass Apache-2.0

1.5 APIs, indexing, networking, ops

Verified path What it does QALS use License
crates/iota-json-rpc/ (+ -api, -types) Sui-compatible JSON-RPC surface USE-AS-IS Apache-2.0
crates/iota-graphql-rpc/ (+ -client, -config, -headers) GraphQL API USE-AS-IS Apache-2.0
crates/iota-grpc-server/ gRPC incl. tx execution/simulation service USE-AS-IS Apache-2.0
crates/iota-indexer/ (+ iota-indexer-builder, iota-indexer-streaming, iota-analytics-indexer) Postgres-backed indexer + analytics USE-AS-IS (explorer + Qal Trails backend) Apache-2.0
crates/iota-data-ingestion/ + -core/ Checkpoint ingestion pipeline USE-AS-IS (also feeds our IOTA-anchoring relayer later) Apache-2.0
crates/iota-light-client/ Trust-minimized state verification USE-AS-IS (later, for apps that shouldn't trust our gateway) Apache-2.0
crates/iota-sdk/, iota-rust-sdk/, iota-keys/, iota-transaction-builder/, iota-transaction-checks/, iota-ledger-signer/ The current (Rebased) Rust client SDK — the old iota-sdk repo is deprecated; this is the live one USE-AS-IS → base of qalctl + agent wallets Apache-2.0
crates/iota-traffic-controller/ RPC rate-limiting + IP blocking USE-AS-IS on public gateway Apache-2.0
crates/iota-metrics/, iota-metric-checker/, iota-metrics-push-client/, telemetry-subscribers/, prometheus-closure-metric/, prometheus-filtered/ Metrics/tracing suite USE-AS-IS → Grafana per dev-tools/ Apache-2.0
crates/iota-network/, iota-network-stack/, iota-tls/, iota-multiaddr/ P2P networking USE-AS-IS (runs over Tailscale) Apache-2.0
crates/iota-vm-sdk/, iota-replay/, transaction-fuzzer/, iota-source-validation/ Debug/replay/fuzz/security tooling USE-AS-IS in CI Apache-2.0

EVM — CONFIRMED ABSENT from repos/iota. No evm crate in the workspace (104 crates enumerated; zero EVM hits), no EVM dir at repo root. IOTA's EVM product is a separate chain/tech line. See §5 wasp for the Phase-4 pattern and the QALS_ARCHITECTURE decision memo. Do not plan Move+EVM duality on Qalnet without a porting project (downgrade §5.7 of the architecture doc accordingly).

2. Identity stack — repos/identity.rs

Active (2026-08-20), Apache-2.0, 14+ crates + WASM bindings (verified bindings/wasm/identity_wasm). Whole stack = FORK+REBRAND as Qal ID.

Verified path What it does QALS use License
identity_core/, identity_did/, identity_document/, identity_credential/ W3C DID + VC data model, JSON-LD, crypto primitives USE-AS-IS Apache-2.0
identity_iota/ + identity_iota_core/ IOTA-specific DID method + ledger anchoring → becomes our DID method on Qalnet FORK+REBRAND Apache-2.0
identity_credential/src/revocation/revocation_bitmap_2022/, status_list_2021/, validity_timeframe_2024/ (all verified) Credential revocation: bitmap + W3C StatusList2021 + timeframes USE-AS-IS (agent-key revocation drills) Apache-2.0
identity_credential/src/sd_jwt_vc/ (verified) SD-JWT VC support (selective disclosure) USE-AS-IS Apache-2.0
identity_jose/ (jwk/jws/jwt, verified) JOSE layer USE-AS-IS Apache-2.0
identity_storage/ + identity_stronghold/ Storage abstraction + Stronghold-backed key storage USE-AS-IS — pins Stronghold for us Apache-2.0
identity_resolver/, identity_eddsa_verifier/, identity_ecdsa_verifier/, identity_pqc_verifier/ Resolution + signature verification incl. post-quantum USE-AS-IS Apache-2.0
(not cloned) iotaledger/hierarchies Trust hierarchies (root authority→federation→accreditation→attestation) — §5.6 of architecture doc PULL NEXT upstream Apache-2.0

3. Stronghold — repos/stronghold.rs

Dormant upstream (2023-06-29) but stable and still consumed by identity_stronghold. Apache-2.0. USE-AS-IS, pin the version.

Verified path What it does QALS use License
client/ Vault + store API (snapshot-encrypted secret DB) Agent keys, QALS hot-wallet seeds Apache-2.0
engine/ Runtime, snapshot encryption, Location abstractions USE-AS-IS Apache-2.0
stm/ Software transactional memory for concurrent procedures USE-AS-IS Apache-2.0

4. SDKs & UI

Repo / verified path What it does QALS use License
repos/iota/crates/iota-sdk/ + iota-rust-sdk/ The live Rust SDK (in-tree) USE-AS-IS Apache-2.0
dApp Kit / TS SDK — NOT in any clone. repos/iota/pnpm-workspace.yaml lists only docs/site (verified); no sdk/, dapps/, or apps/ dir. The Rebased TypeScript SDK + @iota/dapp-kit live in a separate iotaledger TS monorepo upstream React hooks + wallet-connect UI kit PULL NEXT upstream — embed in every qalarc web app ("Connect Qal ID") Apache-2.0
repos/firefly/packages/desktop/, packages/shared/ Electron+React desktop wallet UI patterns (Stardust-era, tied to old wallet stack) PATTERN only (UI/UX, i18n, key-guard flows); do not build on the old bindings Apache-2.0
repos/iota-sdk/ (sdk/, bindings/, cli/ — verified structure) Deprecated unified SDK (Rust/TS/Py/WASM) for Stardust DROP (frozen 2025-05-22); REF for bindings layout if we need Python/WASM Apache-2.0
repos/iota.js/, repos/wallet.rs/, repos/iota.go/ Chrysalis-era TS client / legacy wallet engine / Go client (MIT) DROP all Apache-2.0 / MIT

5. Patterns from archived repos (research value only)

Repo / verified path What it teaches QALS use License
repos/streams/streams/src/message/keyload.rs, announcement.rs, subscription.rs, signed_packet.rs, tagged_packet.rs (all verified) Channel-encryption pattern: announce → subscribe → keyload (per-recipient encrypted channel keys) → signed/encrypted packets. This is the blueprint for qal_data channel encryption (§5.5 of architecture doc) PATTERN (rebuild with ed25519/AEAD on Qalnet; code itself is dead) Apache-2.0
repos/wasp/packages/vm/core/evm/emulator/, iscmagic/, evmimpl/ (verified) + packages/evm/ EVM-as-a-core-contract inside another chain + jsonrpc/ Ethereum JSON-RPC sidecar, committee DKG (packages/dkg/), L1 anchoring via nodeconn/+statemanager/ PATTERN — the reference for the Phase-4 "EVM on Qalnet" decision memo (JSON-RPC sidecar shape, iscmagic bridgeless-token idea) Apache-2.0
repos/goshimmer/packages/protocol/congestioncontrol/ (verified) DAG congestion-control/mana-era scheduler research REF only (whitepaper-reading; no code extraction) Apache-2.0
repos/entangled/common/crypto/troika/ (troika.c/.h verified) Ternary hash — historical LORE only ("trit" joke unit); zero extraction Apache-2.0
repos/bee/ Legacy Rust node framework, abandoned DROP Apache-2.0

6. External (not iotaledger)

Repo / verified path What it does QALS use License
repos/deepbook/crates/ (indexer, server, schema + dashboard) and packages/ (Move: deepbook, deepbook_margin, margin_liquidation, usdc, token, fixed_math, predict, …) DeepBook v3 CLOB DeX: on-chain order book + margin + liquidations Phase B for Qalx: fork Move packages, rebrand; port to Qalnet Move (Sui-lineage, should be near-drop-in) Apache-2.0
MystenLabs/sui (upstream, not cloned) IOTA's parent codebase Upstream tracker option if iotaledger stalls — our fork investment stays portable (Sui↔IOTA diffs are the porting surface). Watch, don't clone yet Apache-2.0

7. DO-NOT-PULL list (dead ends — explicit)

Item Why not
Old Tangle node logic: bee/, entangled/ (except troika lore), coordinator & milestone code anywhere Pre-Rebased architecture; dead upstream; we have real BFT
Ternary crypto (Curl, Kerl, troika, trytes) Historical; binary-only policy (branding homage only)
iota-mainnet-unlocks/ IOTA's specific vesting history, meaningless on Qalnet
Stardust migration tooling: crates/iota-framework/packages/stardust/, iota-genesis-builder's migration.blob path UTXO-emulation for legacy IOTA funds; REF only
repos/iota-sdk/ (legacy), wallet.rs, iota.js, iota.go Deprecated/archived Chrysalis-era clients
wasp/ as a runtime (ISC chains) Confirmed dead end — Shimmer sunsets 30 Sep 2026; extract patterns (§5) only
firefly/ code as wallet base Bound to old wallet stack; take UI patterns, not the Electron app
Coordinator/MANA tokenomics not in repos/iota Mana is docs-only upstream — don't assume it exists in the fork (verified absent)

8. Pull-next queue (upstream repos not yet cloned)

  1. iotaledger/gas-station — sponsored-tx service → Qal Pass (core product promise).
  2. iotaledger/hierarchies — trust delegation crates (Rust/WASM) → Qal Trust.
  3. TS SDK / dApp Kit monorepo — @iota/dapp-kit, @iota/iota-sdk → every qalarc web app.
  4. IOTA explorer frontend — Rebased-era explorer UI to rebrand (locate exact repo when online).
  5. MystenLabs/sui — shallow clone for diff-tracking only.

Verification method: directory listings of repos/ clones, 2026-09-06. Companion docs: IOTA_COMPONENT_MAP.md (deep detail), QALS_ARCHITECTURE.md (decisions).