lium.io: how the mechanism works
lium.io runs a real GPU rental marketplace, and its scoring code turns out to care about one fact more than any other: is the machine currently rented at all.
lium.io runs a decentralised compute rental market on top of Bittensor. Miners contribute GPU-equipped machines to a shared pool; renters pay to run workloads on that hardware; validators check that a miner's machine actually is what it claims to be and score it, and the subnet pays miners out of new TAO emission according to that score. [source] [source] Of the subnets this course tracks, lium.io is the single largest earner by emission share, A @ 8878789-tier, rank 1 @ 8878789.
What a machine actually has to pass
Before a machine's hardware quality earns anything, it has to survive a genuinely adversarial check. The validator issues a signed cryptographic challenge over SSH to a miner's executor; the executor runs it and returns a cipher response, checked against a hash-pinned shared library, libverifyx.so, rather than trusted on whatever the miner's own software reports. The check is designed to be reproducible outside production too: a miner or support engineer can take the seed and cipher_text values straight out of a validator's own log line and re-run the same executor script locally. [source] The debugging guide's own failure taxonomy — SSH_TRANSPORT, EXECUTOR_CRASH, CIPHER_REJECTED — exists because executors have genuinely failed this way in production; for a rejected cipher, the guide states the most common cause directly as the executor running a different version of libverifyx.so than the validator, and one of its troubleshooting steps is comparing the SHA256 checksum of that file on each side. [source] [source]
Passing VerifyX is only the first gate. The validator's own core module wires together an AttestationService (TDX confidential-VM verification), a CollateralContractService (a deposit check), and the VerifyX challenge into one pipeline before any score is computed. [source] [source] Beyond that, this repository's own append-only catalogue of zero-incentive reasons — class ZeroIncentiveReason(StrEnum), explicitly documented as a contract the backend and dashboards key off by exact string — lists a genuinely wide net: a banned account for network abuse, a "spot tier" flag, new-rentals-paused, an outdated Nvidia driver, insufficient disk relative to declared VRAM, a flagship 8-GPU machine lacking either NCU profiling access or real GPU-splitting capability — and, sitting in the same list as network abuse, a provider whose Discord is not connected. [source] [source] That last one is worth pausing on: a purely operational, non-technical requirement disqualifies a machine just as completely in this code as being banned for abuse does. Why Discord connectivity earns a place in the same enum as network abuse is not explained anywhere in this pinned source — no comment or doc chunk states the reasoning, only the code enforcing it, so this course reports the juxtaposition rather than a rationale for it.
The field that decides more than any of these checks
All of that feeds one shared record per executor per cycle — RentalPriceEstimate/JobResult, carrying GPU model, GPU count, a sysbox_multiplier, an uptime_multiplier, whether the provider's Discord is connected, and one boolean this course found does more work than any hardware check above it: is_rented. [source] [source] The scoring class that reads it, RentalPriceIncentive, documents itself as a three-phase algorithm: exclude unrented eligible GPUs from mining scores, calculate a dynamic emission split based on rental costs, then distribute weights across burn, mining, and rental pools. [source] [source]
Read that as code rather than as a summary and the mechanism is blunter than it first sounds. A rented executor is scored by ordinary hardware-quality logic — the parent class's default scoring, reading GPU model, uptime, sysbox, collateral — with a code comment that says exactly this: "For rented or non-eligible GPUs, use parent's default scoring logic." [source] An idle executor of a GPU model the config marks eligible is deliberately *not* scored in the mining pool at all — its own comment insists a mining_score of zero here "does not mean the executor earns 0," because it earns instead from a separate rental-share pool, after clearing a further soft price-versus-market check, a disk-to-VRAM ratio check, and a flagship-capability check. [source] [source] [source] [source] And an idle executor of any GPU model *not* on that eligibility list earns nothing at all while idle, full stop — the code's own comment: "only rented usage earns." [source]
What miners are actually optimising
lium.io's own introduction states the goal as fair pay for GPU quality and performance. [source] What the code actually measures is narrower, and this course's earlier read of a smaller pin concluded that nothing here measures a renter's actual job outcome — only whether a machine passed a hardware check, stayed up, ran the required secure runtime, and had collateral on deposit. The wider pin available to this page corrects that in one important respect and confirms it in another. The correction: whether a machine is *currently rented at all* is not a minor input sitting alongside the hardware checks — for most GPU models it is the entire gate on earning anything from the mining pool, ahead of and independent of how well the machine scores on any attested quality. The confirmation: nothing this course could read, on either the rented or the idle-eligible path, scores what actually happened during a rental — the record's own field list runs to GPU model, count, rate, uptime and sysbox multipliers, and pool-eligibility flags, with no field anywhere for a completed job's success, speed, or a renter's satisfaction. [source] [source]
A miner here is optimising, in order: pass VerifyX and every eligibility gate, then get rented — by anyone, for anything — because being rented routes a machine to the ordinary, default-scored mining-pool path, [source] while being unrented on most GPU models is worth nothing at all regardless of how well the machine would otherwise score. [source]
Do validators do anything besides validate?
Not directly through code this course can read — no chunk here shows a validator hosting a paid endpoint or reselling capacity itself. But the mechanism a validator's own scoring code runs is coupled to a live commercial system this repository does not contain. A separate referral bonus, paid out of the residual burn pool, is sized by "each referrer's EMA of referred revenue," read from a backend feed through a ReferralFeedClient this repository calls but does not implement, and documented as failing closed — an unset, stale, or unreachable feed leaves the weight vector untouched rather than guessing. [source] Real renter payment, and the marketplace itself, also live entirely outside this pin: the repository's own README points renters to a separate frontend at lium.io and a separate command-line tool, lium-cli, neither of which is part of this course's corpus. [source] So the honest answer is narrower than "a validator sells compute" — it is that this subnet's emission mechanism is wired directly into real commercial revenue and a real rental marketplace, through code this course can see calling out to both, even though neither one's own implementation sits inside what this course can read.
Why it earns
Every subnet's share of new network emission is set by one formula and nothing else: its own moving-average alpha price, discounted by a miner-burn penalty, against that same figure summed across every other subnet. [source] [source] Mechanism quality has no term in that formula — it can only ever reach emission by first moving demand for the token. lium.io is the only subnet in this batch whose mechanism this course found wired to a real, external revenue signal at all, but that is not evidence the mechanism is *why* it earns; it is only evidence the mechanism is unusually entangled with real commercial activity.
By the price-only formula, lium.io's numbers are the strongest in this batch: 31.8% @ 8878789 of daily emission, with subnets at or above its rank capturing 31.8% @ 8878789 of the total. 6669 @ 8878789 wallets hold its alpha token against 53 @ 8878789 active miners earning. Only 14.6% @ 8878789 of its judging stake traces to the root network rather than stake placed directly in its own alpha — most of its ranking power is earned through its own token, not borrowed from root. Its alpha traded at 0.076126322 @ 8878789 TAO at the snapshot block, up 2.186022070132986 @ 8878789 percent over the trailing week and 24.1043764809328 @ 8878789 percent over the trailing month.
What to copy, what to avoid
Copy hardware you cannot inspect directly not being trusted on a miner's word. lium.io's cryptographic challenge-response check, verified against a shared, hash-pinned library rather than the miner's own report, is a genuine defence against the single most obvious lie a compute-rental subnet's miners could tell. [source] Copy, too, routing idle-but-eligible capacity to a separate pool instead of simply zeroing it — a design that at least tries to keep supply available rather than only rewarding machines already in use.
Avoid scoring what is easy to attest instead of what the customer actually experiences. Nothing in what this course could read from lium.io's own repository measures a renter's actual job outcome — only whether the machine passed a hardware check, stayed up, ran the required secure runtime, had collateral on deposit, and above all, whether it was rented. [source] [source] Avoid, too, treating an operational requirement like a connected Discord account as just as disqualifying as a ban for network abuse in one shared enum — a reader auditing "how does a machine get zeroed here" cannot tell the two apart without opening the code.
How it actually works
The concrete branch a scored JobResult takes: calculate_executor_score first checks a set of hard exclusions common to both pools — network abuse, spot tier, disconnected Discord, paused rentals — zeroing the record outright if any apply. [source] Past that, eligible_for_rental_share is computed as not job_result.is_rented and base_model in rental_incentive_gpu_types and (score > 0 or job_score > 0), then narrowed further by three more gates, each individually flag-gated and each logging a "shadow" would-be exclusion even while its enforcement flag is off: a soft price limit against the market's 90th-percentile rate, a disk-to-VRAM ratio floor, and a flagship-capability check requiring either unrestricted NCU profiling access or real GPU-splitting support. [source] [source] [source] [source] A record that survives all three exits the mining-pool path entirely — job_result.mining_score = 0; return job_result — and earns from the rental-share pool instead. [source] [source] Everything else — rented, or idle on a non-eligible model — falls through to super().calculate_executor_score(job_result), the base class's ordinary hardware-quality scoring. [source]
Whatever pool a miner's accumulated score lands in, one client finally turns it into a chain-visible number: SubtensorClient.set_weights normalises accumulated, burn-adjusted scores into uint16 weights, floors any hotkey with at least one live executor in the last completed cycle at the minimum representable weight rather than dropping it to true zero, and submits the result with wait_for_finalization=False, wait_for_inclusion=False. [source] [source]