Overview
Verifiable off-chain compute for EVM contracts.
Gas Killer is a verifiable off-chain compute service for EVM contracts. Smart
contracts offload expensive computation to a network of restaked operator
nodes. Operators run the task and sign the result with BLS keys; the router
aggregates those signatures into a compact proof and returns a ready-to-sign
transaction. You submit that transaction from your own wallet: a single
verifyAndUpdate call that writes back the result and verifies it against the
aggregate signature, instead of recomputing it on-chain.
Where to start
- Quickstart — submit your first task, poll for the result, and settle it on-chain.
- Architecture — how a task flows from submission to on-chain settlement.
- API Reference — the full HTTP API, generated from the OpenAPI specification.
- Solidity Reference — add the SDK to your contract and configure it to accept payloads.
What an integration looks like
An integration has two halves, and both must be in place:
- On-chain — your contract inherits
GasKillerSDK, which gives it theverifyAndUpdateentrypoint and a transition counter. You mark the expensive functiontrackStateand wire the contract to the live operator set. - Off-chain — you submit a task naming that contract and the call you want
performed. The router returns a
verifyAndUpdatetransaction; you sign it and submit it from your own wallet.
Evaluating rather than building? The Quickstart borrows an already-deployed contract, so you can watch a settlement land without writing any Solidity. When you want this on a contract of your own, start with the Solidity Reference.
The API at a glance
The router exposes a small HTTP API:
| Endpoint | Purpose |
|---|---|
POST /tasks | Submit a compute task (requires an API key). |
GET /tasks/{task_id} | Poll a task; returns the ready-to-sign payload once it is ready. |
GET /tasks | List your tasks, with optional status filter and pagination. |
GET /avs-metadata | Public AVS identity document. |
All requests and responses are JSON. Errors share a single envelope shape,
{ "error": { "code", "message" } }, where code is a stable machine-readable
identifier.
The contract side at a glance
Inheriting GasKillerSDK is what makes a contract a valid target. It supplies:
| Member | Purpose |
|---|---|
verifyAndUpdate | Settlement entrypoint — verifies the quorum signature, then applies the diff. |
trackState | Marks a function as a tracked transition and advances the counter. |
stateTransitionCount() | Binds a payload to one specific state, so it cannot be replayed. |
avsAddress / blsSignatureChecker | The operator set the contract trusts. |
inTransition() | Lets external readers reject mid-transition state. |
See the Solidity Reference for the full surface, and Configuration for the addresses a target must be wired to.
