Posted on :: ::

Hace tiempo me vengo preguntando cómo es que funciona la entrada del código que escribo a la blockchain. A veces al empezar todo suena tan abstracto que es más sencillo huir. Pero acá te lo vengo a plantear de una manera fácil. Vamos a seguir el viaje de un dato desde que nace en tu código hasta que se vuelve inmutable en la cadena.

1. El Origen: El Struct "Vivo"

Todo empieza en tu Smart Contract. Imagina que estás creando un sistema para una institución financiera. Tienes una estructura de datos clara y segura con struct, ya que no importa la blockchain de cual hablemos, si usa rust usará un struct de esta manera:

#[derive(Serialize, Deserialize)] // La magia de Serde comienza aquí
struct Transaccion {
    monto: u64,
    destino: String,
    moneda: String,
}

Acabamos de crear la forma de nuestros datos. En este punto, los datos están "vivos" en la RAM. Pero hay un problema: la RAM es volátil y local. Si queremos que estos datos vivan para siempre, tenemos que "congelarlos", ya que de otra manera no podrán ser transmitidos ni ingresados al registro de la cadena.

2. La Transformación: Compilación y Serialización

Para entender mejor, el ejemplo de cómo el código compila es muy parecido a cuando hacemos una serialización con uno de los crates que más usamos a diario: Serde.

Al compilar, estamos haciendo una especie de "serialización" hacia la ledger. Traducimos nuestra lógica (el código) a instrucciones que la red entienda (en nuestro caso, Wasm o WebAssembly).

3. El Formato: ¿Por qué no usamos JSON?

Si has hecho desarrollo web, seguro estás acostumbrado al JSON.

Sin embargo en la blockchain, y aunque cada red tiene su "idioma" (XDR en Stellar, SCALE en Polkadot, Borsh en Solana), todas coinciden en algo: el binario es el rey. Para que una red sea global, no podemos permitirnos el lujo de enviar texto pesado. Lo que necesitamos es enviar bytes puros, rápidos y seguros. Si hablamos de XDR entonces veremos que:

  • Es Binario: No desperdicia ni un solo bit en espacios o comillas.
  • Es Estricto: No hay dudas de si un número es un entero o un decimal. Para un banco, esta precisión es la diferencia entre el éxito y un error millonario.

Cada blockchain usará el "idioma" que mejor caracteristicas tenga para su propósito.

4. El Motor: Wasm y Soroban

Cuando envías esa transacción, el código que la procesa es un binario Wasm. ¿Por qué es la clave?

  • Portabilidad: Corre igual en Singapur o en Buenos Aires.
  • Aislamiento: Tu código corre en un "sandbox". Si algo falla, no rompe la blockchain entera.
  • Velocidad: Ejecución casi nativa. Finanzas en segundos, no en días.

5. El Destino: El Ledger y el "Deserialize"

Una vez que los bytes llegan al nodo, ocurre el proceso inverso. El nodo recibe el paquete en XDR, y como conoce la estructura, los "deserializa" (es decir, los analiza y desempaqueta). Si todo es correcto, se escriben en el Ledger. Lo que empezó como un simple struct de Rust ahora es un registro inmutable.


Resumen

  • Rust: Seguridad del dato.
  • Serde: La herramienta de empaque.
  • XDR: El idioma eficiente de Stellar.
  • Wasm: El motor que procesa todo sin errores.