Guía para desarrolladores de multidifusión

  • Actualización

Introducción

introducción de la multidifusión de eventos públicos en la red de colocación de Deribit proporciona una interfaz de baja latencia para distribuir la información que también reduce significativamente los requisitos de recursos tanto del lado del cliente como del servidor. La migración de los clientes para que utilicen eventos de multidifusión en lugar de suscripciones a eventos en la API de Websocket no solo les permite reaccionar más rápido gracias a la menor latencia y a una codificación más eficiente, sino que también mejora la velocidad de procesamiento de las acciones de negociación en los nodos de

Sugerencia

El paquete de desarrollo del cliente de multidifusión, que incluye los scripts y la documentación de apoyo, está disponible para su descarga en el siguiente enlace:

Descargue el paquete de desarrollo de clientes Deribit Multicast

Este paquete está destinado a ayudar a los desarrolladores a integrarse con el feed de multidifusión de Deribit e incluye todos los materiales necesarios para empezar rápidamente.

Codificación de paquetes de multidifusión

Los eventos se envían en paquetes de multidifusión UDP con el formato SBE (codificación binaria simple).

El sistema de multidifusión agrupa los eventos por combinación de divisas y productos (perpetuos, opciones, futuros). Estos grupos se pueden asociar a los canales (las asociaciones de canales reales se mantienen y comparten en un documento independiente), donde a cada canal se le puede asignar una dirección de grupo de multidifusión y un número de puerto de destino UDP independientes. Cada canal conserva un historial limitado de 100.000 paquetes para su recuperación

Tras el encabezado del protocolo UDP, los paquetes de multidifusión comienzan con un encabezado de entramado que contiene la longitud del paquete, el identificador del canal y un número de secuencia en el canal (más información sobre el número de secuencia en 4.D). La longitud del paquete es la longitud total de todos los mensajes del SBE (después del número de secuencia) en bytes. El objetivo principal de este encabezado es permitir a los clientes detectar si pierden paquetes y recuperarlos mediante la API WebSocket/REST normal

Longitud del paquete (uint16)

ID de canal (uint16)

Número de secuencia (uint32)

Mensaje SBE

Mensaje SBE

Mensaje SBE

Tenga en cuenta que todos los mensajes de muestra que se proporcionan a continuación, así como la captura de paquetes de muestra, provienen de un sistema de desarrollo local, con instrumentos definidos únicamente con el propósito de generar datos para probar/desarrollar el decodificador de multidifusión. Los parámetros del producto o instrumento utilizados no coinciden (ni pretenden hacerlo) con los

A - Introducción al formato de mensaje SBE

SBE es una codificación binaria eficiente con funciones que permiten, por ejemplo, ampliar el protocolo con nuevos elementos de forma compatible con versiones anteriores. También tiene un estándar bastante utilizado y conocido, con una comunidad detrás de él que proporciona, por ejemplo, herramientas

Cada mensaje de SBE contiene un encabezado, varios campos de longitud fija, grupos (listas de elementos de longitud variable) y, opcionalmente, campos de longitud variable en esta secuencia estricta.

Encabezado (tamaño fijo)

Campos de longitud fija (tamaño fijo)

Grupos

Campos de longitud variable

Nota

La especificación XML se proporciona en 2 formatos a partir de la versión 1.6.1. Se debe a una discrepancia en el comportamiento del código generado en los diferentes idiomas. Según los comentarios de los clientes, parece que el código generado para algunos de los lenguajes ya asume el messageHeader como parte de cada mensaje y no requiere que forme parte de cada sección del mensaje (incluso requiere una corrección manual). Para estos casos, se proporciona un archivo XML sin messageHeader siendo parte de las especificaciones del mensaje (deribit_multicast_noheader.xml). La otra versión (predeterminada) es para los idiomas (por ejemplo, CPP) en los que el generador de código necesita que se especifique el encabezado en cada mensaje (deribit_multicast.xml). Para los clientes que utilizan CPP con la herramienta generadora de código de

Herramientas de lógica real o desarrolladas internamente que dependen de messageHeader especificado en los mensajes, se recomienda el XML predeterminado.

Los fragmentos de mensajes XML de este documento NO incluyen el encabezado. El mismo mensaje con el encabezado incluido contiene además messageHeader como primer campo (y los identificadores de campo subsiguientes aumentarán en uno).

Cabecera SBE

<composite name="messageHeader">
<type name="blockLength" primitiveType="uint16" />
<type name="templateId" primitiveType="uint16" />
<type name="schemaId" primitiveType="uint16" />
<type name="version" primitiveType="uint16" />
<type name="numGroups" primitiveType="uint16" />
<type name="numVarDataFields" primitiveType="uint16" />
</composite>
  • blockLength es el número total de bytes de los campos fijos del mensaje. El propósito de este campo es que si se introduce un nuevo campo fijo (siempre después de los campos existentes), el cliente pueda decodificar los campos que conoce y, basándose en este campo, puede omitir

los elementos adicionales para encontrar el principio de los posibles campos de grupos/variables, o el final del mensaje

  • templateId hace referencia al identificador del mensaje correspondiente (por ejemplo, 1001 para un cambio en la cartera de pedidos)

  • El schemaId y version los campos sirven para indicar el identificador de la especificación XML y su número de versión

  • numGroups es el número de grupos o listas del mensaje. El propósito de este campo es similar al blockLength y permite introducir nuevos grupos de forma compatible con versiones anteriores

  • numVarDataFields tienen un propósito similar al blockLength y numGroups

Bloque de longitud fija

La lista de campos individuales de longitud fija se encuentra en este bloque. Estrictamente en la secuencia definida en la especificación XML. Los campos opcionales están presentes con un valor predeterminado, ya sea mencionado explícitamente en la plantilla de mensajes/campos XML o tal como se define en la especificación de SBE para el

Grupos

Los grupos son una lista de elementos. Cada mensaje puede contener 0 o más grupos. Cada grupo puede tener 0 o más elementos. Los elementos tienen una estructura similar a la de los mensajes de SBE. Pueden consistir en un bloque de longitud fija, grupos (anidados) y campos de longitud variable. La información sobre la estructura de los elementos, así como el número de elementosnumInGroup) se describe en el encabezado de cada grupo.

La definición del encabezado del grupo:

<composite name="groupSizeEncoding">
<type name="blockLength" primitiveType="uint16"/>
<type name="numInGroup" primitiveType="uint16"/>
<type name="numGroups" primitiveType="uint16"/>
<type name="numVarDataFields" primitiveType="uint16"/>
</composite>

Tenga en cuenta que si el encabezado del grupo indica que las entradas no tienen grupos anidados (numGroups = 0) o campos de datos de longitud variable (numVarDataFields = 0) entonces las entradas tienen una longitud fija que es igual a blockLength. En este caso, el número total de bytes del grupo se puede calcular de la siguiente manera: blockLength * numInGroup.

Campos de longitud variable

Los campos de longitud variable comienzan con una longitud y un número de bytes de longitud. En la implementación actual, los campos variables se utilizan para los nombres de los instrumentos en los eventos o mensajes de los instrumentos

<composite name="varString" description="Variable-length string">
<type name="length" primitiveType="uint8" />
<type name="varData" length="0" primitiveType="uint8" />
</composite>

Flota en lugar de decimales

La especificación SBE recomienda usar decimales para la representación del precio/importe; sin embargo, dado que en este caso de uso, debido a la gran variedad de instrumentos, elegimos el doble (flotante de 64 bits) para simplificar la interfaz. Esto significa que, al utilizar esos valores para el cálculo, se debe tener en cuenta la propiedad inherente de los valores flotantes de que no todos los números se pueden representar con exactitud. Dado que esta «imprecisión» inherente a la flotación se produce después de 15 decimales, se recomienda que el cliente redondee los valores recibidos, por ejemplo, a

Eventos de multidifusión

Desde la versión 1.6, la plataforma difunde múltiples eventos:

La estructura y el contenido de los eventos pretenden ser iguales o muy similares a los actuales Eventos de suscripción a la API de Websocket.

A - Instrumento

El propósito del Instrumento el evento consiste en notificar a los clientes cuando un instrumento (cartera de pedidos) es creado o cambia el estado del ciclo de vida, y para proporcionar información estática del instrumento mediante instantáneas.

A partir de este evento, los clientes pueden:

  • Comience a rastrear un instrumento recién creado o reactivado.

  • Deje de rastrear un instrumento que ha pasado a un estado de ciclo de vida inactivo o terminal.

  • Mantenga un entorno confiable Mapeo de nombres de instrumentos Instrument ID ↔, ya que ambos están incluidos en la carga útil del mensaje.

El mensaje del instrumento también se envía en canales de instantáneas, donde proporciona metadatos estáticos del instrumento como parte del flujo de instantáneas.

Estados del ciclo de vida del instrumento y de la cartera de pedidos

Con 13 de enero de 2026 lanzamiento, el state el campo representa el fase actual del ciclo de vida de la cartera de pedidos del instrumento. Cada estado define explícitamente qué acciones están permitidas y cómo se comporta la cartera de pedidos

Los estados del libro de pedidos admitido:

  • abrir

    Estado de negociación activo predeterminado. La cartera de pedidos acepta nuevos pedidos, modificaciones y cancelaciones. Los precios se actualizan y las operaciones

  • bloqueado

    nuevos pedidos ni modificaciones; se aceptan cancelaciones. Los libros pueden empezar en este estado o bloquearse mediante una acción administrativa. Sigue siendo posible llegar a un acuerdo.

  • asentamiento

    Introducido durante el procesamiento de la liquidación o la entrega. No se aceptan nuevos pedidos, modificaciones ni cancelaciones. Los pedidos con fecha límite se cancelan en el momento de

  • entregado

    Estado final tras la finalización de la entrega. No se aceptan nuevos pedidos, modificaciones ni cancelaciones. Todos los pedidos abiertos se cancelan

  • inactivo

    No se aceptan nuevos pedidos, modificaciones ni cancelaciones. Todos los pedidos abiertos se cancelan en el momento de la entrada. Este estado puede ser definitivo y se usa para instrumentos que ya no están activos, incluidos los instrumentos combinados.

  • detenido

    ingresó debido a una condición de error. La liquidación no es posible mientras ningún libro esté en este estado.

Las transiciones del ciclo de vida se comunican a través de mensajes de instrumentos, lo que permite a los clientes responder con precisión a la disponibilidad de las operaciones, al procesamiento de liquidaciones y a las condiciones de las terminales.

Cambios de instrumentos por lotes

Cuando los cambios de instrumentos se producen de forma masiva (por ejemplo, al cerrar varios libros de opciones), es posible que se envíen varios mensajes de instrumentos combinados en un solo paquete, incluso en diferentes instrumentos, siempre que pertenezcan a la misma combinación de moneda y producto.

Cuando los libros pasan a un estado inactivo o terminal, eventos de cambio de libro (como la eliminación de los niveles de precios restantes) y eventos de cambio de estado del ciclo de vida del instrumento pueden combinarse.

Combos

Los instrumentos combinados siguen el mismos estados del ciclo de vida de la cartera de pedidos como todos los demás instrumentos.

Características principales:

  • Los instrumentos combinados se distribuyen en canales de multidifusión dedicados, tal como se define en el Canales de multidifusión de Deribit documento (v1.1 o posterior).

  • Cambios en los mensajes de los instrumentos relacionados con tipos de instrumentos o estados del ciclo de vida se aplican solo a los canales combinados.

Comportamiento durante el ciclo de vida de los combos:

  • Cuando un instrumento combinado se retira de las operaciones activas, su cartera de órdenes pasa a inactivo estado. Se envía un mensaje de instrumento que refleja este cambio de estado y el estado estático del instrumento (por ejemplo, en las instantáneas de cotizaciones o instrumentos) inactivo.

  • Cuando un instrumento combinado que antes estaba inactivo vuelve a estar disponible para su negociación, se envía un mensaje sobre el instrumento que indica una transición de vuelta al abierto estado, y el estado estático del instrumento se actualiza en consecuencia.

Especificación del mensaje

<message name="instrument" id="1000">
<field name="instrumentId" id ="1" type="uint32" />
<field name="instrumentState" id="2" type="instrumentState" />
<field name="kind" id="3" type="instrumentKind" />
<field name="instrumentType" id="4" type="instrumentType" />
<field name="optionType" id="5" type="optionType" />
<field name="rfq" id="6" type="yesNo" />
<field name="settlementPeriod" id="7" type="period" presence="optional" />
<field name="settlementPeriodCount" id="8" type="uint16" />
<field name="baseCurrency" id="9" type="string8" />
<field name="quoteCurrency" id="10" type="string8" />
<field name="counterCurrency" id="11" type="string8" />
<field name="settlementCurrency" id="12" type="string8" />
<field name="sizeCurrency" id="13" type="string8" />
<field name="creationTimestampMs" id="14" type="uint64" />
<field name="expirationTimestampMs" id="15" type="uint64" />
<field name="strikePrice" id="16" type="double" presence="optional" />
<field name="contractSize" id="17" type="double" />
<field name="minTradeAmount" id="18" type="double" />
<field name="tickSize" id="19" type="double" />
<field name="makerCommission" id="20" type="double" />
<field name="takerCommission" id="21" type="double" />
<field name="blockTradeCommission" id="22" type="double" presence="optional" />
<field name="maxLiquidationCommission" id="23" type="double" presence="optional" />
<field name="maxLeverage" id="24" type="double" presence="optional" />
<data name="instrumentName" id="25" type="varString" />
</message>

Tipos de enumeración utilizados en el mensaje

<enum name="instrumentState" encodingType="uint8">
<validValue name="created">0</validValue>
<validValue name="open">1</validValue>
<validValue name="closed">2</validValue>
<validValue name="settled">3</validValue>
<validValue name="deactivated">4</validValue>
<validValue name="inactive">5</validValue>
<validValue name="started">6</validValue>
<validValue name="settlement" sinceVersion="4">7</validValue>
<validValue name="delivered" sinceVersion="4">8</validValue>
<validValue name="locked" sinceVersion="4">9</validValue>
<validValue name="halted" sinceVersion="4">10</validValue>
</enum>
<enum name="instrumentKind" encodingType="uint8">
<validValue name="future">0</validValue>
<validValue name="option">1</validValue>
<validValue name="future_combo">2</validValue>
<validValue name="option_combo">3</validValue>
<validValue name="spot">4</validValue>
</enum>
<enum name="optionType" encodingType="uint8">
<validValue name="not_applicable">0</validValue>
<validValue name="call">1</validValue>
<validValue name="put">2</validValue>
</enum>
<enum name="instrumentType" encodingType="uint8">
<validValue name="not_applicable">0</validValue>
<validValue name="reversed">1</validValue>
<validValue name="linear">2</validValue>
</enum>
<enum name="period" encodingType="uint8">
<validValue name="perpetual">0</validValue>
<validValue name="minute">1</validValue>
<validValue name="hour">2</validValue>
<validValue name="day">3</validValue>
<validValue name="week">4</validValue>
<validValue name="month">5</validValue>
<validValue name="year">6</validValue>
</enum>

Mensaje de ejemplo

Frame 4096: 227 bytes on wire (1816 bits), 227 bytes captured (1816 bits) on interface lo, id 0

Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00),
            Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4,
  Src: 127.0.0.1,
  Dst: 239.111.111.2

User Datagram Protocol,
  Src Port: 48210,
  Dst Port: 6100

Deribit SBE

Framing Header
  Packet Length:      177
  Channel Id:         2
  Channel Sequence:   1

Instrument State
  Header
    Root Block Length:      140
    Type:                   instrument (1000)
    Schema Id:              1
    Version:                1
    Num Groups:             0
    Num Vars:               1
    Instrument Id:          618
    Instrument State:       created (0)
    Instrument Kind:        option (1)
    Instrument Type:        not applicable (0)
    Option Type:            call (1)
    RFQ:                    0
    Settlement Period:      minute (1)
    Settlement Period Count: 15
    Base Currency:          BTC
    Quote Currency:         BTC
    Counter Currency:       USD
    Settlement Currency:    BTC
    Size Currency:          BTC
    Creation Timestamp:     May 14, 2022 06:35:05.000000000 UTC
    Expiration Timestamp:   May 14, 2022 06:45:00.000000000 UTC
    Strike Price:           29200
    Contract Size:          1
    Minimum Trade Amount:   0,01
    Tick Size:              0,0001
    Maker Commission:       0,0001
    Taker Commission:       0,0005
    Block Trade Commission: 0,00015
    Max Liquidation Commission: 0
    Max Leverage:           0

Instrument Name: BTC-14MAY22_0645-29200-C

Hex Dump
0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00  ..............E.
0010  00 d5 bc fc 40 00 20 11  bf a8 7f 00 00 01 ef 6f  ....@. ........o
0020  6f 02 bc 52 17 d4 00 c1  de 45 b1 00 02 00 01 00  o..R.....E......
0030  00 00 8c 00 e8 03 01 00  01 00 00 00 01 00 6a 02  ..............j.
0040  00 00 00 01 00 01 00 01  0f 00 42 54 43 00 00 00  ..........BTC...
0050  00 00 42 54 43 00 00 00  00 00 55 53 44 00 00 00  ..BTC.....USD...
0060  00 00 42 54 43 00 00 00  00 00 42 54 43 00 00 00  ..BTC.....BTC...
0070  00 00 a8 1d 47 c1 80 01  00 00 e0 31 50 c1 80 01  ....G......1P...
0080  00 00 00 00 00 00 00 84  dc 40 00 00 00 00 00 00  .........@......
0090  f0 3f 7b 14 ae 47 e1 7a  84 3f 2d 43 1c eb e2 36  .?{..G.z.?-C...6
00a0  1a 3f 2d 43 1c eb e2 36  1a 3f fc a9 f1 d2 4d 62  .?-C...6.?....Mb
00b0  40 3f 61 32 55 30 2a a9  23 3f 00 00 00 00 00 00  @?a2U0*.#?......
00c0  00 00 00 00 00 00 00 00  00 00 18 42 54 43 2d 31  ...........BTC-1
00d0  34 4d 41 59 32 32 5f 30  36 34 35 2d 32 39 32 30  4MAY22_0645-2920
00e0  30 2d 43                                            0-C

B - Instrumento v2

Con la introducción de varios tamaños de garrapatas, necesitamos añadir la información sobre los pasos del tamaño de las garrapatas para que los clientes puedan realizar pedidos con los tamaños correctos de garrapatas en los diferentes rangos de precios.

Si bien SBE proporciona un mecanismo de compatibilidad con versiones anteriores para agregar nuevos campos, la elección de introducir un nuevo mensaje se tomó partiendo del supuesto de que las implementaciones de clientes tienen más probabilidades de ignorar los tipos de mensajes desconocidos que de implementar el mecanismo de compatibilidad con versiones anteriores de SBE. Un segundo motivo es que el nuevo mensaje nos permite eliminar el campo obsoleto «rfq». El mensaje de solicitud de presupuesto presentado recientemente proporciona un mecanismo mucho más fiable y completo para el seguimiento del estado de las solicitudes de presupuesto. SBE no admite la eliminación de campos de un mensaje de forma compatible con versiones anteriores, por lo que un mensaje nuevo es la única forma de hacerlo

La intención es que ambos mensajes se envíen en instantáneas y cambios de estado del instrumento durante un tiempo. Tras el tiempo suficiente y el anuncio oportuno para que los clientes puedan migrar y utilizar este nuevo mensaje, el mensaje original del instrumento se eliminará de la multidifusión

Tenemos la intención de utilizar este mecanismo en el futuro para realizar cambios en los mensajes.

Especificación del mensaje

<message name="instrumentV2" id="1010" sinceVersion="3">
<field name="instrumentId" id ="1" type="uint32" />
<field name="instrumentState" id="2" type="instrumentState" />
<field name="kind" id="3" type="instrumentKind" />
<field name="instrumentType" id="4" type="instrumentType" />
<field name="optionType" id="5" type="optionType" />
<field name="settlementPeriod" id="6" type="period" presence="optional" />
<field name="settlementPeriodCount" id="7" type="uint16" />
<field name="baseCurrency" id="8" type="string8" />
<field name="quoteCurrency" id="9" type="string8" />
<field name="counterCurrency" id="10" type="string8" />
<field name="settlementCurrency" id="11" type="string8" />
<field name="sizeCurrency" id="12" type="string8" />
<field name="creationTimestampMs" id="13" type="uint64" />
<field name="expirationTimestampMs" id="14" type="uint64" />
<field name="strikePrice" id="15" type="double" presence="optional" />
<field name="contractSize" id="16" type="double" />
<field name="minTradeAmount" id="17" type="double" />
<field name="tickSize" id="18" type="double" />
<field name="makerCommission" id="19" type="double" />
<field name="takerCommission" id="20" type="double" />
<field name="blockTradeCommission" id="21" type="double" presence="optional" />
<field name="maxLiquidationCommission" id="22" type="double" presence="optional" />
<field name="maxLeverage" id="23" type="double" presence="optional" />
<group name="tickStepsList" id="24" dimensionType="groupSizeEncoding">
<field name="abovePrice" id="1" type="double" />
<field name="tickSize" id="2" type="double" />
</group>
<data name="instrumentName" id="25" type="varString" />
</message>

En este mensaje se utilizan los mismos tipos de enumeración que en el mensaje del instrumento original.

Secuencia de ejemplo

El mensaje InstrumentV2 se inserta justo después del mensaje del instrumento en una secuencia de instantáneas y en los eventos de cambio de estado del instrumento.

mdg-example-seq-instrumentv2-1.jpeg
mdg-example-seq-instrumentv2-2.jpeg

Mensaje de ejemplo

Frame 12890: 417 bytes on wire (3336 bits), 417 bytes captured (3336 bits) on interface lo, id 0
Interface id: 0 (lo)
Interface name: lo
Encapsulation type: Ethernet (1)
Arrival Time: Jun 15, 2023 20:51:00.018508968 CEST
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1686855060.018508968 seconds
[Time delta from previous captured frame: 0.001292339 seconds]
[Time delta from previous displayed frame: 0.000000000 seconds]
[Time since reference or first frame: 283.628602527 seconds]
Frame Number: 12890
Frame Length: 417 bytes (3336 bits)
Capture Length: 417 bytes (3336 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:udp:deribit_sbe]

[Coloring Rule Name: UDP]
[Coloring Rule String: udp]

Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)
  Destination: 00:00:00_00:00:00 (00:00:00:00:00:00)
    Address: 00:00:00_00:00:00 (00:00:00:00:00:00)
    .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
  Source: 00:00:00_00:00:00 (00:00:00:00:00:00)
    Address: 00:00:00_00:00:00 (00:00:00:00:00:00)
    .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
  Type: IPv4 (0x0800)

Internet Protocol Version 4, Src: 127.0.0.1, Dst: 239.111.111.2
  0100 .... = Version: 4
  .... 0101 = Header Length: 20 bytes (5)
  Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
    0000 00.. = Differentiated Services Codepoint: Default (0)
    .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
  Total Length: 403
  Identification: 0x5ba3 (23459)
  Flags: 0x40, Don't fragment
    0... .... = Reserved bit: Not set
    .1.. .... = Don't fragment: Set
    ..0. .... = More fragments: Not set
  ...0 0000 0000 0000 = Fragment Offset: 0
  Time to Live: 32
  Protocol: UDP (17)
  Header Checksum: 0x2044 [validation disabled]
    [Header checksum status: Unverified]
  Source Address: 127.0.0.1
  Destination Address: 239.111.111.2

User Datagram Protocol, Src Port: 32859, Dst Port: 6100
  Source Port: 32859
  Destination Port: 6100
  Length: 383
  Checksum: 0xdf03 [unverified]
    [Checksum Status: Unverified]
  [Stream index: 2]
  [Timestamps]
    [Time since first frame: 283.625157436 seconds]
    [Time since previous frame: 0.001292339 seconds]

UDP payload (375 bytes)
Deribit SBE

Framing Header
  Packet Length: 367
  Channel Id: 2
  Channel Sequence: 3145

Instrument State
  Header
    Root Block Length: 140
    Type: instrument (1000)
    Schema Id: 1
    Version: 2
    Num Groups: 0
    Num Vars: 1
    Instrument Id: 77
    Instrument State: created (0)
    Instrument Kind: option (1)
    Instrument Type: reversed (1)
    Option Type: call (1)
    RFQ: 0
    Settlement Period: week (4)
    Settlement Period Count: 1
    Base Currency: BTC
    Quote Currency: BTC
    Counter Currency: USD
    Settlement Currency: BTC
    Size Currency: BTC
    Creation Timestamp: Jun 15, 2023 18:51:00.000000000 UTC
    Expiration Timestamp: Jun 23, 2023 08:00:00.000000000 UTC
    Strike Price: 25500
    Contract Size: 1
    Minimum Trade Amount: 0,01
    Tick Size: 0,0001
    Maker Commission: 0
    Taker Commission: 0,0001
    Block Trade Commission: 0,00015
    Max Liquidation Commission: -nan
    Max Leverage: -nan
    Instrument Name: BTC-23JUN23-25500-C

Instrument State v2
  Header
    Root Block Length: 139
    Type: instrument_v2 (1010)
    Schema Id: 1
    Version: 3
    Num Groups: 1
    Num Vars: 1
    Instrument Id: 77
    Instrument State: created (0)
    Instrument Kind: option (1)
    Instrument Type: reversed (1)
    Option Type: call (1)
    Settlement Period: week (4)
    Settlement Period Count: 1
    Base Currency: BTC
    Quote Currency: BTC
    Counter Currency: USD
    Settlement Currency: BTC
    Size Currency: BTC
    Creation Timestamp: Jun 15, 2023 18:51:00.000000000 UTC
    Expiration Timestamp: Jun 23, 2023 08:00:00.000000000 UTC
    Strike Price: 25500
    Contract Size: 1
    Minimum Trade Amount: 0,01
    Tick Size: 0,0001
    Maker Commission: 0
    Taker Commission: 0,0001
    Block Trade Commission: 0,00015
    Max Liquidation Commission: -nan
    Max Leverage: -nan

Tick Size Steps Group
  Header
    Group Block Length: 16
    Num In Group: 1
    Group Num Groups: 0
    Group Num Vars: 0

Tick Step List
  above price : 0,001
  tick_size   : 0,0002

Instrument Name: BTC-23JUN23-25500-C

Hex Dump
0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00  ..............E.
0010  01 93 5b a3 40 00 20 11  20 44 7f 00 00 01 ef 6f  ..[.@. . D....o
0020  6f 02 80 5b 17 d4 01 7f  df 03 6f 01 02 00 49 0c  o..[......o...I.
0030  00 00 8c 00 e8 03 01 00  02 00 00 00 01 00 4d 00  ..............M.
0040  00 00 00 01 01 01 00 04  01 00 42 54 43 00 00 00  ..........BTC...
0050  00 00 42 54 43 00 00 00  00 00 55 53 44 00 00 00  ..BTC.....USD...
0060  00 00 42 54 43 00 00 00  00 00 42 54 43 00 00 00  ..BTC.....BTC...
0070  00 00 20 8a 65 c0 88 01  00 00 00 68 44 e7 88 01  .. .e......hD...
0080  00 00 00 00 00 00 00 e7  d8 40 00 00 00 00 00 00  .........@......
0090  f0 3f 7b 14 ae 47 e1 7a  84 3f 2d 43 1c eb e2 36  .?{..G.z.?-C...6
00a0  1a 3f 00 00 00 00 00 00  00 00 2d 43 1c eb e2 36  .?........-C...6
00b0  1a 3f 61 32 55 30 2a a9  23 3f ff ff ff ff ff ff  .?a2U0*.#?......
00c0  ff ff ff ff ff ff ff ff  ff ff 13 42 54 43 2d 32  ...........BTC-2
00d0  33 4a 55 4e 32 33 2d 32  35 35 30 30 2d 43 8b 00  3JUN23-25500-C..
00e0  f2 03 01 00 03 00 01 00  01 00 4d 00 00 00 00 01  ..........M.....
00f0  01 01 04 01 00 42 54 43  00 00 00 00 00 42 54 43  .....BTC....BTC
0100  00 00 00 00 00 55 53 44  00 00 00 00 00 42 54 43  .....USD....BTC
0110  00 00 00 00 00 42 54 43  00 00 00 00 00 20 8a 65  .....BTC..... .e
0120  c0 88 01 00 00 00 68 44  e7 88 01 00 00 00 00 00  ......hD........
0130  00 00 e7 d8 40 00 00 00  00 00 00 f0 3f 7b 14 ae  ....@.......?{..
0140  47 e1 7a 84 3f 2d 43 1c  eb e2 36 1a 3f 00 00 00  G.z.?-C...6.?...
0150  00 00 00 00 00 2d 43 1c  eb e2 36 1a 3f 61 32 55  .....-C...6.?a2U
0160  30 2a a9 23 3f ff ff ff  ff ff ff ff ff ff ff ff  0*.#?...........
0170  ff ff ff ff ff 10 00 01  00 00 00 00 00 fc a9 f1  ................
0180  d2 4d 62 50 3f 2d 43 1c  eb e2 36 2a 3f 13 42 54  .MbP?-C...6*?.BT
0190  43 2d 32 33 4a 55 4e 32  33 2d 32 35 35 30 30 2d  C-23JUN23-25500-
01a0  43                                               C

C - Cambio en la cartera de pedidos

Este evento contiene cambios en los niveles del libro de pedidos. Los cambios pueden consistir en la creación de nuevos niveles, en la cantidad de los niveles o en la eliminación (no queda ningún importe), tal y como ocurre en los eventos de suscripción a Websocket

Combos

Los cambios en el libro de órdenes de los combos son los mismos que los de los instrumentos normales. Sin embargo, dado que las operaciones en combos cambian las posiciones (pero no los niveles de la cartera de órdenes) de los distintos instrumentos que forman parte del combo (también conocidas como tramos), las operaciones combinadas generarán eventos de cambio contable con cambios de nivel vacíos

Del mismo modo, un cambio de posición iniciado por un administrador también puede desencadenar un evento de cambio de libro con cambios de nivel vacíos.

Especificación del mensaje

<message name="book" id="1001">
<field name="instrumentId" id="1" type="uint32" />
<field name="timestampMs" id="2" type="uint64" />
<field name="prevChangeId" id="3" type="uint64" />
<field name="changeId" id="4" type="uint64" />
<field name="isLast" id="5" type="yesNo" />
<group name="changesList" id="6" dimensionType="groupSizeEncoding">
<field name="side" id="1" type="bookSide" />
<field name="change" id="2" type="bookChange" />
<!-- Use double (64 bit float) encoding,
SBE FIX price/amount decimal encoding makes sense when the decimal point is on a somewhat fixed position, for crypto, it can vary more by instrument -->
<field name="price" id="3" type="double" />
<field name="amount" id="4" type="double" />
</group>
</message>

Tipos de enumeración utilizados en este mensaje

<enum name="bookChange" encodingType="uint8">
<validValue name="created">0</validValue>
<validValue name="changed">1</validValue>
<validValue name="deleted">2</validValue>
</enum>
<enum name="bookSide" encodingType="uint8">
<validValue name="ask">0</validValue>
<validValue name="bid">1</validValue>
</enum>
<enum name="yesNo" encodingType="uint8">
<validValue name="no">0</validValue>
<validValue name="yes">1</validValue>
</enum>

Los eventos utilizan el mismo mecanismo para garantizar la coherencia de la cartera de pedidos que los eventos de websocket.

Cada mensaje contiene un mensaje actual changeId y prevChangeId. Cuando se recibe un evento, prevChangeId debe compararse con el changeId del último evento visto en el libro. Se debe suponer que el identificador de cambio es simplemente un número que aumenta monótonamente de forma no estrictamente consecutiva

ocasiones, la lista de cambios en el libro puede generar un mensaje que supere el tamaño máximo del paquete. En este caso, la plataforma divide la lista de cambios en varias listas y genera una secuencia de varios mensajes de cambios completos en la cartera de pedidos. Los mensajes tienen los mismos campos fijosheader, timestampMs, prevChangeId, changeId) pero el isLast el campo se establece en el valor 0 para todos los mensajes de la secuencia, excepto el último, para indicar si se ha enviado la lista de cambios completa.

Secuencia de ejemplo

C-MDG.jpeg

Mensaje de ejemplo

Frame 220: 135 bytes on wire (1080 bits), 135 bytes captured (1080 bits) on interface lo, id 0

Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00),
            Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4,
  Src: 127.0.0.1,
  Dst: 239.111.111.3

User Datagram Protocol,
  Src Port: 51012,
  Dst Port: 6100

Deribit SBE

Framing Header
  Packet Length:     85
  Channel Id:        3
  Channel Sequence:  21093

Book Change
  Header
    Root Block Length: 29
    Type:              book (1001)
    Schema Id:         1
    Version:           1
    Num Groups:        1
    Num Vars:          0
    Instrument Id:     136
    Timestamp:         May 2, 2022 11:53:01.475000000 UTC
    Previous Change ID: 3086730
    Change ID:          3086733
    Is Last Part:       last (1)

  Changes
    Group Header
      Group Block Length: 18
      Num In Group:       2
      Group Num Groups:   0
      Group Num Vars:     0

    Change List
      delete bid - price : 35171,99
                   amount: 0
      new bid    - price : 36930,58
                   amount: 40

Hex Dump
0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00  ..............E.
0010  00 79 7b 98 40 00 20 11  01 68 7f 00 00 01 ef 6f  .y{.@. ..h....o
0020  6f 03 c7 44 17 d4 00 65  dd ea 55 00 03 00 65 52  o..D...e..U...eR
0030  00 00 1d 00 e9 03 01 00  01 00 01 00 00 00 88 00  ................
0040  00 00 23 e3 9d 84 80 01  00 00 8a 19 2f 00 00 00  ..#........./...
0050  00 00 8d 19 2f 00 00 00  00 00 01 12 00 02 00 00  ..../...........
0060  00 00 00 01 02 e1 7a 14  ae 7f 2c e1 40 00 00 00  ......z...,.@...
0070  00 00 00 00 00 01 00 f6  28 5c 8f 52 08 e2 40 00  ........(\.R..@.
0080  00 00 00 00 00 44 40                             .....D@

D - Operaciones

En caso de que una orden dé como resultado una o más operaciones, estas se envían en un evento de operaciones que contiene una o más operaciones relacionadas con el mismo instrumento y orden.

El significado y el propósito de los campos son los mismos que los del evento de API de websocket correspondiente.

Combos

Dado que las operaciones combinadas cambian de posición en los tramos, las operaciones de combos también son visibles en los flujos de instrumentos (tramos) que forman parte del combo. El campo «ComboTradeID» de las operaciones a nivel de pierna se ajustará al «TradeID» de la operación con el instrumento

Especificación del mensaje

<message name="trades" id="1002">
<field name="instrumentId" id="1" type="uint32" />
<group name="tradesList" id="2" dimensionType="groupSizeEncoding">
<field name="direction" id="1" type="direction" />
<field name="price" id="2" type="double" />
<field name="amount" id="3" type="double" />
<field name="timestampMs" id="4" type="uint64" />
<field name="markPrice" id="5" type="double" />
<field name="indexPrice" id="6" type="double" />
<field name="tradeSeq" id="7" type="uint64" />
<field name="tradeId" id="8" type="uint64" />
<field name="tickDirection" id="9" type="tickDirection" />
<field name="liquidation" id="10" type="liquidation" />
<field name="iv" id="11" type="double" presence="optional" />
<field name="blockTradeId" id="12" type="uint64"
presence="optional" nullValue="0" />
<field name="comboTradeId" id="13" type="uint64" presence="optional" nullValue="0" />
</group>
</message>

Tipos de enumeración utilizados en el mensaje

<enum name="tickDirection" encodingType="uint8">
<validValue name="plus">0</validValue>
<validValue name="zeroplus">1</validValue>
<validValue name="minus">2</validValue>
<validValue name="zerominus">3</validValue>
</enum>
<enum name="direction" encodingType="uint8">
<validValue name="buy">0</validValue>
<validValue name="sell">1</validValue>
</enum>
<enum name="liquidation" encodingType="uint8">
<validValue name="none">0</validValue>
<validValue name="maker">1</validValue>
<validValue name="taker">2</validValue>
<validValue name="both">3</validValue>
</enum>

El sistema de eventos combina los eventos relacionados con la misma transacción en un instrumento. Si estos eventos caben en un solo paquete, los mensajes contables, bursátiles y bursátiles relacionados se combinarán en un paquete

Mensaje de ejemplo

Frame 181: 470 bytes on wire (3760 bits), 470 bytes captured (3760 bits) on interface lo, id 0

Ethernet II,
  Src: 00:00:00_00:00:00 (00:00:00:00:00:00),
  Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4,
  Src: 127.0.0.1,
  Dst: 239.111.111.1

User Datagram Protocol,
  Src Port: 55022,
  Dst Port: 6100

Deribit SBE

Framing Header
  Packet Length:      420
  Channel Id:         1
  Channel Sequence:   10477

Trades
  Header
    Root Block Length:  4
    Type:               trades (1002)
    Schema Id:          1
    Version:            1
    Num Groups:         1
    Num Vars:           0
    Instrument Id:      1

  Trades
    Group Header
      Group Block Length: 83
      Num In Group:       2
      Group Num Groups:   0
      Group Num Vars:     0

    Trade 1
      Trade Direction:    sell (1)
      Price:              39344,25
      Amount:             10
      Timestamp:          May 2, 2022 11:53:01.000000000 UTC
      Mark Price:         38815,96
      Index Price:        38603,64
      Trade Sequence:     392167
      Trade Id:           1297362
      Tick Direction:     zerominus (3)
      Liquidation:        no liquidation (0)
      Implied Volatility: 0
      Block Trade Id:     0
      Combo Trade Id:     0

    Trade 2
      Trade Direction:    sell (1)
      Price:              39316,72
      Amount:             10
      Timestamp:          May 2, 2022 11:53:01.000000000 UTC
      Mark Price:         38815,96
      Index Price:        38603,64
      Trade Sequence:     392168
      Trade Id:           1297363
      Tick Direction:     minus (2)
      Liquidation:        no liquidation (0)
      Implied Volatility: 0
      Block Trade Id:     0
      Combo Trade Id:     0

Ticker
  Header
    Root Block Length: 133
    Type:               ticker (1003)
    Schema Id:          1
    Version:            1
    Num Groups:         0
    Num Vars:           0
    Instrument Id:      1
    Instrument State:   open (1)
    Timestamp:          May 2, 2022 11:53:01.000000000 UTC
    Open Interest:      60
    Min Price:          38980,56
    Max Price:          39375,71
    Last Price:         39316,72
    Index Price:        38603,64
    Mark Price:         38815,96
    Best Bid Price:     39316,31
    Best Bid Amount:    30
    Best Ask Price:     39375,72
    Best Ask Amount:    10
    Current Funding:    0,005
    Funding 8h:         0,00751341
    Estimated Delivery Price: 38603,64
    Delivery Price:     0
    Settlement Price:   39229,82

Book Change
  Header
    Root Block Length:     29
    Type:                  book (1001)
    Schema Id:             1
    Version:               1
    Num Groups:            1
    Num Vars:              0
    Instrument Id:         1
    Timestamp:             May 2, 2022 11:53:01.000000000 UTC
    Previous Change ID:    3086708
    Change ID:             3086709
    Is Last Part:          last (1)

  Changes
    Group Header
      Group Block Length: 18
      Num In Group:       2
      Group Num Groups:   0
      Group Num Vars:     0

    Change List
      delete bid - price : 39316,72
                   amount: 0
      delete bid - price : 39344,25
                   amount: 0

Hex Dump:
0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00  ..............E.
0010  01 c8 bd 2f 40 00 20 11  be 83 7f 00 00 01 ef 6f  .../@. ......o
0020  6f 01 d6 ee 17 d4 01 b4  df 37 a4 01 01 00 ed 28  o........7.....(
0030  00 00 04 00 ea 03 01 00  01 00 01 00 00 00 01 00  ................
0040  00 00 53 00 02 00 00 00  00 00 01 00 00 00 00 08  ..S.............
0050  36 e3 40 00 00 00 00 00  00 24 40 48 e1 9d 84 80  6.@......$@H....
0060  01 00 00 85 eb 51 b8 fe  f3 e2 40 ae 47 e1 7a 74  .....Q....@.G.zt
0070  d9 e2 40 e7 fb 05 00 00  00 00 00 d2 cb 13 00 00  ..@.............
0080  00 00 00 03 00 00 00 00  00 00 00 00 00 00 00 00  ................
0090  00 00 00 00 00 00 00 00  00 00 00 00 00 01 a4 70  ...............p
00a0  3d 0a 97 32 e3 40 00 00  00 00 00 00 24 40 48 e1  =..2.@......$@H.
00b0  9d 84 80 01 00 00 85 eb  51 b8 fe f3 e2 40 ae 47  ........Q....@.G
00c0  e1 7a 74 d9 e2 40 e8 fb  05 00 00 00 00 00 d3 cb  .zt..@..........
00d0  13 00 00 00 00 00 02 00  00 00 00 00 00 00 00 00  ................
00e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00f0  85 00 eb 03 01 00 01 00  00 00 00 00 01 00 00 00  ................
0100  01 48 e1 9d 84 80 01 00  00 00 00 00 00 00 00 4e  .H.............N
0110  40 b8 1e 85 eb 91 08 e3  40 85 eb 51 b8 f6 39 e3  @........@..Q..9.
0120  40 a4 70 3d 0a 97 32 e3  40 ae 47 e1 7a 74 d9 e2  @.p=..2.@.G.zt..
0130  40 85 eb 51 b8 fe f3 e2  40 b8 1e 85 eb 89 32 e3  @..Q....@.....2.
0140  40 00 00 00 00 00 00 3e  40 a4 70 3d 0a f7 39 e3  @......>@.p=..9.
0150  40 00 00 00 00 00 00 24  40 7b 14 ae 47 e1 7a 74  @......$@{..G.zt
0160  3f c2 f9 b3 a3 61 c6 7e  3f ae 47 e1 7a 74 d9 e2  ?....a.~?.G.zt..
0170  40 00 00 00 00 00 00 00  00 d7 a3 70 3d ba 27 e3  @.........p=.'.
0180  40 1d 00 e9 03 01 00 01  00 01 00 00 00 01 00 00  @...............
0190  00 48 e1 9d 84 80 01 00  00 74 19 2f 00 00 00 00  .H.......t./....
01a0  00 75 19 2f 00 00 00 00  00 01 12 00 02 00 00 00  .u./............
01b0  00 00 01 02 a4 70 3d 0a  97 32 e3 40 00 00 00 00  .....p=..2.@....
01c0  00 00 00 00 01 02 00 00  00 00 08 36 e3 40 00 00  ...........6.@..
01d0  00 00 00 00 00 00                                ......

E - Cotización

El evento de cotización se envía periódicamente para indicar cambios en los datos del libro que no están estrictamente nivelados (por ejemplo, el precio del índice). El evento puede estar relacionado con un cambio en el nivel contable (por ejemplo, cambios en la mejor oferta o demanda), en cuyo caso se envía junto con el cambio en el libro correspondiente. También se puede enviar como un evento independiente

La estructura de mensajes de cotización también se usa en los canales de instantáneas.

Nota

Las tasas de financiación y los campos de financiación relacionados publicados en este evento de multidifusión se derivan del Deribit ticker.{instrument_name}.{interval} canal de notificación. Consulte el documentación oficial de Deribit para obtener más información.

Especificación del mensaje

<message name="ticker" id="1003">
<!-- according the the SBE spec, optional floats use the quietNaN null value 0xffffffffffffffff -->
<field name="instrumentId" id="1" type="uint32" />
<field name="instrumentState" id="2" type="instrumentState" />
<field name="timestampMs" id="3" type="uint64" />
<field name="openInterest" id="4" type="double" presence="optional" />
<field name="minSellPrice" id="5" type="double" />
<field name="maxBuyPrice" id="6" type="double" />
<field name="lastPrice" id="7" type="double" presence="optional"/>
<field name="indexPrice" id="8" type="double" />
<field name="markPrice" id="9" type="double" />
<field name="bestBidPrice" id="10" type="double" />
<field name="bestBidAmount" id="11" type="double" />
<field name="bestAskPrice" id="12" type="double" />
<field name="bestAskAmount" id="13" type="double" />
<field name="currentFunding" id="14" type="double" presence="optional" />
<field name="funding8h" id="15" type="double" presence="optional" />
<field name="estimatedDeliveryPrice" id="16" type="double" presence="optional"/>
<field name="deliveryPrice" id="17" type="double" presence="optional" />
<field name="settlementPrice" id="18" type="double" presence="optional" />
</message>

Mensaje de ejemplo

Frame 106: 195 bytes on wire (1560 bits), 195 bytes captured (1560 bits) on interface lo, id 0

Ethernet II,
  Src: 00:00:00_00:00:00 (00:00:00:00:00:00),
  Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4,
  Src: 127.0.0.1,
  Dst: 239.111.111.4

User Datagram Protocol,
  Src Port: 37630,
  Dst Port: 6100

Deribit SBE

Framing Header
  Packet Length:      145
  Channel Id:         4
  Channel Sequence:   4218

Ticker
  Header
    Root Block Length: 133
    Type:               ticker (1003)
    Schema Id:          1
    Version:            1
    Num Groups:         0
    Num Vars:           0
    Instrument Id:      2
    Instrument State:   open (1)
    Timestamp:          May 3, 2022 13:17:24.827000000 UTC
    Open Interest:      10
    Min Price:          2837,56
    Max Price:          2866,08
    Last Price:         2865,61
    Index Price:        2834,85
    Mark Price:         2850,44
    Best Bid Price:     2866,09
    Best Bid Amount:    20
    Best Ask Price:     2866,10
    Best Ask Amount:    10
    Current Funding:    0,004999
    Funding 8h:         -0,003006
    Estimated Delivery Price: 2834,85
    Delivery Price:     0
    Settlement Price:   2837,27

Hex Dump:
0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00  ..............E.
0010  00 b5 9e 37 40 00 20 11  de 8b 7f 00 00 01 ef 6f  ...7@. ......o
0020  6f 04 92 fe 17 d4 00 a1  de 27 91 00 04 00 7a 10  o........'....z.
0030  00 00 85 00 eb 03 01 00  01 00 00 00 00 00 02 00  ................
0040  00 00 01 db 81 11 8a 80  01 00 00 00 00 00 00 00  ................
0050  00 24 40 85 eb 51 b8 1e  2b a6 40 5c 8f c2 f5 28  .$@..Q..+.@\...(  
0060  64 a6 40 1f 85 eb 51 38  63 a6 40 33 33 33 33 b3  d.@...Q8c.@3333.
0070  25 a6 40 7b 14 ae 47 e1  44 a6 40 48 e1 7a 14 2e  %.@{..G.D.@H.z..
0080  64 a6 40 00 00 00 00 00  00 34 40 33 33 33 33 33  d.@......4@33333
0090  64 a6 40 00 00 00 00 00  00 24 40 1c 09 34 d8 d4  d.@......$@..4..
00a0  79 74 3f 6c 07 23 f6 09  a0 68 bf 33 33 33 33 b3  yt?l.#...h.3333.
00b0  25 a6 40 00 00 00 00 00  00 00 00 d7 a3 70 3d 8a  %.@..........p=.
00c0  2a a6 40                                           *.@

F - Instantáneas

Además de los eventos anteriores, las instantáneas normales (cada 1 minuto de forma predeterminada) de los libros de pedidos también se difunden en múltiples formatos. Las instantáneas también se agrupan por divisa o producto (como los eventos) y se pueden Canales de multidifusión de Deribit).

Las instantáneas son una secuencia de instrument/instrument_v2/ticker/snapshot mensajes que contienen los datos estáticos del instrumento, la información de cotización del estado actual de la cartera, los niveles de la cartera de pedidos y el identificador del último cambio con la fecha y hora del último cambio.

Los niveles de libros de ambas caras (solicitas/ofertas) se combinan en una sola lista mediante un método en zigzag (oferta1, pregunta1, oferta2, pregunta2...).

Por lo general, las instantáneas están completas (es decir, contienen todos los niveles del libro); sin embargo, si tienen más de 10 000 niveles, se limitarán a 10 000.

Para indicar si la instantánea está completa o no, el mensaje contiene un isComplete

bandera.

Si una instantánea completa no cabe en un paquete, la lista de niveles se divide (de forma similar a los cambios en la cartera de pedidos). isLast el indicador indica si el mensaje contiene una parte de la lista de niveles y el siguiente mensaje contiene el seguimiento (valor = 0) o si el mensaje es el último de la secuencia y el envío de los niveles ha finalizado, o si el mensaje tiene todos los niveles enviados en la instantánea (valor = 1).

Si es múltiple instrument/instrument_v2/ticker/snapshot las secuencias de mensajes (para diferentes instrumentos de un par divisa/producto) caben en un solo paquete y se combinarán. Los mensajes instantáneos a nivel de libro pueden dividirse en paquetes

Especificación del mensaje

<message name="snapshot" id="1004">
<field name="instrumentId" id="1" type="uint32" />
<field name="timestampMs" id="2" type="uint64" />
<field name="changeId" id="3" type="uint64" />
<field name="isBookComplete" id="4" type="yesNo" />
<field name="isLastInBook" id="5" type="yesNo" />
<group name="levelsList" id="6" dimensionType="groupSizeEncoding">
<field name="side" id="1" type="bookSide" />
<field name="price" id="2" type="double" />
<field name="amount" id="3" type="double" />
</group>
</message>

Tipos de enumeración utilizados en el mensaje

<enum name="yesNo" encodingType="uint8">
<validValue name="no">0</validValue>
<validValue name="yes">1</validValue>
</enum>
<enum name="bookSide" encodingType="uint8">
<validValue name="ask">0</validValue>
<validValue name="bid">1</validValue>
</enum>

Mensaje de ejemplo

Frame 13142: 347 bytes on wire (2776 bits), 347 bytes captured (2776 bits) on interface lo, id 0

Ethernet II,
  Src: 00:00:00_00:00:00 (00:00:00:00:00:00),
  Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4,
  Src: 127.0.0.1,
  Dst: 239.111.111.5

User Datagram Protocol,
  Src Port: 33646,
  Dst Port: 6101

Deribit SBE

Framing Header
  Packet Length:        297
  Channel Id:           105
  Channel Sequence:     95

Book Snapshot
  Header
    Root Block Length:  22
    Type:               snapshot (1004)
    Schema Id:          1
    Version:            1
    Num Groups:         1
    Num Vars:           0
    Instrument Id:      486
    Timestamp:          May 9, 2022 14:04:23.702000000 UTC
    Change ID:          4434022
    Is Book Complete:   complete (1)
    Is Last Part:       last (1)

  Levels
    Group Header
      Group Block Length: 17
      Num In Group:       15
      Group Num Groups:   0
      Group Num Vars:     0

    Level List:
      bid - price: 32030,22   amount: 10
      bid - price: 32018,26   amount: 10
      bid - price: 32017,43   amount: 10
      bid - price: 32016,94   amount: 20
      bid - price: 32013,36   amount: 10
      bid - price: 32011,99   amount: 10
      bid - price: 31728,66   amount: 10
      bid - price: 31724,04   amount: 30
      bid - price: 31712,10   amount: 10
      bid - price: 31711,62   amount: 20
      bid - price: 31709,33   amount: 20
      bid - price: 31694,14   amount: 20
      bid - price: 31684,67   amount: 10
      bid - price: 31683,33   amount: 20
      bid - price: 31079,33   amount: 30

Hex Dump:
0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00  ..............E.
0010  01 4d c1 01 40 00 20 11  bb 28 7f 00 00 01 ef 6f  .M..@. ..(....o
0020  6f 05 83 6e 17 d5 01 39  de c0 29 01 69 00 5f 00  o..n...9..).i._.
0030  00 00 16 00 ec 03 01 00  01 00 01 00 00 00 e6 01  ................
0040  00 00 16 ad 22 a9 80 01  00 00 66 a8 43 00 00 00  ....".....f.C...
0050  00 00 01 01 11 00 0f 00  00 00 00 00 01 48 e1 7a  .............H.z
0060  14 8e 47 df 40 00 00 00  00 00 00 00 24 40 01 3d  ..G.@.......$@.=
0070  0a d7 a3 90 44 df 40 00  00 00 00 00 00 00 24 40  ....D.@.......$@
0080  01 52 b8 1e 85 5b 44 df  40 00 00 00 00 00 00 24  .R...[D.@......$
0090  40 01 8f c2 f5 28 3c 44  df 40 00 00 00 00 00 00  @....(@.ffff...@.
00f0  00 00 00 00 00 00 24 40  01 e1 7a 14 ae e7 f7 de  ......$@..z.....
0100  40 00 00 00 00 00 00 00  34 40 01 ec 51 b8 1e 55  @.......4@..Q..U
0110  f7 de 40 00 00 00 00 00  00 34 40 01 5c 8f c2 f5  ..@......4@.\\...
0120  88 f3 de 40 00 00 00 00  00 00 34 40 01 14 ae 47  ...@......4@...G
0130  e1 2a f1 de 40 00 00 00  00 00 00 24 40 01 ec 51  .*..@......$@..Q
0140  b8 1e d5 f0 de 40 00 00  00 00 00 00 34 40 01 ec  .....@......4@..
0150  51 b8 1e d5 59 de 40 00  00 00 00 00 00 00 3e 40  Q...Y.@.......>@

Ejemplo de secuencia de instantáneas

image6.jpeg

Inicio de instantáneas

El propósito del snapshotStart evento es indicar al cliente que puede empezar a prepararse para la llegada de una próxima instantánea, almacenando en búfer los eventos antes de recibir o procesar la instantánea. Poco antes de enviar cada instantánea (actualmente 200 ms), aparece un mensaje snapshotStart se envía para indicar que habrá una posible secuencia de instantáneas en camino.

El campo snapshotDelay indica el retraso en milisegundos.

Otro mensaje con tipo snapshotEnd se envía tan pronto como se completa la secuencia de instantáneas del canal

En el caso de que no haya ninguna instantánea disponible (no haya libros activos en el canal), solo un par de snapshotStart y snapshotEnd se enviará.

Especificación del mensaje

<message name="snapshotStart" id="1005">
<field name="snapshotDelay" id="1" type="uint32" />
</message>

Mensaje de ejemplo

Frame 1: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface lo, id 0

Ethernet II,
  Src: 00:00:00_00:00:00 (00:00:00:00:00:00),
  Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4,
  Src: 127.0.0.1,
  Dst: 239.111.111.10

User Datagram Protocol,
  Src Port: 48141,
  Dst Port: 6101

Deribit SBE

Framing Header
  Packet Length:      16
  Channel Id:         110
  Channel Sequence:   2

Book Snapshot Start
  Header
    Root Block Length: 4
    Type:              snapshot_start (1005)
    Schema Id:         1
    Version:           1
    Num Groups:        0
    Num Vars:          0
    Snapshot Delay:    200

Hex Dump:
0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00  ..............E.
0010  00 b5 54 33 40 00 20 11  28 8a 7f 00 00 01 ef 6f  ..T3@. .(.....o
0020  6f 0a bc 0d 17 d5 00 20  91 9c 10 00 6e 00 02 00  o...... ...n...
0030  00 00 04 00 ed 03 01 00  01 00 00 00 00 00 c8 00  ................
0040  00 00

Fin de la instantánea

Especificación del mensaje

<message name="snapshotEnd" id="1006">
</message>

Mensaje de ejemplo

Frame 1: 62 bytes on wire (496 bits), 62 bytes captured (496 bits) on interface lo, id 0

Ethernet II,
  Src: 00:00:00_00:00:00 (00:00:00:00:00:00),
  Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4,
  Src: 127.0.0.1,
  Dst: 239.111.111.10

User Datagram Protocol,
  Src Port: 48141,
  Dst Port: 6101

Deribit SBE

Framing Header
  Packet Length:      12
  Channel Id:         110
  Channel Sequence:   3

Book Snapshot End
  Header
    Root Block Length: 0
    Type:              snapshot_end (1006)
    Schema Id:         1
    Version:           1
    Num Groups:        0
    Num Vars:          0

Hex Dump:
0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00  ..............E.
0010  00 b5 54 33 40 00 20 11  28 8a 7f 00 00 01 ef 6f  ..T3@. .(.....o
0020  6f 0a bc 0d 17 d5 00 1c  5f a5 0c 00 6e 00 03 00  o......._...n...
0030  00 00 00 00 ee 03 01 00  01 00 00 00 00 00        ..............

Ejemplo de secuencia de instantáneas

image7.png

G - Patas combinadas

El mensaje combinado se envía después del mensaje del instrumento en los canales combinados de eventos y multidifusión en dos ocasiones: 1) en el canal de eventos cuando se crea un combo 2) en el canal de instantáneas con cada instantánea.

El evento contiene un identificador de instrumento y una lista de etapas combinadas. Cada tramo combinado de la lista contiene un identificador de instrumento para el tramo combinado, así como el tamaño del tramo combinado (int32)

Especificación del mensaje

<message name="comboLegs" id="1007">
<field name="instrumentId" id="1" type="uint32" />
<group name="legsList" id="2" dimensionType="groupSizeEncoding">
<field name="legInstrumentId" id="1" type="uint32" />
<field name="legSize" id="2" type="int32" />
</group>
</message>

Mensaje de ejemplo

Frame 1865: 264 bytes on wire (2112 bits), 264 bytes captured (2112 bits) on interface lo, id 0

Ethernet II,
  Src: 00:00:00_00:00:00 (00:00:00:00:00:00),
  Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4,
  Src: 127.0.0.1,
  Dst: 239.111.111.14

User Datagram Protocol,
  Src Port: 54658,
  Dst Port: 6100

Deribit SBE

Framing Header
  Packet Length:      214
  Channel Id:         14
  Channel Sequence:   0

Instrument State - Combo Legs
  Header
    Root Block Length:    4
    Type:                 combo_legs (1007)
    Schema Id:            1
    Version:              2
    Num Groups:           1
    Num Vars:             0
    Instrument Id:        32

  Legs
    Group Header
      Group Block Length: 8
      Num In Group:       2
      Group Num Groups:   0
      Group Num Vars:     0

    Leg List:
      leg instrument id: 1   leg size: -1
      leg instrument id: 2   leg size:  1

Hex Dump:
0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00  ..............E.
0010  00 fa ed e2 40 00 20 11  8e 91 7f 00 00 01 ef 6f  ....@. ......o
0020  6f 0e d5 82 17 d4 00 e6  de 76 d6 00 0e 00 00 00  o........v......
0030  00 00 8c 00 e8 03 01 00  02 00 00 00 01 00 20 00  .............. .
0040  00 00 00 02 00 00 01 04  01 00 42 54 43 00 00 00  ..........BTC...
0050  00 00 55 53 44 00 00 00  00 00 55 53 44 00 00 00  ..USD.....USD...
0060  00 00 42 54 43 00 00 00  00 00 55 53 44 00 00 00  ..BTC.....USD...
0070  00 00 10 bd 10 3d 84 01  00 00 00 64 a7 41 84 01  .....=.....d.A..
0080  00 00 ff ff ff ff ff ff  ff ff 00 00 00 00 00 00  ................
0090  24 40 00 00 00 00 00 00  24 40 7b 14 ae 47 e1 7a  $@......$@{..G.z
00a0  84 3f 00 00 00 00 00 00  00 00 00 00 00 00 00 00  .?..............
00b0  00 00 ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ................
00c0  ff ff ff ff ff ff ff ff  ff ff 15 42 54 43 2d 46  ...........BTC-F
00d0  53 2d 31 31 4e 4f 56 32  32 5f 34 4e 4f 56 32 32  S-11NOV22_4NOV22
00e0  04 00 ef 03 01 00 02 00  01 00 00 00 20 00 00 00  ............ ...
00f0  08 00 02 00 00 00 00 00  01 00 00 00 ff ff ff ff  ................
0100  02 00 00 00 01 00 00 00                           ........

H - Índice de precios

El evento de índice de precios contiene un nombre de índice de 16 bytes en forma de pares de divisas (por ejemplo, eth_usdc), seguido del precio y la marca de tiempo. Los mensajes sobre el índice de precios no están asociados a ningún grupo de divisas o productos, por lo que se envían por

Especificación del mensaje

<message name="priceIndex" id="1008">
<field name="indexName" id="1" type="string16" />
<field name="price" id="2" type="double" />
<field name="timestampMs" id="3" type="uint64" />
</message>

Otros tipos utilizados en el mensaje:

<type name="string16" primitiveType="char" length="16" />

Mensaje de ejemplo

Frame 1228: 94 bytes on wire (752 bits), 94 bytes captured (752 bits) on interface lo, id 0

Ethernet II,
  Src: 00:00:00_00:00:00 (00:00:00:00:00:00),
  Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4,
  Src: 127.0.0.1,
  Dst: 239.111.111.0

User Datagram Protocol,
  Src Port: 40820,
  Dst Port: 6100

Deribit SBE

Framing Header
  Packet Length:      44
  Channel Id:         0
  Channel Sequence:   306

Price Index
  Header
    Root Block Length:  32
    Type:               price_index (1008)
    Schema Id:          1
    Version:            2
    Num Groups:         0
    Num Vars:           0

  Currency Pair:        eth_usdc
  Price:                1271,1231
  Timestamp:            Nov 11, 2022 10:10:45.315000000 UTC

Hex Dump:
0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00  ..............E.
0010  00 50 1e 49 40 00 20 11  5e e3 7f 00 00 01 ef 6f  .P.I@. .^......o
0020  6f 00 9f 74 17 d4 00 3c  dd be 2c 00 00 00 32 01  o..t...<..,...2.
0030  00 00 20 00 f0 03 01 00  02 00 00 00 00 00 65 74  .. ............et
0040  68 5f 75 73 64 63 00 00  00 00 00 00 00 00 8d 28  h_usdc.........(
0050  ed 0d 7e dc 93 40 c3 9d  2b 66 84 01 00 00        ..~..@..+f....

I - RFQ

El evento RFQ (solicitud de cotización) contiene el estado (activo o inactivo), el lado (compra, venta o no_direction), seguido del importe y la marca de tiempo. Este mensaje se enviará con el identificador de canal genérico: 0. Consulte la documentación del canal para conocer su dirección de multidifusión.

Especificación del mensaje

<message name="rfq" id="1009">
<field name="instrumentId" id="1" type="uint32" />
<field name="state" id="2" type="yesNo" />
<field name="side" id="3" type="rfqDirection" />
<field name="amount" id="4" type="double" />
<field name="timestampMs" id="5" type="uint64" />
</message>

Tipos de enumeración utilizados en el mensaje:

<enum name="yesNo" encodingType="uint8">
<validValue name="no">0</validValue>
<validValue name="yes">1</validValue>
</enum>
<enum name="rfqDirection" encodingType="uint8">
<validValue name="buy">0</validValue>
<validValue name="sell">1</validValue>
<validValue name="no_direction">2</validValue>
</enum>

Mensaje de ejemplo

Frame 1229: 84 bytes on wire (672 bits), 84 bytes captured (672 bits) on interface lo, id 0

Ethernet II,
  Src: 00:00:00_00:00:00 (00:00:00:00:00:00),
  Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4,
  Src: 127.0.0.1,
  Dst: 239.111.111.1

User Datagram Protocol,
  Src Port: 37608,
  Dst Port: 6100

Deribit SBE

Framing Header
  Packet Length:      34
  Channel Id:         1
  Channel Sequence:   59

RFQ (Request for Quote)
  Header
    Root Block Length:  22
    Type:               rfq (1009)
    Schema Id:          1
    Version:            2
    Num Groups:         0
    Num Vars:           0

  Instrument Id:        12
  RFQ State:            active (1)
  RFQ Side:             buy (0)
  Amount:               1
  Timestamp:            Nov 11, 2022 10:10:46.250000000 UTC

Hex Dump:
0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00  ..............E.
0010  00 46 29 55 40 00 20 11  53 e0 7f 00 00 01 ef 6f  .F)U@. .S......o
0020  6f 01 92 e8 17 d4 00 32  dd b5 22 00 01 00 3b 00  o......2.."...;.
0030  00 00 16 00 f1 03 01 00  02 00 00 00 00 00 0c 00  ................
0040  00 00 01 00 00 00 00 00  00 00 f0 3f 6a a1 2b 66  ...........?j.+f
0050  84 01 00 00                                         ....

J - Deportes

Los instrumentos puntuales generan los mismos mensajes que otros instrumentos. Los eventos contables y los eventos bursátiles se generan para los cambios en los datos de la cartera de pedidos. Las instantáneas de spot incluyen datos bursátiles y contables de todos

Mensaje de ejemplo

Frame 19: 117 bytes on wire (936 bits), 117 bytes captured (936 bits) on interface lo, id 0

Ethernet II,
  Src: 00:00:00_00:00:00 (00:00:00:00:00:00),
  Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4,
  Src: 127.0.0.1,
  Dst: 239.111.111.21

User Datagram Protocol,
  Src Port: 52994,
  Dst Port: 6100

Deribit SBE

Framing Header
  Packet Length:      67
  Channel Id:         21
  Channel Sequence:   184

Book Change
  Header
    Root Block Length:     29
    Type:                  book (1001)
    Schema Id:             1
    Version:               2
    Num Groups:            1
    Num Vars:              0
    Instrument Id:         29
    Timestamp:             Mar 2, 2023 13:43:14.929000000 UTC
    Previous Change ID:    80
    Change ID:             86
    Is Last Part:          last (1)

  Changes
    Group Header
      Group Block Length: 18
      Num In Group:       1
      Group Num Groups:   0
      Group Num Vars:     0

    Change List
      new ask - price :   23308,9845
                amount :   0,0002

Hex Dump:
0000  43 00 15 00 b8 00 00 00  1d 00 e9 03 01 00 02 00  C...............
0010  01 00 00 00 1d 00 00 00  f1 0c 90 a2 86 01 00 00  ................
0020  50 00 00 00 00 00 00 00  56 00 00 00 00 00 00 00  P.......V.......
0030  01 12 00 01 00 00 00 00  00 00 00 ba 49 0c 02 3f  ............I..?
0040  c3 d6 40 2d 43 1c eb e2  36 2a 3f                 ..@-C...6*?

Mensaje de ejemplo

Frame 723: 1494 bytes on wire (11952 bits), 1494 bytes captured (11952 bits) on interface lo, id 0

Ethernet II,
  Src: 00:00:00_00:00:00 (00:00:00:00:00:00),
  Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4,
  Src: 127.0.0.1,
  Dst: 239.111.111.21

User Datagram Protocol,
  Src Port: 48500,
  Dst Port: 6101

Deribit SBE

Framing Header
  Packet Length:      1444
  Channel Id:         121
  Channel Sequence:   4

Instrument State
  Header
    Root Block Length:       140
    Type:                    instrument (1000)
    Schema Id:               1
    Version:                 2
    Num Groups:              0
    Num Vars:                1

  Instrument Id:             29
  Instrument State:          open (1)
  Instrument Kind:           spot (4)
  Instrument Type:           not applicable (0)
  Option Type:               not applicable (0)
  RFQ:                       0
  Settlement Period:         Unknown (255)
  Settlement Period Count:   0
  Base Currency:             BTC
  Quote Currency:            USDC
  Counter Currency:          USDC
  Settlement Currency:       [empty]
  Size Currency:             BTC
  Creation Timestamp:        Mar 2, 2023 13:42:24.000000000 UTC
  Expiration Timestamp:      Jan 1, 3000 08:00:00.000000000 UTC
  Strike Price:              -nan
  Contract Size:             0,0001
  Minimum Trade Amount:      0,0001
  Tick Size:                 0,0001
  Maker Commission:          0
  Taker Commission:          0,0001
  Block Trade Commission:    -nan
  Max Liquidation Commission: -nan
  Max Leverage:              -nan
  Instrument Name:           BTC_USDC

Ticker

Header
  Root Block Length:         133
  Type:                      ticker (1003)
  Schema Id:                 1
  Version:                   2
  Num Groups:                0
  Num Vars:                  0

Instrument Id:               29
Instrument State:            open (1)
Timestamp:                   Mar 2, 2023 13:43:26.970000000 UTC

Open Interest:               -nan
Min Sell Price:              23226,7493
Max Buy Price:               23460,1839
Last Price:                  23274,6191
Index Price:                 23372,9729
Mark Price:                  23296,2361

Best Bid Price:              23274,6191
Best Bid Amount:             0,0005
Best Ask Price:              23317,8531
Best Ask Amount:             0,0001

Current Funding:             -nan
Funding 8h:                  -nan
Estimated Delivery Price:    -nan
Delivery Price:              -nan
Settlement Price:            -nan

Book Snapshot

Header
  Root Block Length:         22
  Type:                      snapshot (1004)
  Schema Id:                 1
  Version:                   2
  Num Groups:                1
  Num Vars:                  0

Instrument Id:               29
Timestamp:                   Mar 2, 2023 13:43:26.970000000 UTC
Change ID:                   163
Is Book Complete:            complete
Is Last Part:                last (1)

Levels
Group Header
  Group Block Length:        17
  Num In Group:              27
  Group Num Groups:          0
  Group Num Vars:            0

Orderbook Levels:
  ask - price: 23317,8531     amount: 0,0001
  bid - price: 23274,6191     amount: 0,0005
  ask - price: 23325,4224     amount: 0,0001
  bid - price: 23267,3293     amount: 0,0003
  ask - price: 23327,1627     amount: 0,0004
  ask - price: 23332,8221     amount: 0,0002
  ask - price: 23343,9179     amount: 0,0006
  ask - price: 23355,7196     amount: 0,0007
  ask - price: 23355,7235     amount: 0,0004
  ask - price: 23360,0454     amount: 0,0004
  ask - price: 23363,7177     amount: 0,0006
  ask - price: 23370,4559     amount: 0,0007
  ask - price: 23371,5373     amount: 0,0001
  ask - price: 23374,1273     amount: 0,0002
  ask - price: 23383,1583     amount: 0,0002
  ask - price: 23386,2295     amount: 0,0001
  ask - price: 23392,8084     amount: 0,0004
  ask - price: 23392,8220     amount: 0,0002
  ask - price: 23409,2294     amount: 0,0004
  ask - price: 23410,6344     amount: 0,0001
  ask - price: 23417,4490     amount: 0,0003
  ask - price: 23419,4629     amount: 0,0008
  ask - price: 23436,5183     amount: 0,0001
  ask - price: 23436,5464     amount: 0,0008
  ask - price: 23437,9561     amount: 0,0001
  ask - price: 23438,0801     amount: 0,0002
  ask - price: 23438,2290     amount: 0,0003
Instrument
State Header
  Root Block Length:         140
  Type:                      instrument (1000)
  Schema Id:                 1
  Version:                   2
  Num Groups:                0
  Num Vars:                  1

Instrument Id:               30
Instrument State:            open (1)
Instrument Kind:             spot (4)
Instrument Type:             not applicable (0)
Option Type:                 not applicable (0)
RFQ:                         0
Settlement Period:           Unknown (255)
Settlement Period Count:     0

Base Currency:               ETH
Quote Currency:              USDC
Counter Currency:            USDC
Settlement Currency:         –
Size Currency:               ETH

Creation Timestamp:          Mar 2, 2023 13:42:24.000000000 UTC
Expiration Timestamp:        Jan 1, 3000 08:00:00.000000000 UTC

Strike Price:                -nan
Contract Size:               0,0001
Minimum Trade Amount:        0,0001
Tick Size:                   0,0001

Maker Commission:            0
Taker Commission:            0,0001
Block Trade Commission:      -nan
Max Liquidation Commission:  -nan
Max Leverage:                -nan

Instrument Name:             ETH_USDC

Ticker

Header
  Root Block Length:         133
  Type:                      ticker (1003)
  Schema Id:                 1
  Version:                   2
  Num Groups:                0
  Num Vars:                  0

Instrument Id:               30
Instrument State:            open (1)
Timestamp:                   Mar 2, 2023 13:43:26.973000000 UTC

Open Interest:               -nan
Min Sell Price:              1624,8012
Max Buy Price:               1641,1309
Last Price:                  1628,9218
Index Price:                 1634,1202
Mark Price:                  1629,0167

Best Bid Price:              0
Best Bid Amount:             0
Best Ask Price:              1624,9995
Best Ask Amount:             0,0025

Current Funding:             -nan
Funding 8h:                  -nan
Estimated Delivery Price:    -nan
Delivery Price:              -nan
Settlement Price:            -nan

Book Snapshot

Header
  Root Block Length:         22
  Type:                      snapshot (1004)
  Schema Id:                 1
  Version:                   2
  Num Groups:                1
  Num Vars:                  0

Instrument Id:               30
Timestamp:                   Mar 2, 2023 13:43:26.973000000 UTC
Change ID:                   162
Is Book Complete:            complete (1)
Is Last Part:                more to come (0)

Levels
Group Header
  Group Block Length:        17
  Num In Group:              17
  Group Num Groups:          0
  Group Num Vars:            0

Orderbook Levels (asks):
  ask - price: 1624,9995     amount: 0,0025
  ask - price: 1630,9028     amount: 0,0104
  ask - price: 1630,9219     amount: 0,0098
  ask - price: 1631,4677     amount: 0,0012
  ask - price: 1632,6882     amount: 0,0043
  ask - price: 1634,0983     amount: 0,0052
  ask - price: 1634,7069     amount: 0,0061
  ask - price: 1635,2764     amount: 0,0098
  ask - price: 1635,3288     amount: 0,0098
  ask - price: 1635,5830     amount: 0,0006
  ask - price: 1635,9182     amount: 0,0012
  ask - price: 1637,3179     amount: 0,0055
  ask - price: 1637,4283     amount: 0,0043
  ask - price: 1637,6410     amount: 0,0061
  ask - price: 1637,8371     amount: 0,0061
  ask - price: 1638,5149     amount: 0,0117
  ask - price: 1639,1852     amount: 0,0043

Hex Dump:
0000  a4 05 79 00 04 00 00 00  8c 00 e8 03 01 00 02 00
0010  00 00 01 00 1d 00 00 00  01 04 00 00 00 ff 00 00
0020  42 54 43 00 00 00 00 00  55 53 44 43 00 00 00 00
0030  55 53 44 43 00 00 00 00  00 00 00 00 00 00 00 00
0040  42 54 43 00 00 00 00 00  00 46 8f a2 86 01 00 00
0050  00 54 04 dc 8f 1d 00 00  ff ff ff ff ff ff ff ff
0060  2d 43 1c eb e2 36 1a 3f  2d 43 1c eb e2 36 1a 3f
0070  2d 43 1c eb e2 36 1a 3f  00 00 00 00 00 00 00 00
0080  2d 43 1c eb e2 36 1a 3f  ff ff ff ff ff ff ff ff
0090  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
00a0  08 42 54 43 5f 55 53 44  43 85 00 eb 03 01 00 02
00b0  00 00 00 00 00 1d 00 00  00 01 fa 3b 90 a2 86 01
00c0  00 00 ff ff ff ff ff ff  ff ff b9 fc 87 f4 af ae
00d0  d6 40 6f 81 04 c5 0b e9  d6 40 3d 9b 55 9f a7 ba
00e0  d6 40 92 5c fe 43 3e d3  d6 40 a5 2c 43 1c 0f c0
00f0  d6 40 3d 9b 55 9f a7 ba  d6 40 fc a9 f1 d2 4d 62
0100  40 3f 0e be 30 99 76 c5  d6 40 2d 43 1c eb e2 36
0110  1a 3f ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
0120  ff ff 92 5c fe 43 3e d3  d6 40 ff ff ff ff ff ff
0130  ff ff ff ff ff ff ff ff  ff ff 16 00 ec 03 01 00
0140  02 00 01 00 00 00 1d 00  00 00 fa 3b 90 a2 86 01
0150  00 00 a3 00 00 00 00 00  00 00 01 01 11 00 1b 00
0160  00 00 00 00 00 0e be 30  99 76 c5 d6 40 2d 43 1c
0170  eb e2 36 1a 3f 01 3d 9b  55 9f a7 ba d6 40 fc a9
0180  f1 d2 4d 62 40 3f 00 75  02 9a 08 5b c7 d6 40 2d
0190  43 1c eb e2 36 1a 3f 01  a5 4e 40 13 d5 b8 d6 40
01a0  61 32 55 30 2a a9 33 3f  00 c4 42 ad 69 ca c7 d6
01b0  40 2d 43 1c eb e2 36 3a  3f 00 83 51 49 9d 34 c9
01c0  d6 40 2d 43 1c eb e2 36  2a 3f 00 40 a4 df be fa
01d0  cb d6 40 61 32 55 30 2a  a9 43 3f 00 8d 28 ed 0d
01e0  ee ce d6 40 c7 ba b8 8d  06 f0 46 3f 00 aa f1 d2
01f0  4d ee ce d6 40 2d 43 1c  eb e2 36 3a 3f 00 cf 66
0200  d5 e7 02 d0 d6 40 2d 43  1c eb e2 36 3a 3f 00 16
0210  fb cb ee ed d0 d6 40 61  32 55 30 2a a9 43 3f 00
0220  90 31 77 2d 9d d2 d6 40  c7 ba b8 8d 06 f0 46 3f
0230  00 09 8a 1f 63 e2 d2 d6  40 2d 43 1c eb e2 36 1a
0240  3f 00 32 e6 ae 25 88 d3  d6 40 2d 43 1c eb e2 36
0250  2a 3f 00 bd 52 96 21 ca  d5 d6 40 2d 43 1c eb e2
0260  36 2a 3f 00 9c c4 20 b0  8e d6 d6 40 2d 43 1c eb
0270  e2 36 1a 3f 00 86 5a d3  bc 33 d8 d6 40 2d 43 1c
0280  eb e2 36 3a 3f 00 54 e3  a5 9b 34 d8 d6 40 2d 43
0290  1c eb e2 36 2a 3f 00 6d  56 7d ae 4e dc d6 40 2d
02a0  43 1c eb e2 36 3a 3f 00  25 75 02 9a a8 dc d6 40
02b0  2d 43 1c eb e2 36 1a 3f  00 fa 7e 6a bc 5c de d6
02c0  40 61 32 55 30 2a a9 33  3f 00 54 52 27 a0 dd de
02d0  d6 40 2d 43 1c eb e2 36  4a 3f 00 61 c3 d3 2b 21
02e0  e3 d6 40 2d 43 1c eb e2  36 1a 3f 00 a2 b4 37 f8
02f0  22 e3 d6 40 2d 43 1c eb  e2 36 4a 3f 00 ed 0d be
0300  30 7d e3 d6 40 2d 43 1c  eb e2 36 1a 3f 00 1a c0
0310  5b 20 85 e3 d6 40 2d 43  1c eb e2 36 2a 3f 00 b2
0320  9d ef a7 8e e3 d6 40 61  32 55 30 2a a9 33 3f 8c
0330  00 e8 03 01 00 02 00 00  00 01 00 1e 00 00 00 01
0340  04 00 00 00 ff 00 00 45  54 48 00 00 00 00 00 55
0350  53 44 43 00 00 00 00 00  55 53 44 43 00 00 00 00
0360  00 00 00 00 00 00 00 00  45 54 48 00 00 00 00 00
0370  46 8f a2 86 01 00 00 00  54 04 dc 8f 1d 00 00 ff
0380  ff ff ff ff ff ff ff 2d  43 1c eb e2 36 1a 3f 2d
0390  43 1c eb e2 36 1a 3f 2d  43 1c eb e2 36 1a 3f ff
03a0  ff ff ff ff ff ff ff ff  2d 43 1c eb e2 36 1a 3f
03b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
03c0  ff ff ff ff ff ff ff ff  08 45 54 48 5f 55 53 44
03d0  85 00 eb 03 01 00 02 00  00 00 00 00 1e 00 00 00
03e0  01 fd 3b 90 a2 86 01 00  00 ff ff ff ff ff ff ff
03f0  ff 39 d6 c5 6d 34 63 99  40 30 4c a6 0a 86 a4 99
0400  40 d0 d5 56 ec af 73 99  40 eb 73 b5 15 7b 88 99
0410  40 5f 07 ce 19 11 74 99  40 00 00 00 00 00 00 00
0420  00 00 00 00 00 00 00 00  00 68 91 ed 7c ff 63 99
0430  40 7b 14 ae 47 e1 7a 64  3f ff ff ff ff ff ff ff
0440  ff ff ff ff ff ff ff ff  ff eb 73 b5 15 7b 88 99
0450  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
0460  16 00 ec 03 01 00 02 00  01 00 00 00 1e 00 00 00
0470  fd 3b 90 a2 86 01 00 00  a2 00 00 00 00 00 00 00
0480  00 01 00 11 00 11 00 00  00 00 00 00 68 91 ed 7c
0490  ff 63 99 40 7b 14 ae 47  e1 7a 64 3f 00 51 6b 9a
04a0  77 9c 7b 99 40 94 f6 06  5f 98 4c 85 3f 00 bb b8
04b0  8d 06 b0 7b 99 40 6e a3  01 bc 05 12 84 3f 00 5b
04c0  b1 bf ec de 7d 99 40 61  32 55 30 2a a9 53 3f 00
04d0  6e 34 80 b7 c0 82 99 40  22 fd f6 75 e0 9c 71 3f
04e0  00 ca 54 c1 a8 64 88 99  40 94 f6 06 5f 98 4c 75
04f0  3f 00 2b f6 97 dd d3 8a  99 40 07 f0 16 48 50 fc
0500  78 3f 00 75 02 9a 08 1b  8d 99 40 6e a3 01 bc 05
0510  12 84 3f 00 b3 7b f2 b0  50 8d 99 40 6e a3 01 bc
0520  05 12 84 3f 00 46 b6 f3  fd 54 8e 99 40 61 32 55
0530  30 2a a9 43 3f 00 c0 ec  9e 3c ac 8f 99 40 61 32
0540  55 30 2a a9 53 3f 00 98  dd 93 87 45 95 99 40 ba
0550  49 0c 02 2b 87 76 3f 00  82 73 46 94 b6 95 99 40
0560  22 fd f6 75 e0 9c 71 3f  00 f2 d2 4d 62 90 96 99
0570  40 07 f0 16 48 50 fc 78  3f 00 ed 0d be 30 59 97
0580  99 40 07 f0 16 48 50 fc  78 3f 00 d7 12 f2 41 0f
0590  9a 99 40 67 d5 e7 6a 2b  f6 87 3f 00 e0 9c 11 a5
05a0  bd 9c 99 40 22 fd f6 75  e0 9c 71 3f

Mecanismos básicos

A - El cliente comienza a usar la API

Cuando un cliente se inicia, debe empezar a escuchar los eventos de multidifusión y poner en cola los mensajes recibidos para asegurarse de que no pasa por alto los cambios mientras crea los datos iniciales con los siguientes pasos.

  1. Recupere el diccionario de instrumentos completo actual para todos los instrumentos abiertos con la nueva llamada a la API multicast/get_instrument_dictionary

    El resultado de la llamada es un mapeo entre el ID del instrumento y el nombre del instrumento

    por ejemplo:

    {"jsonrpc":"2.0","result":{"ETH-PERPETUAL":2,"BTC-PERPETUAL":3,"BTC-15APR22": 4}}

    La asignación también se puede recuperar para la divisa o el producto en cuestión desde la API normal mediante la llamada public/get_instruments.

    Los datos del instrumento ahora contienen el identificador numérico del instrumento. El cliente puede usar esto para crear un diccionario de identificación/nombre del instrumento

  2. Consulte el estado de los libros de pedidos de cada instrumento mediante el public/get_order_book (o public/get_order_book_by_instrument_id) Llamada a la API.

Aplica los cambios en la cartera de pedidos que eventualmente no se hayan realizado, en función del identificador de cambio en los libros recuperados y en los eventos de multidifusión recibidos.

B - El cliente comienza a utilizar multidifusiones instantáneas

El cliente también puede crear el estado inicial de los libros basándose en las instantáneas habituales. Los detalles de los mensajes instantáneos (instrument/instrument_v2/ticker/snapshot

Cuando se utilizan instantáneas, se sigue recomendando poner en cola los cambios, ya que pueden ocurrir mientras la plataforma crea o envía las instantáneas. A partir de los cambios a nivel de libro que estén en cola, si hay alguno con un identificador de cambio superior al indicado en la instantánea

Obviamente, los cambios realizados antes de la instantánea Change ID no son relevantes y deben descartarse. Para solucionar el caso (poco probable) de que solo se recopilen eventos con un identificador de cambio superior al de la instantánea (o, de hecho, el resultado de la llamada a la API), el identificador de cambio anterior del evento también debería validarse con el ID de cambio de la instantánea del libro

Como las instantáneas contienen tanto el ID del instrumento como el nombre del instrumento, así como otros datos estáticos del instrumento, probablemente no sea necesario recuperar el diccionario de la API.

Nota

Tenga en cuenta que, si bien el multicast/get_instrument_dictionary La llamada a la API contiene solo la lista de instrumentos activos; el flujo de instantáneas incluye los instrumentos cerrados o fijos hasta que se archivan (normalmente, después de un día).

Al unirse a un canal de instantáneas en medio de un lote de instantáneas (es decir, paquetes que se reciben inmediatamente al unirse), se recomienda ignorarlos y esperar al siguiente lote para asegurarse de que se recibe o procesa un lote de instantáneas completo, con todos los instrumentos del canal.

C - Instrumentos nuevos o instrumentos cerrados

Cuando se agrega un nuevo instrumento al sistema, un instrument se genera un evento (ver arriba) que contiene el ID y el nombre del nuevo instrumento. El nuevo libro también formará parte de las instantáneas

Cuando los instrumentos están cerrados o liquidados, también hay instrument eventos generados que el cliente puede utilizar para dejar de mantener el libro.

Recuperación de paquetes del canal D

Un cliente puede detectar un paquete perdido basándose en un salto en los números de secuencia. Tenga en cuenta que el número de secuencia es un entero de 32 bits y pasará a ser 0 cuando alcance su valor máximo (2^32-1), que los clientes deberían poder reconocer como una secuencia normal y no tratarlo como

Los números de secuencia también pueden restablecerse a 0 después de un mantenimiento del sistema, lo que puede requerir que los clientes reconstruyan sus datos iniciales (por ejemplo, como se describió anteriormente).

Llamada a la API

Cuando el cliente detecta paquetes perdidos, puede recuperarlos mediante el multicast/get_packets llamada. Los parámetros de la llamada

id_canal

El identificador entero del canal de multidifusión en el que se perdió el paquete

iniciar

Número de secuencia de inicio

final

Número de secuencia final

La respuesta contiene la lista de paquetes solicitados, excluyendo el encabezado de encuadre (solo los mensajes SBE) en formato binario codificado en base64, que se puede decodificar de la misma manera que un paquete de multidifusión (después de la decodificación en base64).

Límites de llamadas a la API

Es posible solicitar un máximo de 1000 paquetes consecutivos en el canal con esta llamada. La llamada también tiene un límite de velocidad de 1 solicitud por segundo con una ráfaga de 3 solicitudes por segundo. Si se pierden más de 1000 paquetes en el canal a la vez, se prefiere realizar una recuperación completa del canal mediante cualquiera de los mecanismos de inicio del cliente descritos en los artículos 4.A y 4.B, en lugar de intentar

Ejemplo

Solicitud

api/v2/multicast/get_packets?channel_id=15&end=2&start=1 

Respuesta

{
  "jsonrpc": "2.0",
  "result": [
    {
      "seq": 1,
      "packet": "6QMBAAEAGQABAAAAAQAAABuxRACAAQAAAAAAAAAAAAAFAAAAAAAAAAESAAEAAAAAAAAAzczMzBxy5kAAAAAAAAAkQOsDAQABACgAAAAAAAEAAAAbsUQAgAEAAAAAAAAAAAAAAAAAAAAAAADNzMzMHHLmQAAAAAAAACRA"
    },
    {
      "seq": 2,
      "packet": "6QMBAAEAGQABAAAAAQAAAIWxRACAAQAABQAAAAAAAAAHAAAAAAAAAAESAAEAAAAAAAEA7FG4Hr185UAAAAAAAAA0QOsDAQABACgAAAAAAAEAAACFsUQAgAEAAOxRuB69fOVAAAAAAAAANEDNzMzMHHLmQAAAAAAAACRA"
    }
  ],
  "usIn": 1649273556304472,
  "usOut": 1649273556304731,
  "usDiff": 259,
  "testnet": false
}

Información para desarrolladores

Junto a este documento, se proporcionan los siguientes archivos para ayudar al desarrollo de los clientes.

A - Capturas de muestra

Se toman de una configuración de prueba de desarrollo y se pueden usar como referencia para inspeccionar con Wireshark (usando el complemento que creamos) o reproducir paquetes con herramientas como tcpreplay.

Los rastros adicionales con información nueva se proporcionan por separado, por ejemplo, para los mensajes nuevos que deberían usarse para

Reproduzca la captura de muestras

tc preplay está disponible en la mayoría de las distribuciones de Linux como paquete. Tras la instalación, el archivo pcap se puede reproducir

sudo tcpreplay -p 1 -i lo sample_capture_v1_6.pcapng

Con este comando, los paquetes del archivo de captura se reproducen en la interfaz local (bucle) con una velocidad de 1 paquete por segundo.

Tenga en cuenta que tcpreplay solo puede reproducir paquetes en la red. Si bien la reproducción local es visible, por ejemplo, con tcpdump en el propio host, no es posible recibirlos realmente con una aplicación. Para poder usarlo con un cliente de prueba, tcpreplay necesita disponer de una interfaz física real y el cliente tendrá que ejecutarse en otro host conectado a

sample_capture_v1_6.pcapng

ejemplos de instantáneas y mensajes de multidifusión

B - Complemento de disección Wireshark

Un complemento de disector LUA Wireshark deribit_sbe.lua se creó para permitir que la herramienta de captura y análisis de paquetes de Wireshark muestre el contenido de los paquetes de multidifusión.

El disector se ha probado con la versión 3.4.8 de Wireshark en Linux (ubuntu 20.04).

Para agregar el disector a Wireshark, copie el archivo en el directorio de «Plugins LUA personales» o 'Plugins LUA globales' que se pueden encontrar en Wireshark en 'Ayuda' -> 'Acerca de Wireshark' -> 'Carpetas'.

La carga del complemento se puede verificar haciendo clic en el «Plugins» pestaña en la misma ventana.

El complemento se asigna automáticamente a los puertos UDP 6100 y 6101; sin embargo, si se requiere la decodificación en otros puertos (por ejemplo, flujos de prueba), se deben asignar explícitamente en

Wireshark.

Una vez que se carga el complemento y los paquetes no se decodifican, Haga clic con el botón derecho en cualquiera de los paquetes y seleccione 'Decodificar como... ' desde el menú contextual. En el cuadro de diálogo, seleccione el número de puerto de destino UDP del paquete y asigne el «DERIBIT SBE» decodificador para ello.

El archivo LUA también se puede usar como muestra para comprender la decodificación del mensaje.

Definición XML de C - SBE

El deribit_multicast.xml El archivo XML contiene las definiciones de los mensajes en el formato XML SBE (consulte la especificación SBE) y se puede utilizar como referencia para crear el decodificador o como entrada para la generación de código para diferentes idiomas.

D - Herramientas de generación de código

La herramienta que se puede utilizar para la generación de código (requiere la instalación de Java) ha sido creada por Real Logic. Solo se incluye para mayor comodidad y no es compatible con nosotros.

Para cualquier consulta o problema (no relacionado con posibles problemas con la definición de XML), el repositorio github del proyecto es el mejor recurso (https://github.com/real-logic/simple-binary-encoding). También se pueden encontrar versiones más recientes de la herramienta allí. Puede generar código de biblioteca a partir de la especificación XML en diferentes lenguajes de programación (c, c++, java, go, rust). La herramienta es de código abierto bajo la licencia Apache 2.0

Tenga en cuenta que la definición de XML solo se proporciona para ayudar al desarrollo del cliente, no se usa en la plataforma (y no se prueba exhaustivamente), por lo que se agradece cualquier comentario sobre cualquier problema que se encuentre en XML.

Los comandos de ejemplo se proporcionan como scripts (p. ej. generate_c.sh) como ejemplo para generar bibliotecas.

E: Nota sobre los campos opcionales en SBE

En SBE, la secuencia y el tamaño de los campos son fijos. Si un campo está marcado como opcional, solo significa que el campo tiene un «valor nulo» especial. La especificación SBE especifica los valores nulos predeterminados para los diferentes tipos de campos, a menos que «NullValue» esté definido específicamente en un campo. Para los campos enteros, el valor nulo predeterminado es 2tamaño de bits-1, para los flotantes es un valor NaN.

Historial de cambios

Fecha

Versión

Resumen

6 de abril de 2022

1.1

Publicado por primera vez

11 de abril de 2022

1.2

Cambio de la estructura del encabezado del mensaje (BlockLength se movió a la parte superior del encabezado).

Agregue una nueva llamada a la API para recuperar el diccionario del instrumento. Mejore las descripciones de los mensajes con tipos y ejemplos de mensajes.

Se actualizaron las especificaciones XML, el rastreo de muestras y el disector LUA

13 de abril de 2022

1.3

Corrija el campo InstrumentID en la especificación XML, actualice las bibliotecas de código generadas

2 de mayo de 2022

1.4

  • Introducir el mensaje Ticker

  • Sustituir el evento de cotización por Ticker

  • Amplíe el mensaje del instrumento con datos estáticos del instrumento

  • Incluya el mensaje del instrumento en las instantáneas

  • Eliminar el nombre del instrumento del mensaje instantáneo (incluido en el mensaje del instrumento)

  • Incluya el mensaje Ticker en las instantáneas

  • Cambie el orden de los mensajes del paquete cuando cambie un libro (Operaciones/Ticker/Libro)

  • Mejore el llenado de paquetes (por ejemplo, los mensajes instantáneos de gran tamaño que se dividen en varios paquetes no comienzan desde un paquete nuevo, sino que llenan el espacio después de los mensajes de Instrument/Ticker)

  • Proporcione un seguimiento de muestras con una configuración de canal de multidifusión similar a la de producción

  • Actualice el disector LUA de Wireshark con los cambios en los mensajes

13 de mayo de 2022

1.4.1

- Corrige la longitud del bloque raíz de la muestra del mensaje del instrumento y proporciona un nuevo rastreo de muestra

23 de mayo de 2022

1.4.2

  • Corregir la definición XML de la enumeración InstrumentKind (cambio de XML)

  • Se corrigió el fragmento XML del documento para valores nulos flotantes en el mensaje de cotización (cambio solo en el documento)

  • Añada una nota a las instantáneas sobre instrumentos cerrados o fijos (cambio solo en el documento)

  • Agregar comentario sobre la unión a mitad de lote del canal de instantáneas (cambio solo en el documento)

  • Cambie el nombre del archivo de muestra pcap para que coincida con la versión del documento para evitar confusiones

09 de junio de 2022

1.4.3

  • Corrige la definición XML de la enumeración OptionType (XML) y da como resultado un cambio de código de cliente generado

  • Se corrige un fragmento XML en el documento para OptionType en los mensajes del instrumento (cambio solo en el documento)

  • Agregue una nota sobre el rango de números de secuencia del encabezado del entramado de paquetes (solo cambio en el documento)

  • Añada una nota sobre la naturaleza no secuencial de los identificadores de cambio de libro (cambio solo en el documento)

  • Actualice la herramienta de generación de código sbe incluida de Real Logic a la última versión (consulte https://github.com/real-logic/simple-binary-encodin g/lanzamientos). Consulte las notas de la sección 5.D sobre la herramienta

  • Cambie el nombre del archivo de muestra pcap para que coincida con la versión del documento

12 de julio de 2022

1.5

  • Se agregaron nuevos estados y tipos de instrumentos específicos para combinaciones (el XML cambia, pero solo afecta a los nuevos canales combinados)

  • Se agregaron notas sobre el comportamiento de los combos en las descripciones de los mensajes, cuando sea relevante (cambio solo en el documento)

  • Más aclaraciones sobre los números de secuencia de paquetes en la sección 4.D (solo cambio en el documento)

  • Aclaración sobre el uso de flotadores en la sección A.5 (solo cambio en el documento)

  • Aclaración sobre cómo comprobar el ID de cambio anterior en la recuperación (solo cambio en el documento)

  • Se cambió el nombre de pcap de muestra para que coincida con el número de versión del documento (cambio solo en el documento)

  • Se agregó una nota sobre la herramienta tcpreplay (solo cambio en el documento)

  • Se agregó una nota sobre los límites de la API de recuperación de paquetes (solo cambio en el documento)

14 de octubre de 2022

1.5.1

- Se agregaron nuevos tipos de mensajes SnapshotStart y SnapshotEnd

3 de noviembre de 2022

1.5.2

- Se agregó un nuevo tipo de mensaje ComboLegs

11 de noviembre de 2022

1.5.3

- Se agregaron nuevos tipos de mensajes PriceIndex y rfq

31 de enero de 2023

1.5.4

- Se corrigió la enumeración utilizada en la solicitud de presupuesto

6 de marzo de 2023

1.5.5

- Puntos añadidos

6 de abril de 2023

1.5.6

- Cambie el nombre de todas las referencias a «Tipo futuro» por «Tipo de instrumento»

27 de abril de 2023

1.5.7

- Agregue una explicación sobre la lista de cambios vacía en el cambio del libro de pedidos

22 de mayo de 2023

1.5.8

  • Se ha añadido una presencia opcional al campo de cotización open_interest.

  • Se actualizó el campo estimated_delivery_price a -nan en el ejemplo de un mensaje de cotización para spot.

15 de junio de 2023

1.6

  • Agregue un nuevo mensaje de instrumento v2 para eliminar el campo de estado rfq obsoleto y agregar el grupo de pasos del tamaño de las garrapatas a los instrumentos

  • Se eliminó el campo MessageHeader de las especificaciones de los mensajes XML, ya que los generadores de código lo agregan implícitamente

  • Se agregó información sobre los mensajes de índice de precios de los canales que se envían

  • Especificaciones XML actualizadas en este documento desde el archivo de especificaciones XML

  • Se ha añadido información sobre los campos opcionales de los mensajes

  • Ejemplo de pcap actualizado

20 de julio de 2023

1.6.1

  • Incluye ambas definiciones XML (con y sin MessageHeaders en cada mensaje) en el paquete de desarrollo.

  • Añada una nota sobre esto en el capítulo A (en la página 3, antes de A.1).

  • Actualiza el JAR generador de código del paquete de desarrollo a la versión más reciente (1.28.3) de Real-Logic (https://mvnrepository.com/artifact/uk.co.real-logic/ sbe-todo/1.28.3)

2 de diciembre de 2023

1.6.2

- Actualice los documentos de asignación de canales de prueba y producción solo en el paquete de desarrollo para los nuevos canales de USDT (sin cambios en este documento, solo el número de versión actualizado)