Skip to content
TraceFast Docs

One contract

Open the contract on its entity page →

One deployed contract: the hash and size of its current runtime code, what that code exposes — the four ERC-20 view functions, ERC-165, an EIP-1167 minimal proxy and its target — the proxy pattern detected in it, and its lifecycle: who deployed it, from which transaction, how often its code changed and whether it self-destructed.

GET https://tracefast.xyz/api/v1/chains/1/contracts/{address}
ParameterInTypeNotes
addresspathstring0x-prefixed, 40 hex characters, any case

Access — an API key on the Enriched Data plan or higher (plans), or no key at all: pay per call with x402 at the same path on https://mpp.tracefast.xyz/api/v1, at the price its 402 states. As a tool for AI agents: get_contract on the MCP server. Stable — see stability.

chains/1 is a literal: other chain ids answer 404 chain_not_supported. The method takes no query parameters — an unknown one is refused rather than ignored.

What it covers, and what it does not

  • Everything here is read from the code, not from a verified source or an ABI. isErc20 means the bytecode exposes all four ERC-20 view functions; it does not say the contract behaves like a token.
  • proxyFamily is a detection from the code alone. A proxy that keeps its implementation pointer in a storage slot the code does not reveal reads unknown here — USDC in the example below is one. The proxy method lists the implementations actually observed, for every proxy kind.
  • An account with an EIP-7702 delegation has code too. It is answered with bytecodeVariant: eip7702: the code is a delegation designator, not a contract.
  • An address with no indexed code answers 404, not an empty body.

Response

200 application/json:

{
  "data": {
    "chainId": 1,
    "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "codeHash": "0xd80d4b7c890cb9d6a4893e6b52bc34b56b25335cb13716e0d1d31383e6b41505",
    "blockNumber": 6082465,
    "bytecodeSize": 2186,
    "bytecodeVariant": "legacy_analyzed",
    "isErc20": false,
    "isErc165": false,
    "isEip1167Proxy": false,
    "selectorCount": 6,
    "erc20Interface": {
      "hasDecimals": false,
      "hasSymbol": false,
      "hasName": false,
      "hasTotalSupply": false
    },
    "proxyFamily": "unknown",
    "proxyConfidence": 1,
    "lifecycle": {
      "deployBlock": 6082465,
      "latestCodeBlock": 6082465,
      "deployCodeHash": "0xd80d4b7c890cb9d6a4893e6b52bc34b56b25335cb13716e0d1d31383e6b41505",
      "latestCodeHash": "0xd80d4b7c890cb9d6a4893e6b52bc34b56b25335cb13716e0d1d31383e6b41505",
      "codeChangeCount": 1,
      "isAlive": true,
      "deployer": "0x95ba4cf87d6723ad9c0db21737d862be80e93911",
      "origin": "0x95ba4cf87d6723ad9c0db21737d862be80e93911",
      "deployTxHash": "0xe7e0fe390354509cd08c9a0168536938600ddc552b3f7cb96030ebef62e75895",
      "deployTxIndex": 22,
      "deployCallType": "CREATE"
    }
  },
  "meta": {
    "chain": "ethereum",
    "timestamp": 1789047625242,
    "cached": false,
    "docs": "https://docs.tracefast.xyz/api/contract"
  }
}

The USDC address is the proxy; the six selectors are the proxy's own admin functions, not the token's. The token logic lives in the implementation — see the same address in the proxy method.

data

FieldMeaning
chainId1 — Ethereum mainnet
addressthe contract, lowercase
codeHashKeccak-256 hash of the current runtime code
blockNumberthe block of the current code
bytecodeSizesize of the current runtime code in bytes
bytecodeVariantlegacy_raw, legacy_analyzed, or eip7702 — a delegation designator, not code
isErc20true when the code exposes all four ERC-20 view functions; erc20Interface has each one
isErc165true when the code exposes supportsInterface (ERC-165)
isEip1167Proxytrue when the code is an EIP-1167 minimal proxy
selectorCounthow many 4-byte function selectors were found in the code — listed by the selectors method
erc20InterfacehasName, hasSymbol, hasDecimals, hasTotalSupply — which ERC-20 view functions the code exposes
proxyFamilythe class of the contract's own current code, for example eip1967_impl, eip1967_admin, beacon, minimal_proxy, oz_v1, diamond_like, storage_delegate (the code delegates to an address it reads from storage — a Safe is one), eip7702, none, unknown. The set grows as patterns are added. It can differ from proxyFamily in the rows of the proxy method, which records the class at the time each implementation link was seen. Absent when not determined
proxyConfidenceconfidence of proxyFamily, 0 (none) to 3 (high). Absent with it
proxyImplementationthe target of an EIP-1167 minimal proxy. Absent for every other contract
lifecyclehow the contract came to exist and whether it still does. Absent when not yet known for the address

lifecycle

FieldMeaning
deployBlockthe block the contract was deployed at
deployCodeHashhash of the code deployed at deployBlock
latestCodeBlockblock of the latest code change; equal to deployBlock when the code never changed
latestCodeHashhash of the code at latestCodeBlock. Absent when not stated
codeChangeCounthow many code states were observed, deployment included
isAlivefalse after a self-destruct
selfDestructBlockthe block of the self-destruct; absent while the contract is alive
deployerthe account that executed the creation — a factory, or the sender itself
originthe externally owned account that sent the creating transaction
deployTxHashthe creating transaction
deployTxIndexits index within the block
deployCallTypeCREATE or CREATE2

deployer, origin, deployTxHash, deployTxIndex and deployCallType are absent while the creation has not been indexed yet. How contract creation works: ethereum.org — smart contracts.

Errors

StatuscodeWhendetails
404not_foundno contract code is indexed at this address—
422block_not_availablereason: coverage_gap — recent blocks are in a coverage gap, and a contract deployed in them cannot be seen right now. Retry later; it is not a statement that the contract does not existcoverageGapFromBlock, coverageGapToBlock, maxAvailableBlock

Malformed input, unknown parameters and the key check's 401/403/429 are the same for every method — see conventions and API keys.


Last updated 22 Oct 2026, 08:06 UTC · verified against TraceFast v1.0.261 · Markdown