{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/hedera/refs/heads/main/json-schema/Opcode.json",
  "title": "Opcode",
  "description": "Represents a struct/opcode log entry in a trace",
  "type": "object",
  "required": [
    "depth",
    "gas",
    "gas_cost",
    "memory",
    "op",
    "pc",
    "stack",
    "storage"
  ],
  "properties": {
    "depth": {
      "description": "The current call depth",
      "type": "integer",
      "format": "int32"
    },
    "gas": {
      "description": "The remaining gas",
      "type": "integer",
      "format": "int64"
    },
    "gas_cost": {
      "description": "The cost for executing op",
      "type": "integer",
      "format": "int64"
    },
    "memory": {
      "description": "The EVM memory with items in hex",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string",
        "format": "binary"
      }
    },
    "op": {
      "description": "The opcode to execute",
      "type": "string"
    },
    "pc": {
      "description": "The program counter",
      "type": "integer",
      "format": "int32"
    },
    "reason": {
      "description": "The revert reason in hex",
      "type": [
        "string",
        "null"
      ],
      "format": "binary"
    },
    "stack": {
      "description": "The EVM stack with items in hex",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string",
        "format": "binary"
      }
    },
    "storage": {
      "description": "The storage slots (keys and values in hex) of the current contract which is read from and written to",
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": {
        "type": "string",
        "format": "binary"
      }
    }
  }
}