Artículo del Blog

Guía de Actualización del Protocolo 18

Autor

Justin Rice

Fecha de publicación

Actualización de protocolo

AMM

Liquidez

El Protocolo 18 introduce cambios significativos
Así que asegúrate de instalar software actualizado, incluyendo los SDKS
Antes del 3 de noviembre de 2021

Durante los últimos meses, ha habido una creciente expectación sobre el lanzamiento del Protocolo 18 de Stellar, que permite la creación de Creadores de Mercado Automáticos (AMMs) en Stellar. En publicaciones de blog anteriores, explicamos cómo los AMMs pueden ayudar a mejorar la liquidez general de la red, hablamos un poco sobre cómo funcionarán en Stellar, y examinamos cómo el ecosistema está colaborando para prepararse para su llegada. Recientemente, también agregamos una entrada de glosario de fondos de liquidez Entrada de glosario a los documentos de Stellar que incluye ejemplos de código e información completa sobre las nuevas operaciones del Protocolo 18. El objetivo de esta publicación de blog es un poco más técnico que cualquiera de esos: es ayudarte, querido negocio o desarrollador que construye en Stellar, a prepararte para la actualización.

El Protocolo 18 introduce cambios significativos, así que si desarrollas en Stellar, necesitas instalar versiones actualizadas de todo el software relacionado con Stellar — incluyendo Stellar Core, Horizon y cualquier SDK de Stellar que uses — antes de la votación de actualización del 3 de noviembre de 2021. Si los validadores votan por aceptar el Protocolo 18 en esa fecha, la actualización entra en vigor inmediatamente, y dado que todo el nuevo software es compatible con el protocolo actual, la mejor acción es actualizar cuanto antes. Hacerlo asegurará que tu integración de Stellar siga funcionando cuando la red avance.

Fechas clave

  • 6 de octubre de 2021, 1500 UTC — Testnet actualizada
  • 3 de noviembre de 2021, 1500 UTC — Votación de actualización de la red pública

Lanzamientos del Protocolo 18

Hemos recopilado una lista de software que requiere actualización a continuación. Por favor, asegúrate de revisar las notas de lanzamiento para instrucciones específicas y detalles relevantes para asegurarte de entender todos los requisitos relevantes.

Infraestructura de Stellar

Los operadores de nodos necesitan instalar la última versión de Stellar Core y Horizon. Para detalles específicos de configuración, consulta las secciones a continuación.

Como mencionamos en un anuncio anterior, si estás instalando infraestructura de Stellar desde paquetes Debian, asegúrate de estar ejecutando Ubuntu 18.04 o 20.04. SDF se compromete a apoyar todas las versiones LTS de Ubuntu para asegurar que nos mantenemos alineados con Ubuntu, lo que debería facilitar la planificación anticipada, y mantener una infraestructura de Stellar segura y estable. Como parte de ese compromiso, ya no construimos paquetes para versiones obsoletas de Ubuntu, como 16.04 (Xenial). Si estás ejecutando una versión no LTS de Ubuntu, por favor calcula un tiempo extra para actualizar tu infraestructura.

SDKs

Para desarrolladores, los enlaces a las versiones más recientes de SDK están aquí. En general, siempre debes instalar la última versión del SDK. Continuaremos actualizando esta lista a medida que salgan nuevas versiones.

Si ejecutas Horizon

Actualiza a Horizon v2.10.0, que tiene soporte completo para el Protocolo 18. Si estás ejecutando una versión pre-v2.9.0 de Horizon cuando la red se actualice, tu instancia de Horizon no podrá ingerir o consultar entradas de operaciones o registros de fondos de liquidez, y se bloqueará cuando encuentre uno.

Actualizar desde una versión <= v2.8.3 desencadenará una reconstrucción del estado, lo que probablemente tomará 10-15 minutos. Durante la reconstrucción, Horizon no ingerirá nuevos registros, por lo que podrías experimentar una breve cantidad de tiempo de inactividad.

Por defecto, v2.10.0 ejecuta un mini-Stellar Core (también conocido como Captive Core) como un subproceso de Horizon, por lo que no necesitas ejecutar un nodo de Stellar Core independiente. Aunque aconsejamos a todos los que ejecutan Horizon desplegar la arquitectura Captive Core, también entendemos que algunas personas aún dependen de la arquitectura heredada y ejecutan Horizon junto con un nodo de Stellar Core independiente. Si ese es tu caso, y te gustaría mantenerlo de esa manera, puedes deshabilitar Captive Core estableciendo la variable de entorno ENABLE_CAPTIVE_CORE_INGESTION="false".

Los operadores de Horizon también necesitan actualizar Stellar Core a v18.0.3. Eso es cierto incluso si ejecutas la arquitectura Captive Core ya que Horizon utiliza cualquier paquete de Stellar Core que tengas instalado.

Si ejecutas Stellar Core

Actualiza a Stellar Core v18.1.0. Si tu nodo está ejecutando una versión pre-18 de Stellar Core cuando la red se actualice, lanzará un error y perderá sincronización. Hemos descubierto y parcheado algunos problemas en las últimas semanas, así que por favor revisa la página de lanzamiento y asegúrate de actualizar a la última versión de Stellar Core.

Si tu nodo es un validador, puedes armarlo para votar por la actualización con el siguiente comando: upgrades?mode=set&upgradetime=2021-11-03T15:00:00Z&protocolversion=18

Para más información, consulta el documento Actualizando la Red. Para mantenerte al tanto mientras coordinamos esa votación, únete al canal stellar.public #validators en Keybase.

Si tienes una integración personalizada de Stellar

Si estás usando Stellar pero no estás utilizando un SDK de Stellar, probablemente necesitarás actualizar tu código manualmente. Puede que quieras revisar el problema del SDK de Java que describe los cambios necesarios para adaptarse al Protocolo 18.

Además, por favor contáctame y házmelo saber todo lo que puedas sobre tu integración personalizada. Me encantaría saber más para que hagamos un mejor trabajo informando, asistiendo y acomodando a personas como tú: [email protected].

Cambios Importantes

El Protocolo 18 introduce cambios significativos, y el objetivo de esta sección es delinear esos cambios para ayudar a los desarrolladores a entender qué necesitan hacer para prepararse para la actualización del 3 de noviembre. Generalmente, la acción más importante a tomar: instalar versiones actualizadas de cualquier y todos los SDKs de Stellar que uses (junto con Stellar Core y Horizon si ejecutas un nodo). En muchos casos, actualizar tu SDK es suficiente para una transición suave al Protocolo 18, pero si tienes preguntas, encuentras problemas, o quieres un mejor entendimiento de lo que está pasando bajo el capó, ¡sigue leyendo!

Dos recursos útiles para inventariar los cambios significativos:

  1. La especificación de la API de Fondo de Liquidez de Horizon, que compartimos en agosto, incluye una etiqueta de "CAMBIO SIGNIFICATIVO EN LA API" para cada cambio significativo, y resalta el cambio relevante en la respuesta JSON.
  2. El SDK de Javascript v9.0.0-beta notas de lanzamiento tiene una sección de "Cambios Importantes", que incluye una lista con viñetas que describe brevemente cada cambio.

Puedes consultar esos recursos para entender qué ha cambiado en la API de Horizon, y ver cómo se reflejan esos cambios en los SDKs de Stellar. Si los revisas cuidadosamente, deberías poder entender lo que viene. Para facilitar las cosas, también resumiremos los cambios en este documento. A un nivel alto:

  • El Protocolo 18 introduce fondos de liquidez. Estos son nuevos objetos con nuevos elementos asociados, y aparecen en algunos lugares en las respuestas de la API. También hay dos nuevas operaciones: una que permite a los usuarios depositar en fondos de liquidez; otra que les permite retirarse de los fondos de liquidez.
  • El Protocolo 18 aumenta la precisión del precio de comercio. Esto conduce a cambios de tipo, y puede causar posibles problemas de precisión aguas abajo.
  • El Protocolo 18 cambia el XDR. Si actualizas tu SDK, deberías estar bien, pero las versiones anteriores de los SDKs no analizarán el XDR que contenga elementos cambiados. Si usas un analizador XDR personalizado, necesitarás actualizarlo para manejar los cambios de XDR.

Específicamente, el Protocolo 18 introduce los siguientes cambios:

Nuevo tipo de activo

En el Protocolo 18, tipo_de_activo puede ser participaciones_en_fondo_de_liquidez. Anteriormente el campo_tipo_de_activo estaba restringido a: nativo, crédito_alphanum4, o crédito_alphanum12. Los clientes codificados para esperar solo tres tipos experimentarán problemas.

Nuevas respuestas de línea de confianza

Los clientes que rastrean líneas de confianza necesitan manejar nuevas posibles respuestas. Específicamente:

  • Cambio de confianza en tipo participaciones_en_fondo_de_liquidez tiene una forma de respuesta diferente.
  • Efectos de línea de confianza en tipo participaciones_en_fondo_de_liquidez faltan campos.
  • Patrocinio de una línea de confianza de participaciones en el fondo tiene una forma de respuesta diferente.

Nuevo tipo de saldo

Las cuentas ahora pueden tener saldos de fondo de liquidez, que son diferentes de los saldos de activos. Los desarrolladores que iteran sobre saldos o presentan saldos en la UI necesitan tener en cuenta los nuevos tipos, o cuando un saldo de fondo de liquidez aparece por primera vez en una cuenta de usuario que analizan, pueden tener problemas (por ejemplo, campos faltantes).

Cambio de tipo de precio de comercio en libro de órdenes + nuevo comercio de fondo de liquidez

El Protocolo 18 introduce precios de fondo de liquidez, que tienen tipo int64. Horizon representa estos nuevos precios como cadenas, y cambia los precios de comercio en el libro de órdenes a cadenas también, para ser consistente con los fondos de liquidez. Además, el campo obsoleto id_de_oferta ha sido eliminado.

El Protocolo 18 también introduce un nuevo tipo de comercio de fondo de liquidez. Se diferencia de los comercios en el libro de órdenes en que:

  • Faltan los ids de oferta
  • Solo hay una cuenta presente; el otro lado del comercio es un fondo de liquidez

Estos cambios de precio tienen implicaciones de precisión: los cálculos de clientes pueden continuar "funcionando" incluso si todavía almacenan internamente los precios de comercio como int32s, pero i) podrían perder precisión (probablemente solo unos pocos stroops aquí y allá) o ii) algún precio grande fuera de int32 podría aparecer y causar desbordamiento. Si tu producto o servicio utiliza cálculos de precios, asegúrate de evaluar la precisión existente.

Cambio en agregaciones de comercio

El Protocolo 18 representa las agregaciones de comercio como cadenas en Horizon por consistencia con los fondos de liquidez, una consecuencia del cambio de tipo de comercio anterior.

Cambios en XDR

Los clientes necesitan un analizador actualizado para manejar los cambios de XDR. Si desarrollas usando un SDK de Stellar, instalar una versión actualizada del SDK debería ser suficiente. Si tienes un analizador XDR personalizado, asegúrate de tener en cuenta que:

  • El tipo de resultado de pago de ruta (estricto) cambió (ClaimOfferAtom -> ClaimAtom)
  • El tipo de resultado de gestión de compra/venta cambió (ClaimOfferAtom -> ClaimAtom)
  • Los detalles del activo en ChangeTrustOperationResponse cambiaron (puede ser un activo de fondo de liquidez)