Overview
Watt turns trading fees on the WATT token into compute for the people holding it. Every buy and sell on the Pons curve pays a fee: a 1% creator tax and a 1% Pons fee. The creator tax purchases NVIDIA capacity; once an hour that capacity is divided among eligible holders as compute credits, measured in hours. Holders claim credits onto API keys and spend them through an OpenAI-compatible inference gateway or on dedicated pods with SSH access.
There is no staking, no lockup and no transaction required to receive credits. Holding at least WATT in a wallet at the hourly snapshot is the only condition.
This page is the reference. The landing page has a calculator and a shorter explanation.
Concepts
- Compute credit
- What holders receive. Credits are measured in hours and live on your ledger until claimed.
- hour
- One hour of exclusive access to one NVIDIA . Pods give that access directly. API requests are metered by the GPU-seconds they occupy on a pool and deducted in the same unit.
- Ledger
- The per-wallet record of credits added, claimed and revoked. Read it on the ledger page or through the ledger API.
- Key
- A bearer token carrying claimed credits, up to hours. Anyone holding the key can spend its balance.
- Snapshot
- The hourly reading of eligible balances used to divide that hour's purchased compute.
- Eligible supply
- Total WATT supply minus treasury, liquidity pool, locked or vesting, burned and contract-held tokens, measured at the snapshot. Balances below WATT are also excluded.
- Current price
- The dollar cost of one hour that the protocol uses to convert fees into hours. Posted weekly. Hours are fixed at the price in effect when credited.
- Fee source
- The Pons bonding curve for WATT. Its buy and sell events carry the creator tax per trade, which the settlement reads every few minutes.
Lifecycle of a fee
- 1
A trade settles
The WATT market charges of the trade value on both buys and sells and sends it to the fee escrow.
- 2
The curve splits the fee
The 1% creator tax is earmarked for holder compute. The 1% Pons fee goes to the launchpad and to the protocol for operations. Fees are paid in NVDA and priced in dollars with the Chainlink NVDA/USD feed at collection.
- 3
Compute is purchased
At the top of each hour, the holder half collected in the previous hour is converted into hours at the current price. The protocol buys capacity from cloud providers against that amount.
- 4
Balances are snapshotted
The first block after the hour is read. Every address holding at least WATT, excluding the addresses listed under eligible supply, is included with its balance.
- 5
Credits are added
Each included address receives hours in proportion to its share of eligible supply. The credit is written to its ledger with the hour, the price used and the share.
- 6
Credits are claimed and spent
The holder moves hours onto a key and uses the gateway or a pod. Metering deducts GPU-seconds from the key.
Snapshot rules
- Cadence
- Once per hour, at the first block after the top of the hour, UTC.
- Minimum balance
- WATT. Below that, the address is not included that hour.
- Share
- address balance divided by eligible supply at that snapshot.
- Smart accounts
- Each wallet or smart account is a separate holder. Balances across addresses are not combined.
- Exchanges
- Not counted. The exchange's address holds the tokens.
- Selling
- Changes your allocation from the next snapshot. Credits already on your ledger remain.
- Buying
- Counts from the first snapshot after the tokens are in your wallet.
- Rounding
- Hours are stored as whole GPU-seconds. Fractions below one second are carried to the next hour.
price
The current price is what one dedicated hour costs the protocol across its providers, weighted by the hours bought that week. It is a cost, not a markup and not a market quote. It is posted on the price page and in the x-watt-price-usd response header.
- Revision
- Weekly, Monday 00:00 UTC. Applies to snapshots from that hour.
- When hours are fixed
- At the snapshot that credits them. Later price changes do not alter hours already on a ledger or a key.
- Direction
- Down as often as up. When provider prices fall, the price falls and each dollar of fees buys more time. No floor, no smoothing.
- Before launch
- The price shown on this site is an example. The first real price is posted with the first snapshot.
Worked example
Assume $2,000,000 of monthly trading volume, an eligible supply of 1,000,000,000 WATT, a price of $0.89 per hour, and a wallet holding 250,000 WATT.
$2,000,000 monthly trading volume × 2% trading fee = $40,000 in fees $40,000 × 50% creator tax, allocated to holders = $20,000 for capacity $20,000 ÷ $0.89 per hour = 22,472 total hours 250,000 WATT ÷ 1,000,000,000 eligible WATT = 0.025% share 22,472 hours × 0.025% = 5.62 hours for the month, about 5 hours 37 minutes
The same arithmetic runs on the landing page calculator with your own numbers. Per $100 traded: $2.00 fee, $1.00 creator tax to holder compute, 1.12 hours, about 1 hour 7 minutes.
Authentication
Every request carries a key as a bearer token. Keys start with wt_ and are claimed from your ledger, one tranche of up to hours at a time. A key belongs to the wallet that claimed it and cannot be topped up. When it runs dry, claim another.
Authorization: Bearer wt_live_3f9c…
Keys are shown once, at claim time. Losing one does not lose the hours still on it: revoke it from the ledger and the remainder returns to your balance.
Metering
Credits are deducted as GPU-seconds. Inference is metered on the wall-clock time a request occupies a GPU, not on tokens. Pods are metered from the second the SSH target is reachable until the pod is deleted. Every response carries the deduction in headers.
| Header | Meaning |
|---|---|
x-watt-gpu-seconds | GPU-seconds deducted for this request |
x-watt-remaining-seconds | GPU-seconds left on the key after this request |
x-watt-price-usd | Current price at the time of the request |
Queue time is not metered. A request that waits for a GPU and is then rejected costs nothing. Requests run as one job on the serverless worker and are metered on the worker's reported execution time, so queue time is never charged. Streaming (stream: true) is not available on this route; the full response is returned when the job completes, with the deduction in the headers.
Chat completions
OpenAI-compatible. Anything that speaks /v1/chat/completions works unchanged, including tool calls, JSON mode and max_tokens. stream is ignored and the response is returned whole. Unknown parameters are ignored, not rejected.
POST /v1/chat/completions
{
"model": "qwen2.5-7b",
"messages": [{ "role": "user", "content": "hello" }],
"stream": false
}
Requests queue for a pool . If no GPU frees up within 30 seconds the request returns 503 with a retry-after header. Also supported: /v1/completions and /v1/embeddings for the models that expose them.
Models
GET /v1/models lists what is loaded. The set is small on purpose: a few well-tested open weights kept warm so a request never waits on a cold load.
| Model | Context | Notes |
|---|---|---|
qwen2.5-7b | 128k | default, tool calls |
qwen2.5-coder-32b | 32k | code |
deepseek-r1-distill-70b | 64k | reasoning traces |
Pods
A pod is a container with a whole and an SSH target. Ask for an image and a number of hours. The hours are reserved from your key up front and the unused remainder is returned when you delete the pod.
POST /v1/pods
{ "gpu": "rtx-5090", "image": "pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime", "hours": 2 }
200 { "id": "pod_8f2", "ssh": "ssh root@pod-8f2.watt.so", "expires_at": "2026-09-02T05:00:00Z" }
GET /v1/pods list your pods
GET /v1/pods/pod_8f2 status, remaining seconds
DELETE /v1/pods/pod_8f2 stop and return the remainder
- Images
- Docker Hub and GHCR. Public images only. Anything over 20 GB is rejected at create time rather than billed while it downloads.
- Duration
- 1 to 24 hours per pod. Extend by creating a new pod; state does not carry over.
- Storage
- 50 GB of local NVMe, wiped on delete. No persistent volumes. Copy outputs out before the pod expires.
- Network
- Outbound internet, inbound SSH on port 22 only.
- Expiry
- Ten minutes before expiry the pod receives
SIGTERMin the entry process. At expiry it is deleted.
Ledger API
Read a wallet's ledger without a key by signing a message with the holding wallet. The signature proves ownership and is not stored.
GET /v1/ledger/0xYourAddress
x-watt-signature: <EIP-191 signature of "watt-ledger:<unix hour>">
200 {
"address": "0x…",
"balance": "250000",
"eligible": true,
"hours_available": 3.42,
"hours_claimed": 2.00,
"last_settlement": "2026-09-02T03:00:00Z",
"entries": [
{ "hour": "2026-09-02T03:00:00Z", "share": 0.00025, "hours": 0.0021, "price_usd": 0.89 }
]
}
The signed message includes the current unix hour, so a signature is valid for at most two hours. GET /api/message returns the exact string to sign. Send the address in x-watt-address on key routes. Entries are paginated with ?before=<hour>.
Keys
Claiming moves hours from your ledger onto a new key. Pass the number of hours to move, up to . Revoking a key returns whatever is left on it. Claiming requires the same wallet signature as the ledger read.
POST /v1/keys { "hours": 10 } returns the key once
GET /v1/keys list keys, masked, with remaining seconds
DELETE /v1/keys/wt_… revoke and return the remainder
Errors
| Status | Code | What to do |
|---|---|---|
| 401 | invalid_key | Key is malformed, revoked, or belongs to another gateway |
| 402 | credits_exhausted | Key has no seconds left. Claim a new one from the ledger |
| 403 | bad_signature | Ledger or key request signature is invalid or older than an hour |
| 409 | pod_limit | Two pods per key at once. Delete one first |
| 413 | image_too_large | Image exceeds 20 GB |
| 429 | rate_limited | Back off for the seconds in retry-after |
| 503 | no_gpu | Pool is full. Retry after the header says so |
Limits
| Limit | Value |
|---|---|
| Hours per key | |
| Keys per wallet | 10 active |
| Concurrent inference requests per key | 8 |
| Pods per key | 2 |
| Pod duration | 1 to 24 hours |
| Request body | 4 MB |
| Ledger reads | 60 per hour per address |
Data handling
- Prompts and outputs
- Not stored. They pass through the gateway to the model and back.
- Weights and pod contents
- Not stored. Pod disks are wiped on delete.
- Request metadata
- Key id, timestamps, model, GPU-seconds and status code are retained for 30 days for billing and abuse prevention.
- Wallet addresses
- Public chain data. Ledger entries are retained indefinitely so credits can be audited.
- Providers
- Infrastructure providers may process workload data under their own policies while a job runs.
Security
- Keys are bearer tokens
- Anyone with a key can spend it. Store keys in a secret manager, not in code. Revoke a leaked key immediately; the remainder returns to your ledger.
- Ledger access
- Requires a wallet signature over a message that includes the current hour. Signatures cannot be replayed after that hour.
- Contracts
- The token and fee escrow will be published with source on the explorer at launch. A security audit has not been completed.
- Reporting
- Send vulnerability reports to security@watt.so.
Glossary
- Allocation
- The hours an address receives at one snapshot.
- Claim
- Moving hours from a ledger onto a key.
- Credit
- Compute owed to a holder, measured in hours.
- Eligible
- An address counted in a snapshot.
- GPU-second
- The metering unit. 3,600 GPU-seconds equal one hour.
- Pool
- A GPU the protocol runs inference on for many keys.
- Pod
- A container with one whole and SSH access.
- Settlement
- The hourly run that purchases compute, snapshots balances and writes credits.
Launch status
Watt is pre-launch. Contracts and the fee escrow are not deployed, the gateway is not accepting keys, and the price shown on this site is an example. This page describes the system as it will operate at launch. Anything that changes before then will be noted here.
- Network
- Robinhood Chain,
- Token contract
- Fee escrow
- Security audit
- not completed