Posted on :: ::

Si ya leíste mi post anterior, sabés que las blockchains odian el JSON por pesado y lento. Pero acá viene lo interesante: así como los humanos hablamos distintos idiomas según nuestra cultura, las blockchains usan distintos formatos binarios según sus objetivos.

Hoy vamos a comparar los "idiomas" (serializadores) más populares: XDR, SCALE, Borsh y Protobuf.


XDR: El estándar de oro institucional

El idioma que habla Stellar destaca por ser un estándar de internet (RFC 4506) extremadamente predecible. Su gran ventaja es la alineación de datos: al empaquetar todo en bloques de 4 bytes, facilita enormemente el trabajo de la CPU, que puede leer la información de forma directa y rápida. Sin embargo, su desventaja es que esta misma alineación genera un poco de "relleno" (padding), lo que hace que los mensajes sean ligeramente más pesados que en otros formatos más modernos. Es el precio a pagar por una estabilidad y seguridad que no cambiarán en décadas.

SCALE: La dieta estricta de los datos

Usado por Polkadot, SCALE es el rey de la optimización de espacio. Su principal ventaja es que es increíblemente ligero; elimina cualquier bit innecesario y no utiliza metadatos ni rellenos, lo que reduce los costos de almacenamiento en la cadena al mínimo posible. La desventaja es su complejidad: al estar tan comprimido, es un formato difícil de implementar fuera de su ecosistema original. Si intentas parsearlo sin las librerías oficiales, te encontrarás con un reto técnico considerable.

Borsh: Velocidad y determinismo puro

Si lo que buscas es rendimiento extremo como el de Solana, Borsh es la respuesta. Su mayor ventaja es el determinismo estricto: garantiza que un mismo dato produzca siempre el mismo binario exacto, algo vital para que los hashes de las transacciones coincidan en una red paralela. Es absurdamente rápido de procesar por la CPU. No obstante, su desventaja es que es muy poco flexible: no maneja bien los cambios en las estructuras de datos (versionado), lo que obliga a los desarrolladores a ser extremadamente cuidadosos al actualizar sus contratos.

Protobuf: El conector universal

El formato de Google, utilizado en Cosmos, es el más "amigable" de todos. Su gran ventaja es la interoperabilidad; casi cualquier lenguaje de programación tiene soporte nativo para Protobuf, lo que facilita conectar la blockchain con aplicaciones tradicionales. Por otro lado, su desventaja es que es el más "pesado" de los formatos binarios. Al incluir información extra para permitir que versiones viejas de un programa lean datos nuevos, consume más ancho de banda y espacio que sus competidores


¿Por qué esto nos importa como desarrolladores de Rust?

Aunque Rust es el lenguaje común, cada blockchain tiene sus propias reglas de etiqueta. No te voy a mentir: moverte de Stellar a Solana no es simplemente cambiar una línea de código.

Aunque tu struct básico de datos se vea igual, los atributos y macros que lo envuelven cambian por completo. En Stellar (Soroban), usarás macros que preparan tu dato para el rigor del XDR y el almacenamiento basado en "alquiler de estado". En Solana, tendrás que lidiar con el framework Anchor y un sistema de "cuentas" (Accounts) que es único en su especie, y así con el resto de las blockchains.

Lo que sí te da Rust es la seguridad de tipos: sin importar si el destino final es XDR, Borsh o el que sea, el compilador te garantiza que tus datos son coherentes antes de que se conviertan en bytes. El "idioma" binario cambia el resultado final, pero la robustez de tu lógica nace en Rust.

Conclusión

No hay un idioma "mejor" que otro, simplemente cada uno tiene un objetivo para su red. Entender qué idioma habla tu blockchain te ayuda a entender su filosofía.