Skip to content
SILIQ
Wallet…
SLQS001-DOCSiliq datasheet

Docs

The whole system on one sheet: how a run is measured, how it gets paid, what the vault holds, what the server checks and what it cannot check yet, and how to call the API.

ChainRobinhood Chain, 4663
Settlementrateevery 6 h
InstrumentsSLQ-01 to SLQ-05
$SILQ and vaultlaunch soonnot deployed

01What Siliq is

Siliq pays GPU owners for verified work in the tokenized stock of the companies that made the chip. Your browser tab runs a workload on the GPU for 15, 30 or 60 minutes. The server checks the run and records what it earned. Every 6 hours Siliq signs a voucher for each wallet, and you claim the tokens from a public vault on Robinhood Chain.

The payout follows the silicon. An NVIDIA card pays in NVDA, TSM, SKHY, SMH: the designer, the foundry, the memory maker and a semiconductor ETF for the packaging and tool makers. Other vendors get their own split.

The same GPUs answer prompts. Small open models run in miners' tabs and on headless nodes behind one OpenAI-compatible endpoint. Paid API keys and render jobs are bought with ETH, and Siliq turns that ETH into stock tokens for the vault.

This page reads its figures from the constants the server runs on. When a rate or a limit changes in the code, the number here changes in the same deploy.

02Mining

Open /mine, pick an instrument and a run length, and start. The tab holds the GPU at full load for the whole run and reports a sustained score at the end. Nothing installs.

Siliq receives the adapter strings your browser exposes, the score, and how long the tab spent hidden. Your IP address is kept as a salted hash and your country as a two-letter code.

Instruments

PartWorkloadScored in1 SCUWebGL2
SLQ-01 computechained fused multiply-add over a million vec4 lanesEach pass feeds the next, so the GPU cannot skip ahead. Scored in teraflops per second of sustained work.TFteraflops per second28 teraflopsyes
SLQ-02 memorystreaming upload, GPU copy and strided readback through 256 MBMeasures how fast bytes move between the tab and the card. Scored in gigabytes per second.GB/Sgigabytes per second18 GB movedno
SLQ-03 renderpath tracer, 4 bounces, seeded sphere field over a ground planeTraces real light paths and can render frames for paid render jobs while it runs. Scored in megapaths per second.MP/Smegapaths per second45,000 megapathsno
SLQ-04 matrixtiled SGEMM with workgroup memory, 1024 x 1024The dense matrix multiply behind every neural network layer. Scored in teraflops per second.TFteraflops per second9 teraflopsno
SLQ-05 inferencetransformer forward pass, 12 layers, 128 tokens, GPT-2 small shapeAttention and MLP blocks at full precision. While it runs, the tab can also answer queued prompts with real model weights.TFteraflops per second5 teraflopsno

Run rules

  • Runs last 15, 30 or 60 minutes.
  • The server issues a signed run token when the run starts. The run completes once, no sooner than its length minus 20 seconds and no later than 15 minutes after its length.
  • One address gets 5 runs an hour. Siliq counts addresses by a salted hash of the IP.
  • SLQ-01 runs on WebGL2 when WebGPU is missing. The other instruments need WebGPU.
  • The result screen flags a run when the tab spent more than 2% of it hidden. Browsers throttle background tabs, and a throttled GPU scores lower.
  • A score above the ceiling for your vendor family is cut to the ceiling before anything is recorded.

Ceilings

A ceiling is the highest sustained score Siliq accepts from one vendor family on one instrument. The values come from runs measured on an RTX 5060 Ti (6.3 TF, 4.1 GB/S, 10,100 MP/S, 2.05 TF, 1.1 TF), with headroom for the fastest card in each family.

Vendor familySLQ-01 TFSLQ-02 GB/SSLQ-03 MP/SSLQ-04 TFSLQ-05 TF
NVIDIA201636,00074
Apple101616,0003.52
AMD151427,0005.53
Intel586,0001.60.9
Qualcomm1.531,5000.40.25
Arm (Mali)1.531,5000.40.25
Unknown688,00021.2

Trial runs and passes

Whether a run pays depends on the launch and on your wallet.

ModeWhenResult
genesisBefore $SILQ launches. Every run today is a genesis run.Scored and listed, not paid
trialAfter launch, without a pass. One per address.Scored and listed, not paid
paidAfter launch, with a pass from a wallet that holds at least $25 of $SILQ.Paid at the next settlement

A pass is a signed message. It sends no transaction, lasts 24 hours and sits in an HttpOnly cookie on this site. The message reads:

Pass message
Siliq mining pass

I hold $SILQ in this wallet and want a 24 hour pass.
Signing sends no transaction.

wallet: 0x<your wallet>
nonce: <nonce>
  • Your tier comes from the dollar value of your $SILQ when the pass is issued.
  • When a run starts, Siliq reads your holding again and uses the lower of the two values. A smaller holding means a lower tier for that run.
  • When a run finishes, Siliq reads it a third time. If the wallet holds less than $25, the run is recorded unpaid.
  • Your tier sets how many GPUs one wallet can mine on at once: 1, 2, 4 from the lowest tier up.

04The vault

SiliqVault is a contract on Robinhood Chain that holds stock tokens and pays vouchers out of them. It has no imports, no proxy and no upgrade path.

deposit(token, amount, memo)
Anyone deposits an ERC-20 with a memo. The Deposited event records the amount the vault received.
closeCycle(cycle, reportHash)
The settler anchors the hash of a cycle report, once per cycle. The contract keeps it as a public record.
claim(cycle, tokens, amounts, signature)
A wallet redeems its voucher. The contract checks the settler signature, that the voucher names the caller, and that the cycle is unclaimed.
setSettler, transferOwnership, acceptOwnership, sweep
Owner functions. Ownership moves in two steps. Rotating the settler voids every unclaimed voucher signed by the old key.

Vault address:launch soon

Payout tokens

The vault pays in 11 Robinhood stock tokens on Robinhood Chain, each an ERC-20 with 18 decimals. Links open the token on the explorer.

TokenCompanyRoleContract
NVDANVIDIAdesign0xd060…9EEC
TSMTSMCfoundry0x58Ff…e7AA
SKHYSK hynixmemory0x84CA…FeF8
AAPLAppledesign0xaF3D…93f9
AMDAMDdesign0x8692…3fdC
INTCInteldesign + manufacturing0xc72b…9681
QCOMQualcommdesign0x0f17…AEA9
ASMLASMLlithography0x47F9…dAEA
MUMicronmemory0xfF08…4afD
EWYSamsung (via EWY)memory0x7f0a…13Fc
SMHSemiconductor ETFpackaging, tools, the rest0x072f…44a0
  • Samsung has no stock token on Robinhood Chain, so its slice is paid in EWY, a South Korea ETF.
  • The SKHY token tracks SK hynix depositary shares. Siliq's reference quote is the Korea Exchange common share in dollars, and the operator can pin a settlement price when the two do not match one to one.
  • Before launch there is no vault to read. After launch, /vault shows its balances read from the chain.

05$SILQ

$SILQ decides whether a run gets paid. Hold at least $25 of it in the wallet you mine with, sign a pass, and your runs earn. Hold more to mine on more GPUs with a higher multiplier. Rewards arrive as stock tokens from the vault; Siliq never pays in $SILQ.

TierHold at leastMultiplierGPUs at once
trialnothingnot paid1
etch$25×11
stack$250×1.252
tape-out$2,500×1.54
  • Siliq values your holding at the price of the deepest $SILQ trading pair.
  • After launch, a headless node needs the same $25 minimum to register.
  • No $SILQ contract exists yet. An address posted before launch belongs to someone else. Siliq posts the real one on this site and on X at @siliq.

$SILQ contract:launch soon

06What is verified, and what is not yet

The server and the vault contract enforce the first list. The second list is open, and you should weigh it before you mine, hold $SILQ or build on the API.

Checked today

  • Every run starts with a run token signed by the server and completes once, inside its time window.
  • Scores are capped per vendor family and instrument.
  • Each address gets 5 runs an hour and, after launch, one free trial.
  • The pass signature is checked, and the holding is read at the pass, at run start and at run finish.
  • The server chooses the payout split. The client cannot send one.
  • Each cycle pays within a budget tied to the vault's value, with a separate cap per token.
  • Vouchers are EIP-712 signatures. The vault checks the signer, the wallet and one claim per cycle.
  • One in four miner answers is replayed on a second GPU and compared character for character.
  • Key and render purchases need a payment on chain to the pay-to address and a signature from the sender. Each transaction pays once.

Not verified yet

  • A modified client can report any score up to the ceiling for its vendor. Spot-checked kernels with server-issued seeds are the fix, and they are on the roadmap.
  • The vendor comes from strings the browser reports. A modified client can claim another vendor, which moves both its ceiling and its split.
  • Work served by headless nodes is not paid and not cross-checked.
  • The settler is a hot key on the server. It can sign a voucher for any amount of any token the vault holds. Until ownership moves to a multisig, one owner key can sweep the vault.
  • The cycle budget and the per-token caps are server policy. The contract enforces neither, and it has no pause.
  • The vault contract has been tested by our own tests and by nobody else.
  • Settlement prices come from public market quotes cached for 5 minutes. There is no on-chain oracle.
  • Before launch, runs are scored and listed, and nothing is paid.
  • Turning key and render payments into vault deposits is an operator step. Each deposit shows as a public Deposited event; no contract forces it.

The roadmap lists the fixes in order, and the open dataset marks every run with its mode.

07The API

One base URL in OpenAI request and response shapes. Miners' tabs and headless nodes answer the open models. Frontier models are answered by their maker, on your own key. Every answer says who wrote it.

Base URL
$SILIQ/api/v1

In every sample on this page, $SILIQ stands for the origin of this site: the scheme and host in your address bar, without a path. Set it once with export SILIQ=https://<this host>. CORS is open on every /api/v1 route, so a web page can call them.

Authentication

SendForWhat you get
no headerOpen models, free tier24 prompts an hour per address, answers up to 256 tokens.
authorization: Bearer silq_...or x-api-key: silq_...Open models, Siliq keyNo hourly limit, answers up to 512 tokens. Each prompt spends credits.
x-provider-key: sk-...or x-anthropic-key, x-deepseek-key,or authorization: Bearer sk-...Frontier models60 prompts an hour per address. Siliq uses the key for that one call, stores nothing and adds no markup. The provider bills you. Siliq holds no provider key of its own.

Endpoints

MethodPathWhat it does
POST/api/v1/chat/completionsChat completions in OpenAI shape. Multi-turn, optional streaming. Start here.
POST/api/v1/inferenceOne prompt in, one answer out. Body: prompt, model, system, max_tokens, wait. Waits 25 s, then returns 202 with a poll URL; "wait": false returns 202 at once.
GET/api/v1/inference/{id}A job's status, and its answer once a GPU has written it. Jobs expire after 24 hours.
POST/api/v1/inference/{id}/verifyReplays a miner-served answer on a second GPU. 10 an hour per address.
GET/api/v1/modelsEvery model in OpenAI list shape, with a siliq block: name, params, served_by, credits, serving, size_gb.
GET/api/v1/keysKey price: pay-to address, minimum ETH, ETH price, credits per dollar and the message to sign.
POST/api/v1/keysBuys a key with a transaction hash and a signature. Returns the key once.
GET/api/v1/keys/meCredits left on the key in the authorization header.

First call

Request
curl -X POST $SILIQ/api/v1/chat/completions \
  -H 'content-type: application/json' \
  -d '{"model": "smol-360m",
       "messages": [{"role": "user", "content": "What does a foundry do?"}]}'
Response, 200
{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "model": "smol-360m",
  "choices": [{ "index": 0,
                "message": { "role": "assistant", "content": "..." },
                "finish_reason": "stop" }],
  "usage": { "prompt_tokens": <int>, "completion_tokens": <int>, "total_tokens": <int> },
  "siliq": { "served": "miner", "gpu": "...", "tokens": <int>, "ms": <int>,
             "prefillMs": <int>, "job": "...", "poll": "/api/v1/inference/...",
             "verified": null }
}

The siliq block is the part OpenAI does not send. The model field names the model that wrote the answer, so an alias resolves to its real id.

served
miner or node for open models; anthropic or deepseek for frontier models, which add servedBy with the provider's model name.
gpu
Device label of the GPU that wrote the answer.
tokens, ms
Tokens written and total time on the GPU in milliseconds.
prefillMs
Time the GPU spent reading the prompt.
job, poll
The queue job and the URL that returns it for 24 hours.
verified
null until a recheck runs, then true when a second GPU wrote the same text, false when it did not.
Frontier model on your own key
curl -X POST $SILIQ/api/v1/chat/completions \
  -H 'content-type: application/json' \
  -H 'x-provider-key: sk-...' \
  -d '{"model": "claude-opus-5", "stream": true,
       "messages": [{"role": "user", "content": "Explain EIP-712 in two lines."}]}'

Streaming

Send "stream": true and the answer arrives as server-sent events in OpenAI chunk shape, ending with data: [DONE].

  • Open models stream what the worker has decoded so far. Workers post partial text about once a second.
  • While a prompt waits, a comment line arrives every 5 seconds: : waiting for a gpu, then : decoding once a GPU holds it.
  • The last chunk carries usage and the siliq block. If the finished answer differs from the streamed partial, that chunk carries the full answer with "replace": true.
  • Frontier models stream token by token from the provider.
Event stream
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}

: waiting for a gpu

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"A foundry"},"finish_reason":null}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{...},"siliq":{...}}

data: [DONE]

Timeouts and the queue

  • chat/completions waits 45 seconds for a GPU. After that it answers 504 with timeout_queued or timeout_running, the job id and a poll URL. The prompt stays in the queue.
  • inference waits 25 seconds, then answers 202 with the job. Poll GET /api/v1/inference/{id}.
  • A model with no GPU online still takes prompts; they wait in its queue, up to 200. A full queue answers 503 queue_full.

Models

idModelParamsServed byCredits per prompt
smol-135mSmolLM2-135M-Instruct135Mminer tab0.12 GB weights1
smol-360mSmolLM2-360M-Instruct362Mminer tab0.27 GB weights2
smol-1.7bSmolLM2-1.7B-Instruct1.7Bminer tab1.1 GB weights8
r1-qwen-1.5bDeepSeek-R1-Distill-Qwen-1.5B1.8Bminer tab1.3 GB weights8
qwen3-8bQwen3-8B8.0Bheadless node5.2 GB weights6
claude-opus-5Claude Opus 5closedanthropicyour key
claude-sonnet-5Claude Sonnet 5closedanthropicyour key
deepseek-chatDeepSeek Chatopen, too large for a tabdeepseekyour key
deepseek-reasonerDeepSeek Reasoneropen, too large for a tabdeepseekyour key

Leaving model out picks smol-360m. Siliq also accepts the names smollm2-135m, smollm2-360m, smollm2-1.7b, deepseek-r1-distill-qwen-1.5b, qwen3, opus and sonnet. GET /api/v1/models reports how many workers serve each open model right now.

Limits

LimitValue
Free tier, open models24 prompts an hour per address
Answer length, free tier256 tokens
Answer length, Siliq key512 tokens
Answer length, frontier4,096 tokens by default, up to 16,000
Prompt length, open models2,000 characters
Prompt length, frontier20,000 characters
Frontier prompts60 an hour per address
Conversation keptlast 40 messages
Queue200 prompts per model
Wait, chat/completions45 s
Wait, inference25 s
Rechecks10 an hour per address

Parameters Siliq ignores

chat/completions reads model, messages, stream, max_tokens and max_completion_tokens. It drops every other field without an error, including temperature, top_p, stop, n, seed, tools, tool_choice and response_format. Tool calls and JSON mode do not exist. messages must end with a user turn, and content can be a string or an array of text parts.

Errors

Errors come back as {"error": {"code": "...", "message": "..."}} with a string code you can branch on.

StatusCodeMeaning
400bad_json, bad_request, bad_messagesThe body is not JSON, a field is missing, or messages does not end with a user turn.
401bad_key, provider_key_requiredThe Siliq key is unknown, or a frontier model was called without a provider key.
402out_of_creditsThe key has fewer credits than the model costs.
404model_not_found, job_not_foundNo such model, or the job expired after 24 hours.
413prompt_too_longThe prompt is over the character limit for its model tier.
429rate_limitedHourly limit reached. The retry-after header gives the seconds left.
503queue_full, prelaunchThe model queue is full, or a payment endpoint was called before launch.
504timeout_queued, timeout_runningNo GPU finished in time. The body carries the job id and a poll URL.

Buying a key

A Siliq key lifts the hourly limit and the answer length on open models. Frontier models run on your provider key and need no Siliq key.

  1. 01
    GET /api/v1/keys. It returns the pay-to address, the minimum, the ETH price and how many credits a dollar buys.Pay-to address:launch soon
  2. 02
    Send at least 0.001 ETH on Robinhood Chain to the pay-to address.
  3. 03
    Sign the payment message below with the wallet that sent the ETH. The signature proves the payment is yours, so a stranger who sees the transaction cannot claim it first.
  4. 04
    POST /api/v1/keys with {"txHash": "0x...", "signature": "0x..."}. Siliq checks both on chain and returns the key once. It stores a hash of the key and cannot show it again.
  5. 05
    Send the key as authorization: Bearer silq_... on every call. GET /api/v1/keys/me shows the credits left.
Payment message
Siliq payment

I sent this transaction and want to use it on Siliq.

0x<your transaction hash>

Credits equal the ETH sent × the ETH price in dollars × 1,000. A prompt costs 1 to 8 credits depending on the model. One transaction pays for one key or one render job. Before launch the pay-to address does not exist and POST /api/v1/keys answers 503 prelaunch.

Greedy decoding and rechecks

Open models use greedy decoding, with no temperature and no sampling. The same prompt on the same weights gives the same tokens, so a second GPU can check the first.

  • Siliq replays one in four miner answers on a second miner GPU, never the one that wrote the original, and marks the original verified when the two texts match character for character.
  • You can ask for a recheck of any finished miner answer. Poll the job afterwards for verified and verifiedBy.
  • Tabs and nodes load different weight files, so a recheck comes from the same kind of worker. Node and frontier answers are not cross-checked.
  • A match shows two GPUs agree. It says nothing about whether the answer is correct.
Recheck
curl -X POST $SILIQ/api/v1/inference/<job>/verify
curl $SILIQ/api/v1/inference/<job>     # "verified": true | false, "verifiedBy": "<gpu>"

08Render jobs

SLQ-03 is a path tracer. A render job buys frames of a seeded scene from the miners running it. Render jobs open at launch, with the pay-to address.

  1. 01
    Send at least 0.002 ETH on Robinhood Chain to the pay-to address.
  2. 02
    Sign the same payment message as for a key, with the wallet that sent the ETH.
  3. 03
    Post the transaction hash, the signature and a scene seed on /jobs, or to POST /api/jobs with an optional title of up to 48 characters.
  4. 04
    Miners on SLQ-03 take the oldest open job. Each GPU delivers one frame every 15 seconds, as WebP or JPEG under 180 KB.
  5. 05
    The job closes when the paid frames have arrived. The board keeps the latest 24. GET /api/jobs/{id} returns the job and its frames.
RuleValue
Minimum payment0.002 ETH
Frames per ETH5,000
Frames at the minimum10
Frame interval per GPU15 s
Frames on the board24

09Headless nodes

A browser tab holds a small model. A machine with more memory can serve bigger ones from its own Ollama through silq-node.mjs. The client reads your key from a file so it stays out of shell history, signs one login message, and talks to Siliq and Ollama and nothing else.

Set up a node
curl -O $SILIQ/silq-node.mjs
curl -O $SILIQ/silq-node.sha256
sha256sum -c silq-node.sha256          # macOS: shasum -a 256 -c silq-node.sha256
npm i viem
ollama pull qwen3:8b
PRIVATE_KEY_FILE=~/.siliq/key node silq-node.mjs --models=qwen3-8b --base=$SILIQ
FlagMeaning
--modelsRequired. Comma-separated Siliq model ids.
--baseThe Siliq origin, $SILIQ.
--ollamaOllama server. Default http://127.0.0.1:11434.
--gpuLabel shown next to served answers.
Siliq idOllama tag
qwen3-8bqwen3:8b
smol-135msmollm2:135m
smol-360msmollm2:360m
smol-1.7bsmollm2:1.7b
r1-qwen-1.5bdeepseek-r1:1.5b

The key file holds one 0x-prefixed private key. Use a wallet made for the node, and on macOS or Linux run chmod 600 on the file. To register, the node asks the server for a nonce and signs this message. The client refuses to sign any other text.

Node message
Siliq node

Register a headless node for this wallet.
Signing sends no transaction.

wallet: 0x<node wallet>
nonce: <nonce>
  • The node token lasts 7 days, and the client renews it before it expires.
  • After launch the node wallet must hold $25 of $SILQ.
  • The client refuses Ollama cloud models. Every answer comes from weights on your machine.
  • A node pulls prompts from POST /api/v1/inference/pull and posts partial text about once a second to POST /api/v1/inference/{id}/result. A job lease lasts 90 seconds; a node that goes quiet hands the prompt back to the queue.

10The open dataset

Every verified run in one file, as CSV or JSON lines. The file carries no wallets, no IP addresses, no run tokens and no dollar amounts. Responses are cached for 10 minutes, and CORS is open.

Download
curl "$SILIQ/api/dataset?format=csv"     # CSV with a header row
curl "$SILIQ/api/dataset?format=json"    # JSON lines, one run per line
ColumnMeaning
idSequence number of the run.
atWhen the run completed, ISO 8601 in UTC.
instrumentSLQ-01 to SLQ-05.
gpuDevice label derived from the adapter strings, such as RTX 5060 TI.
vendorOne of nvidia, apple, amd, intel, qualcomm, arm, unknown.
archGPU family, such as BLACKWELL or APPLE SILICON.
countryTwo-letter country code from the hosting provider, XX when unknown.
apiwebgpu or webgl2.
scoreSustained score after the ceiling, three decimals.
unitTF, GB/S or MP/S.
scuSiliq compute units, two decimals.
durationRun length in minutes.
modepaid, trial or genesis.
multiplierTier multiplier applied, 0 for unpaid runs.
tiertrial, etch, stack or tapeout.
cycleSettlement cycle index: hours since 1970-01-01 UTC divided by 6, rounded down.
verified1 for every row: the run passed the server checks.

Before launch every row has mode genesis. Filter on mode to keep them apart from paid runs later. Download it from /api/dataset.

11Glossary

run
One session of 15, 30 or 60 minutes in which your tab keeps the GPU busy with one instrument and reports a sustained score.
instrument
One of the 5 workloads, SLQ-01 to SLQ-05. Each measures one thing about the card in its own unit.
sustained score
The throughput a GPU holds across the whole run, after the ceiling.
ceiling
The highest score Siliq accepts from one vendor family on one instrument.
SCU
Siliq compute unit. 28 teraflops on SLQ-01, 18 GB moved on SLQ-02, 45,000 megapaths on SLQ-03, 9 teraflops on SLQ-04, 5 teraflops on SLQ-05.
lineage
Who designed the chip, who manufactured it, who made its memory. It decides which stock tokens a run pays in.
genesis run
A run before $SILQ launches. Scored and listed, not paid.
trial
One free run per address after launch. Scored and listed, not paid.
pass
A signed message, no transaction, from a wallet holding at least $25 of $SILQ. It lasts 24 hours.
tier
etch, stack, tape-out. Set by your holding; decides the multiplier and how many GPUs mine at once.
cycle
A 6 hour window. Runs add up inside it and settle together when it closes.
voucher
A settler signature listing the tokens and amounts a wallet earned in one cycle. You redeem it on chain.
settler
Siliq's signing key for vouchers. It lives on the server; treat it as a hot key.
governor
The rule that scales payouts toward 1.2% of the vault per day.
vault
SiliqVault, the contract on Robinhood Chain that holds the stock tokens and pays vouchers.
node
A machine running silq-node.mjs that serves open models from a local Ollama. Unpaid for now.
$SILIQ
In code samples, the origin of this site.

12Support

Siliq has one public account: @siliq on X. Announcements, answers and the contract addresses at launch all go there first.

What Siliq keeps about you is on /privacy. What it can and cannot promise is on /terms.