Artículo del Blog
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.
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.
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.
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.
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.
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 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].
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:
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:
Específicamente, el Protocolo 18 introduce los siguientes cambios:
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.
Los clientes que rastrean líneas de confianza necesitan manejar nuevas posibles respuestas. Específicamente:
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).
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:
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.
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.
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: