Example Queries

Assuming your address is 0xd8da6bf26964af9d7eed9e03e53415d37aa96045 (Hi Vitalik 👋), here are some sample GraphQL queries to get you quickly started with OptSwaps subgraphs. Feel free to explore all the other entities and fields available!

Refer to the associated smart contracts documentation for full details about the various returned enumerated types and denominations.

My Orders

# All My Orders
query MyOrders {
  optSwapOrders(where: { user: "0xd8da6bf26964af9d7eed9e03e53415d37aa96045" }) {
    id
    contract
    optionStyle
    optionType
    strike0
    strike1
    expiry
    lotSize
    orderType
    premium
    lots
    user
    timestamp
    blockNumber
  }
}

# Response:
{
  "data": {
    "optSwapOrders": [
      {
        "id": "0x18bb81e4153528cd8823857726b2ca6f994450ae010bd20a9bb5550436fb6498-2",
        "contract": "0xdbebcddf47ea77561ab5f98c40baf2f89a6770d4",
        "optionStyle": 0, # European Style Option
        "optionType": 1, # Call Option
        "strike0": "12000000", # in basis points of the cash token
        "strike1": "170141183460469231731687303715884105728", # 2^127 for Call Options
        "expiry": "1657267200", # Unix timestamp
        "lotSize": "10000", # in basis points
        "orderType": 1, # Buy Order
        "premium": "100", # in basis points of the cash token
        "lots": "10",
        "user": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
        "timestamp": "1656920647", # Unix timestamp
        "blockNumber": "27025991"
      },
      ...
    ]
  }
}

My Positions

# All My Positions for a given expiry timestamp
query MyPositionsForLastExpiry {
  optSwapPositions(where: { expiry: "1657267200",  user: "0xd8da6bf26964af9d7eed9e03e53415d37aa96045" }) {
    id
    contract
    optionStyle
    optionType
    strike0
    strike1
    expiry
    lotSize
    orderType
    lots
    lotsLocked
    lotsSettled
    bookedProfitsOrLosses
    user
    createdAt
    timestamp
    blockNumber
  }
}

# Response:
{
  "data": {
    "optSwapPositions": [
      {
        "id": "0xaccd7b5f1adaab6f911d3a944adcb5966ee220cfbf104e5e3cdd6e4803fec876",
        "contract": "0xdbebcddf47ea77561ab5f98c40baf2f89a6770d4",
        "optionStyle": 1, # American Style Option
        "optionType": 0, # Put Option
        "strike0": "12000000", # in basis points of the cash token
        "strike1": "0", # in basis points
        "expiry": "1657267200", # Unix timestamp
        "lotSize": "10000", # in basis points (of the underlying token)
        "orderType": 0, # Sell Order
        "lots": "3",
        "lotsLocked": "0",
        "lotsSettled": "3",
        "bookedProfitsOrLosses": "-372000000", # Negative values mean losses; in subunits of the Cash Token
        "user": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
        "createdAt": "1656919724", # Unix timestamp
        "timestamp": "1656919724", # Unix timestamp
        "blockNumber": "27025831"
      },
      ...
    ]
  }
}

Latest Blocks

# The latest block indexed by the subgraph
query LastIndexedBlock {
  latestBlock(id: "latest") {
    id
    timestamp
    number
  }
}

# Response:
{
  "data": {
    "latestBlock": {
      "id": "latest",
      "timestamp": "1657379691", # Unix timestamp
      "number": "27097838"
    }
  }
}

# Latest blocks in which each contract was interacted with
query ContractInteractionLatestBlocks {
  latestBlocks {
    id
    timestamp
    number
  }
}

# Response:
{
  "data": {
    "latestBlocks": [
      {
        "id": "MetaOracle",
        "timestamp": "1657365133", # Unix timestamp
        "number": "27095701" # Block number
      },
      {
        "id": "OptSwap-0x83577b77c5a0a169883bc5cd5d7585cc77c94358",
        "timestamp": "1656862308",
        "number": "27017041"
      },
      ...
      {
        "id": "OptSwapDAOVeToken",
        "timestamp": "1656863802",
        "number": "27017299"
      },
      {
        "id": "latest",
        "timestamp": "1657386405",
        "number": "27099049"
      }
    ]
  }
}

Last updated