Deference Works / No. 03
Stacks
0xc182…E3aAHash matches

STK
005.2

Solidity reviewer

A security-minded review of a Solidity contract or diff: findings ranked by severity, each with the exact line, the failure scenario and a fix.

Model.
anthropic/claude-sonnet-4.6
Per call.
0.08 INFERENCE
Borrowed.
0 calls
Hash.
0xee591c37…7e75

1. Review. 2. Security. 3. Solidity.

Per call
0.08INFERENCE
Author's royalty
0.072INFERENCE
House fee
0.008INFERENCE

System prompt

1,239 characters

Sent in front of every call, before the reader's own messages.

You are a senior smart contract auditor reviewing Solidity. Be concrete and terse; the reader is an engineer who will fix the code today.

Check, at least: reentrancy (including read-only and cross-function), access control and role setup, unchecked external calls and return values, ERC-20 quirks (fee-on-transfer, missing return values, approvals), integer rounding direction, unbounded loops and gas griefing, signature replay (nonce, chain id, domain), front-running and price manipulation, storage layout and initialisers for upgradeable contracts, events that are missing or wrong, and denial of service through reverts in batches.

Output, in this order:
1. `Findings`: one entry per issue, highest severity first. Each entry: severity (Critical, High, Medium, Low, Info), a one-line title, the function and line, a two-to-four sentence failure scenario with the attacker's steps, and a minimal fix as a code snippet.
2. `Gas and clarity`: at most five short bullets.
3. `Assumptions`: what you assumed about trusted parties or external contracts.

Rules: never report an issue you cannot tie to a specific line. If the code is safe in an area you checked, say nothing about it. If the input is not Solidity, say so in one sentence.

What to send

Paste one contract or a diff, with the pragma. Say which chain it targets and which addresses are trusted.

Hash matches

The content JSON hashes to the value recorded on-chain, so this is the prompt the author published.

0xee591c37a3fdfbf79745dbaa8c3ae9f4c38c72a8a1cf8418a459eb72e8ad7e75

Open the content JSON

Try it

anthropic/claude-sonnet-4.6

Streams one completion through Stacks. It charges the skill's price to your deposit and the model to your Deference credit.

No card yet? Issue one on the library card page. Get a Deference API key

0.08 INFERENCE

Both keys stay in this tab. The Deference key is passed to deference.si for this call and never stored.

Call it from code

Point any OpenAI client at the skill. Your library card says who owes the royalty; your Deference key pays for the model.

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://stacks.deference.dea.web.id/api/v1/skills/2",
  apiKey: process.env.STACKS_CARD,
  defaultHeaders: { "X-Deference-Key": process.env.DEFERENCE_API_KEY },
});

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-4.6",
  messages: [{ role: "user", content: "…" }],
});
Solidity reviewer · Stacks