Skip to main content

// Chapter 03 · Protocol

ParalleliX AI Lifecycle

The path every ParalleliX AI inference request walks.

7 min2 sectionsProtocol

Pipeline overview

// 3.0 · 9 steps · coord plane + exec plane

The numbering is canonical and the shape is fixed. A ParalleliX AI inference request, the live path, runs the pipeline whole on one node and skips Segment and Aggregate. The general parallelizable-workload path uses every step. Only the payload and the parties change between tasks.

// Task pipeline · 9 stepsat launch
  • // 01

    Receive request

  • // 02

    Segment

  • // 03

    Schedule

  • // 04

    Dispatch

  • // 05

    Execute

  • // 06

    Proof-of-Execution

  • // 07

    Validate

  • // 08

    Aggregate

  • // 09

    Settle / stream rewards

Three stages

// 3.0 · grouped by plane

The nine steps cluster into three stages. Ingestion runs on the coordination plane before any hardware is touched. Execution moves to the operator plane and produces the only irreducible cryptographic primitive at launch: the Proof-of-Execution commitment. Settlement returns to the coordination plane for validation, aggregation, and payment.

  • // STAGE 1

    01 · 02 · 03

    INGESTION

    Receive, segment (general path), schedule. Coordination plane.

  • // STAGE 2

    04 · 05 · 06

    EXECUTION

    Dispatch, execute, produce PoE. Execution plane.

  • // STAGE 3

    07 · 08 · 09

    SETTLEMENT

    Validate, aggregate (general path), settle. Coordination plane.

Ingestion

// 3.1 · receive · segment · schedule

Three steps run before the payload leaves the coordinator. They check credits, segment the general-path workload into independent atoms (an AI inference request stays whole), and match the unit of work to a node.

// Coordination plane · 01 → 033 steps

  1. // 01

    Receive request

    A request enters the coordinator. The live demand source is ParalleliX AI: a single inference request carrying a prompt, a model reference, and $PRLX credits deposited once on-chain and metered off-chain. The intake API checks the credit balance, allocates a unique request_id, and enqueues the request for scheduling. An inference request is the unit of work: it is autoregressive and is served whole by one node, never split. The general parallelizable-workload path (rendering, scientific sweeps) reuses the same pipeline with the optional Segment and Aggregate steps described below.

    • ParalleliX AI inference: prompt, model reference, off-chain-metered $PRLX credits. The live path.
    • Parameters: workload_class, hardware_tier, priority (Standard / Expedited / Urgent), deadline_seconds.
    • Credits checked before request_id allocation. Deposits sit in an on-chain vault (withdraw any time); spending is metered off-chain.
    • Failure: insufficient credit balance, malformed request, unknown workload class.

    Illustrative inference request (pseudocode, not a stable API)

    { "workload_class": "ai.inference",  "model": "oss-chat-v1",  "hardware_tier": 3,  "priority": "standard",  "credit_account": "0xe3..." }
  2. // 02

    Segment

    General-path only. An inference request skips this step: autoregressive generation cannot be split across nodes, so it is dispatched whole. For genuinely parallelizable workloads (rendering, scientific sweeps, big-data map-reduce), the segmenter splits the task into independent sub-tasks bounded by its dependency graph: sub-tasks with no data dependency run in parallel, dependent sub-tasks are sequenced. The third-party submitter path that feeds this step is a future compute marketplace, not the live ParalleliX AI flow.

    • AI inference: no segmentation. One request is served whole by one node.
    • Parallelizable workloads: sub-task fan-out is bounded by the dependency graph, not by available capacity.
    • Each sub-task is assigned a unique 32-byte sub_task_id allocated by the segmenter.
    • A general third-party submitter marketplace is a future direction, not the live demand source.

    coordinator // segment (general path)

    > task_id: prlx_7f3a91c8e2 (render sweep)> dependency graph analysis: 142 independent frames> fan-out: 142 sub-tasks allocated> ai.inference requests skip this step
  3. // 03

    Schedule

    The unit of work, a whole inference request or a single sub-task on the general path, is matched to a node using four signals applied in a fixed priority order: capability first, capacity second, best-fit third, reputation fourth. The full scheduler logic is covered in Part IV. At launch reputation is a constant 1.0x; the signal activates later. For AI inference, parallelism is request-level: many requests route across the pool concurrently and throughput scales with the number of online nodes.

    • Capability match: hardware tier, workload class, declared features. Binary filter first.
    • Capacity-aware queue: work enters a priority queue ordered by complexity, not arrival order.
    • Best-fit allocation: smallest qualifying node that clears the deadline. Minimises capacity fragmentation.
    • Reputation weighting: a planned signal; constant 1.0 at launch.

    scheduler // match

    > req_a3f1: class ai-inference → nd_4f7c (tier 3, H100×4)> req_a3f2: class ai-inference → nd_9b2a (tier 3, A100×4)> matched 142 requests across 38 nodes> dispatching...

Execution

// 3.2 · dispatch · execute · proof-of-execution

Steps 04 through 06 run on the execution plane. This is where the payload leaves the coordinator's control and where the only irreducible accountability primitive at launch, the PoE hash commitment, is produced.

// Execution plane · 04 → 063 steps

  1. // 04

    Dispatch

    The whole inference request, or a single sub-task on the general path, is encrypted to the assigned node's RSA public key before transmission. Only that node can decrypt the payload it was given. In-transit confidentiality is a default, not an option, and dispatch is point-to-point, not broadcast.

    • Asymmetric envelope per node: coordinator encrypts to node.pub, never holds plaintext mid-transit.
    • Dispatch is point-to-point; no node sees another node's payload.

    coordinator // dispatch

    > encrypt req_a3f1 → nd_4f7c (RSA to node.pub)> encrypt req_a3f2 → nd_9b2a (RSA to node.pub)> 142 / 142 encrypted and dispatched
  2. // 05

    Execute

    The node decrypts the payload and runs it on local hardware. An inference request runs whole: the node generates the full autoregressive output. Execution time is bounded by the node's declared capacity and the deadline. If the node does not return within the deadline, the work is re-dispatched to a fresh node and the original return is discarded. The deadline timer starts at decrypt, not at dispatch.

    • Deadline timer starts at decrypt, not at dispatch.
    • Timeout on execute triggers re-dispatch to a fresh node; original result is discarded.
    • The execute step is the only slow step. All other hot-path stages are bounded by RSA verification cost.

    node // execute

    > decrypt req_a3f1 · class ai-inference> exec cuda · autoregressive decode · model oss-chat-v1> done · t=41ms> returning result + PoE commitment
  3. // 06

    Proof-of-Execution

    The node computes a SHA-256 commitment over the result and signs it. This binds a specific node to a specific result for a specific task. It is not a zero-knowledge proof. Honesty is enforced by sampled re-dispatch (step 07), not by the hash alone. Real zero-knowledge proofs are a research direction, not a current capability.

    • PoE = SHA-256(task_id || result || node_id), RSA-signed by the node.
    • poe.v1 is the launch commitment scheme. Future schemes ship as poe.v2.
    • Proves a specific node returned a specific result. Does not prove the computation was correct.

    node // poe · illustrative pseudocode

    def proof_of_execution(task_id, result, node_id):    return sha256(task_id + result + node_id).digest()# poe: e7b25a91ff2c9a3f41ce6f027a2cb194# signed: rsa_sign(node.key, result || poe)
// Console · ParalleliX AI · open-source model running
parallelix ai // open-source model · running8 live
requests routed to capable nodesoss-models
node-11
99%rtx-4090
node-13
91%rtx-4090
node-15
88%a6000
node-04
87%rtx-4090
node-08
78%a6000
node-07
72%a6000
node-02
61%rtx-4090
node-09
··rtx-3090
answers streamingcredits · metered off-chain
1980 TFLOPS · fp168 streaming

The live demand at execute: open-source models running on network compute. Each whole inference request streams on its own node across the pool; a single autoregressive request is never split across nodes.

Note·What PoE proves and does not prove

PoE = SHA-256(task_id || result || node_id)

This is a hash commitment, not a zero-knowledge proof. It proves that a specific node produced a specific result for a specific task. It does not, on its own, prove the computation was performed honestly. Honesty is enforced by the redundancy mechanism in Validation and by economic incentives via the staking contract. Real zero-knowledge proofs are a research direction, not yet built.

Settlement

// 3.3 · validate · aggregate · settle

Validation checks PoE commitments and re-dispatches a sampled fraction of completed work for redundancy. Aggregation merges general-path sub-task results into the task-level deliverable; an AI inference request has a single result and skips it. The result returns to the requester. Operators are not paid per request: served work keeps verified uptime high, and uptime drives the daily reward pool.

// Coordination plane · 07 → 093 steps

  1. // 07

    Validate

    The coordination layer runs two checks before settlement. First: reconstruct SHA-256(request_id, result, node_id) and compare it to what the node submitted. Mismatches reject outright. Second: a configurable fraction of completed units, whole inference requests or general-path sub-tasks, is re-dispatched to a second, independently selected node, and the two results are compared. Disagreement triggers a third dispatch and a majority decision.

    • Hash-commitment check: reconstruct SHA-256(request_id, result, node_id), compare. Mismatch = reject.
    • Sampled redundant re-dispatch: a second node re-runs the same unit; results compared.
    • Disagreement triggers a third dispatch and majority decision. Persistent disagreement flags all parties.
    • Rejected results are dropped and the node flagged; repeated rejection removes the node from the pool.

    coordinator // validate

    > hash check: ok (SHA-256 reconstructed, matched)> redundant sample: 14 / 142 re-dispatched> all samples agree> 142 / 142 validated · settling
  2. // 08

    Aggregate

    General-path only. A whole inference request has a single result and skips this step: its output returns directly to ParalleliX AI through the same encrypted channel. For parallelizable workloads, validated sub-task results are aggregated by the coordinator into the task's final output, honouring the original dependency graph (ordering, joins, reductions). The return channel is encrypted to the requester's public key.

    • AI inference: single result, no aggregation. The output returns whole to ParalleliX AI.
    • Parallelizable workloads: aggregation honours the original dependency graph: order, joins, reductions.
    • Return channel is end-to-end encrypted to the requester's pubkey.
    • Settlement record is anchored to the chain after the result is finalised.

    coordinator // aggregate (general path)

    > stitching 142 / 142 sub-task results> dependency graph resolved> result ready · encrypting for requester
  3. // 09

    Settle / stream rewards

    Operators are paid for staying online, not per request. Serving work keeps a node online, and an online node accrues from the live per-second reward stream weighted by stake × tier. During the bootstrap period, the stream sources from the 25% Operator Rewards bucket, fed via Sablier. In steady state, it sources from a share of ParalleliX AI usage payments, split 85% operators / 10% treasury / 5% infra, settled in $PRLX.

    • Bootstrap period: rewards funded from the 25% Operator Rewards allocation (~34,200 $PRLX/day over ~24 months).
    • Steady state: a share of ParalleliX AI usage payments, split 85% operators / 10% treasury / 5% infra.
    • The 4% transfer tax does NOT fund operator rewards at any point.
    • Execution record anchors on-chain in batches: at launch, one commitment per ~10 minutes.

    coordinator // settle

    > streaming to 38 online nodes> source: bootstrap subsidy (25% bucket)> earned · nd_4f7c: 39.79 $PRLX (streaming)> execution record anchored · batch committed

Caveat·Enforcement at launch

Enforcement at launch is uptime, PoE, and sampled re-dispatch. Bad results are dropped and the node flagged, then re-dispatched to another node. There is no slashing; staked principal is always returned in full on unstake.

The money path

Where $PRLX moves at each settlement step.

// Settlement flow · $PRLX · at launch
  1. // 01

    ParalleliX AI

    users deposit $PRLX credits

  2. $PRLX
  3. // 02

    Coordinator

    metering + settlement

  4. bootstrap rewards · 25% bucket
  5. // 03

    Operators

    paid for verified uptime

// Settlement mechanics

  • Bootstrap source

    25% Operator Rewards bucket, unlocking linearly (~34,200 $PRLX/day, streamed via Sablier over ~24 months).

    Operator rewards come from this allocation. They are pay-for-uptime, not a per-request fee.

  • Steady-state source

    A share of ParalleliX AI usage payments, split 85% operators / 10% treasury / 5% infra.

    Settled in $PRLX. Operators earn the token directly, no separate credit currency.

  • Trigger

    After validation completes and the PoE commitment is anchored.

    Rewards are credited against verified uptime, pooled and settled daily.

  • ParalleliX AI credits

    Deposited once on-chain, metered off-chain at the coordinator.

    The 4% transfer tax routes per documentation.md §8.3. It does not fund operators.

For the full token mechanics, see Token Mechanics.

Failure semantics

// 3.4 · per-stage · recovery model

Every step can fail. The pipeline does not silently drop work: failures cascade to the previous step's retry handler or surface in the task's final state. At launch, failure events surface through coordinator logs; richer Console event surfacing is planned.

// Stage · failure mode · recovery

  • Receive request

    Insufficient credits, malformed request, unknown workload class.

    Final rejection. No request_id allocated, no work scheduled.

  • Schedule / dispatch

    No node satisfies the capability and deadline constraints.

    Work held in priority queue until a candidate appears or the deadline elapses.

  • Execute

    Node misses the deadline; returns node.deadline_exceeded.

    Re-dispatched once to a fresh node. Original return is discarded. The re-dispatch event is surfaced in coordinator logs.

  • Proof-of-Execution

    Missing or malformed PoE commitment from the node.

    Work re-dispatched to a different node. The original attempt earns no uptime credit.

  • Validate

    Hash mismatch or disagreement on redundant re-dispatch.

    Third dispatch triggered; majority decides. Persistent disagreement flags every party for review.

  • Settle / credit uptime

    A bad PoE result is dropped and the node flagged; repeated bad results remove the node from the active pool.

    No slashing, ever. The work is re-dispatched to another node; staked principal is returned in full on unstake.

// Where to go next · reading path