How Dark Compute works.
A sealed-order batch auction for GPU-hours on Robinhood Chain, with leases that stream USDG and access details sealed to the renter.
The batch
Batches follow the Ethereum L1 block number, which Robinhood Chain exposes to contracts as block.number. A batch is 21 blocks: 16 for commits, then 5 for reveals. Settlement is open to anyone for the 26 blocks after the batch ends; after that the batch is void and every revealed order unlocks.
commitHash = keccak256(abi.encode( trader, batchId, market, side, gpus, hrs, limit, salt )) side 0 = rent (bid) 1 = provide (ask) limit USDG base units (6 dp) per GPU-hour
A commit pulls a 1 USDG bond from your vault. A reveal returns it and locks funds: renters lock gpus × hrs × limit plus the fee ceiling, providers lock a 20 % service bond. Each market takes up to 96 orders per side per batch; when a side is full, a strictly better order evicts the worst one.
Clearing
- Sort bids by limit, highest first, and asks by limit, lowest first. Equal limits keep reveal order.
- Walk both books while the bid limit is at least the ask limit. The last pair touched is the margin, b* and a*.
- Price
p = floor((b* + a*) / 2), so a* ≤ p ≤ b*. If nothing crosses, the batch settles with no trade. - Quantity
Q = min(Σ bids ≥ p, Σ asks ≤ p). - Orders better than the margin fill in full. The marginal price tier shares what is left pro rata,
floor(R·q/T), with leftover units going one each in priority order. - Filled bids and asks are paired in priority order; each pair opens a lease at price p.
The site's dry-run uses lib/clear.ts, which matches the contract's settle() bit for bit on every tested book, including a full 96 × 96 batch.
Leases
A lease escrows the renter's payment and streams it linearly to the provider over the lease hours. The provider calls ack(leaseId, sealedAccess) with SSH or endpoint credentials encrypted to the renter's public key. The ciphertext is emitted in an event and never stored.
The renter can halt at any time: the provider keeps what has streamed and the rest comes back. If the provider never acked, the renter gets a full refund, and after the 60-minute grace the provider's bond is paid to the renter as well. Anyone can trigger that halt, so funds cannot get stuck.
What stays sealed
- The GPU class (inside the hash)
- Rent or provide
- Size and hours
- Your limit price
- Machine access, forever: only ciphertext touches the chain
- Vault deposits and withdrawals
- That you committed, and the bond
- The order, from reveal until settlement
- Fills, prices and lease streams
Fees
0.10 % per side in USDG, capped at 0.50 %; a change waits 48 h after it is queued. Providers pay their side on what actually streams. Fees and forfeited bonds collect in the pool and flushFees() sends all of them to the treasury. Nothing is redistributed: there is no staking or rebate path in the contract.
Markets
| Class | Market id | VRAM | Reference feed name |
|---|---|---|---|
| B200 | keccak256("B200") = 0xcebd53e2… | 192 GB | B200 |
| H200 | keccak256("H200") = 0x8340d453… | 141 GB | H200 |
| H100 SXM | keccak256("H100") = 0x4af9fd38… | 80 GB | H100 SXM |
| H100 PCIe | keccak256("H100P") = 0x69efb968… | 80 GB | H100 PCIE |
| A100 SXM4 | keccak256("A100") = 0x800dc08a… | 80 GB | A100 SXM4 |
| L40S | keccak256("L40S") = 0x925f91e9… | 48 GB | L40S |
| RTX 5090 | keccak256("5090") = 0xc617fa3f… | 32 GB | RTX 5090 |
| RTX 4090 | keccak256("4090") = 0xffbc134f… | 24 GB | RTX 4090 |
| RTX 3090 | keccak256("3090") = 0x0002aced… | 24 GB | RTX 3090 |
Contracts
Risks
- Delivery is off-chain. The contract can stream, refund and slash, but it cannot see whether a machine is fast. Halt early if a lease is not what you rented.
- The host can see the job. A rented machine is someone else's hardware. Keep secrets for Dark Inference, which runs on your own GPU.
- Clock jumps. The L1 block number can skip. A jump longer than the reveal window can cost an unrevealed commit its bond.
- Cheap asks. The provider bond is sized on the ask limit, so a very low ask risks little. Renters see the provider's bond on each lease.