Saltar al contenido principal

XDR

Stellar almacena y comunica datos del ledger, transacciones, resultados, historial y mensajes en un formato binario llamado Representación de Datos Externos (XDR). XDR está optimizado para el rendimiento de la red, pero no es legible para los humanos. Horizon y los SDK de Stellar convierten los XDR en formatos más amigables.

.X files

Las estructuras de datos en XDR se especifican en un archivo de definición de interfaz (IDL). Los archivos IDL utilizados para la red Stellar están disponibles en GitHub.

Esquema de Conversión JSON y XDR

El esquema JSON y XDR canónico está definido por el stellar-xdr crate y también está expuesto por el @stellar/stellar-xdr-json-web npm package. El esquema proporciona un medio de ida y vuelta para convertir cualquier tipo de XDR de Stellar a JSON y convertir ese JSON de regreso al XDR idéntico.

Esta conversión es visible en el CLI de Stellar, Lab View XDR y la tabla de eventos de Hubble.

Características Clave del Esquema de Conversión JSON y XDR

  • Ida y Vuelta: El formato JSON permite convertir de XDR a JSON y de regreso a XDR sin pérdida de información.
  • Autodescriptivo: El formato JSON describe los detalles internos del tipo pero no identifica el tipo que está codificado. Esto es similar a XDR, que tampoco identifica el tipo codificado.
backwards-incompatible

El esquema definido (vinculado arriba) no es compatible hacia atrás entre una versión de protocolo dada y versiones anteriores. La práctica recomendada es almacenar los datos del ledger requeridos en formato XDR, no en formato JSON.

Más Sobre XDR

XDR está especificado en RFC 4506 y es similar a herramientas como Protocol Buffers o Thrift. XDR proporciona varias características importantes:

  • Es muy compacto, por lo que puede ser transmitido rápidamente y almacenado con un espacio en disco mínimo.
  • Los datos codificados en XDR se almacenan de manera fiable y predecible. Los campos siempre están en el mismo orden, lo que hace que firmar y verificar mensajes XDR criptográficamente sea sencillo.
  • Las definiciones XDR incluyen descripciones detalladas de tipos de datos y estructuras, lo que no es posible en formatos más simples como JSON, TOML o YAML.

Parseo de XDR

Dado que XDR es un formato binario y no es tan conocido como formatos más simples como JSON, todos los SDK de Stellar incluyen herramientas para parsear XDR y lo harán automáticamente al recuperar datos.

Además, el servidor API de Horizon generalmente expone las partes más importantes de los datos XDR en JSON, por lo que son más fáciles de parsear si no estás utilizando un SDK. Los datos XDR aún están incluidos (codificados como una cadena base64) dentro del JSON en caso de que necesites acceso directo a ellos.