¿Que es Apricot y que cambios traerá a la Blockchain de Avalanche?

Carlos Nones
Avalanche en español
7 min readFeb 16, 2021

Apricot es una nueva actualización que llegará hacia la Blockchain de Avalanche, la cual implementa nuevas características que no pueden ser encontradas en ninguna otra cadena.

Principalmente fue planeada para introducirse a principios de Diciembre del pasado año, pero solo se introdujo Apricot Fase Cero (Apricot Phase 0), el cual es una versión previa a la actualización de Apricot, la cual debe ser introducida antes de la próxima liberación de Tokens la cual será en Marzo de este año. Originalmente esta actualización como se mencionaba anteriormente estaba prevista para diciembre pero hubo algunos bugs que están actualmente siendo corregidos por el equipo de desarrolladores.

Los validadores que estuviesen validando actualmente en la Mainnet tuvieron que aplicar la actualización de Apricot Fase Cero el Lunes, 7 de Diciembre de 2020 a las 11 p.m. UTC (6 p.m. EST).
De no ser así sus nodos seguirían conectados pero no podrían continuar recibiendo transacciones para validar.

Con el lanzamiento inicial de Avalanche se pudo hacer frente ante el pensamiento popular de que las Blockchains son lentas y no escalables, y que cualquier intento de mejora de alguna de estas dos cosas podría implicar un compromiso en la descentralización, pues no con Avalanche!

Avalanche dio un paso en frente para demostrar todo lo contrario, que una Blockchain puede alcanzar velocidades jamás vistas en otras Blockchains (+4700 TPS), con cada una de sus transacciones con una finalidad de menos de un segundo, la cual es mucho mayor a las encontradas en otras Blockchains y servicios de pago.

Además también otra de las cosas que comúnmente es pensada acerca de las Blockchains es que mientras pasa el tiempo la Blockchain se realentiza y se incrementa el uso de recursos y los conjuntos de datos almacenados en ella se incrementan.

Para ello Apricot tiene como recurso el “Pruning Verificable” (o poda verificable) el cual más adelante veremos en detalle.

Con la actualización Apricot Fase Cero (Apricot Phase 0) se implementaron dos cosas, las cuales fueron:

Los preparativos generales para la próxima actualización de Apricot, llamada “Actualización Fase Cero de Apricot”. Y se solucionó un problema que impedía que las salidas del stake bloqueado se desbloquearan después de su tiempo de bloqueo.

Con el tiempo se fueron lanzando varios parches, como por ejemplo:

* A mediados de el mes de Diciembre se incluyó el primer parche de Apricot Fase Cero (Apricot Phase Zero — Patch 1), el cual es opcional pero recomendado. El cual contiene varias mejoras de rendimiento, corrección de algunos bugs menores y preparaciones para las siguientes actualizaciones de Apricot.

Notas de versión:*Se ha corregido un error de caída del nodo cuando los usuarios desactivan la API de salud.
*Se ha corregido un error en el seguimiento del tiempo de actividad que podía sobreinformar del tiempo de actividad de un nodo.
*Se ha introducido un paquete semanticdb que se utilizará durante una futura migración de la base de datos.
*Se ha añadido el seguimiento de la Epoch al contexto de la cadena.
*Se han mejorado algunos de los mensajes de error devueltos durante la validación de transacciones.
*Reducción de la presión de GC en la DB de versiones.

* A principios de el mes de Enero se liberó el segundo parche de Apricot Fase Cero (Apricot Phase Zero — Patch 2), el cual es opcional pero recomendado. Este parche incluye mejoras generales y mejoras en el rendimiento de el nodo.

Notas de versión:*Corrección de la caché de procesamiento de bootstrapping para reducir los trayectos duplicados cuando se realiza el bootstrapping de Avalanche.
*Optimización de la verificación de la P-Chain durante el bootstrapping.
*Se ha corregido el cálculo de la lista de referencia máxima para utilizar los valores de entrada adecuados.
*Se han eliminado las ejecuciones extra del linter de CI.
*Se ha añadido altura a la interfaz snowman.Block.

* Casi a finales de el mes de Enero se incluyó el parche número tres de Apricot Fase Cero (Apricot Phase Zero — Patch 3), el cual es opcional pero recomendado. Contiene algunas corecciones de bugs menores relacionadas a las API’s.

Notas de versión:*Se ha solucionado la caída de la llamada al intentar filtrar los registros de la C-Chain.
*Se ha corregido el cliente de la C-Chain para que llame a la API multi-moneda adecuada.
*Añadido getAtomicUTXOs a los clientes de la avm y platformvm API.

* A principios de el mes de Febrero un nuevo parche fué liberado, el parche número cuatro de Apricot Fase Cero (Apricot Phase Zero — Patch 4), el cual es opcional pero recomendado. Este parche contiene algunas mejoras en la Interfaz de Linea de Comandos, algunas correcciones de bugs de las API, mejoras de estabilidad y mejoras de rendimiento.

Notas de versión:*Se ha solucionado un problema por el que los índices de los bloques de la C-Chain podían asignarse a bloques no aceptados a una altura determinada.
*Se ha corregido el fallo de la VM cuando la RPCChainVM experimentaba una alta carga de la API.
*Se ha corregido el burbujeo de votos optimista en el motor de Avalanche para que los votos pasen correctamente por los vértices de procesamiento.
*Se ha añadido el campo IncludePartial a los métodos de la API GetBalance y GetAllBalances del Motor de Avalanche. Esto cambia el comportamiento por defecto para devolver sólo los saldos de los activos gastables y de propiedad única.
*Se ha añadido la posibilidad de especificar configuraciones de génesis personalizadas para los ID de red personalizados.
*Se ha añadido almacenamiento en caché adicional a la RPCChainVM.

Puedes ver el historial de parches liberados en nuestro repositorio de Github:
https://github.com/ava-labs/avalanchego/releases/

Si quieres informarte sobre como actualizar tu nodo con las últimas actualizaciones y parches, puedes visitar: https://docs.avax.network/build/tutorials/nodes-and-staking/upgrade-your-avalanchego-node

¿Que es el Pruning?

El Pruning (o poda en español) es una innovación en la Blockchain de Avalanche, la cual hará que los nodos puedan compactar seguramente transacciones pasadas.

Para hacer un buen ejemplo de esto podemos tomar la Blockchain de Bitcoin como referencia, la cual usa también un modelo de UTXO’s (o Salidas Transferibles no Gastadas). Podemos leer una pequeña explicación de Emin Gün Sirer sobre esto hace 2 años a través de Telegram:

- Una transacción de AVAX tiene aproximadamente el mismo tamaño que una transacción de BTC.
- Pero un nodo AVAX puede hacer “Pruning” a las transacciones históricas gastadas, para contar únicamente el conjunto UTXO y el “live edge”, el cual es el conjunto de transacciones enviadas pero no confirmadas.
- Eso se traduce en O (tamaño del conjunto UTXO).
- Estoy en un avión ahora mismo, así que hacer los cálculos de BTC es difícil, pero tal vez alguien pueda aportar que tan grande es el conjunto UTXO de BTC dividido por el tamaño de la Blockchain de BTC.
….
- He buscado los dos números:
- El tamaño de la Blockchain de Bitcoin es >=158GB.
- El conjunto UTXO de Bitcoin, serializado (es decir, el costo total), es de 2,7GB.
- Así que un nodo de AVAX, en este escenario, necesitaría sólo el 1,7% de lao que requiere el almacenamiento de Bitcoin.

Para resumirlo, el consenso de Avalanche en comparación con el consenso Nakamoto, haría posible que se redujera el tamaño de la Blockchain para los nodos de Avalanche al considerar únicamente las UTXO (entradas de las UTXO activas; también llamado conjunto de UTXO) como el tamaño total de la Blockchain.

Estos nodos serán llamados “nodos no archivados” ya que no archivan ninguna salida de transacción histórica. Aun así sería posible ejecutar un nodo donde no se eliminen los datos históricos, pero requerirá manejar más datos para descargar y mantener ese nodo archivado, como por ejemplo los exploradores de bloques de Avalanche.

El Pruning podría considerarse como la actualización más importante de Avalanche para lograr la descentralización y preparar el terreno técnico para la descentralización y uso diario masivo por parte de los usuarios normales.

Algunos de las características clave que podremos encontrar en la actualización de Apricot son:

Activos Congelables:
Este nuevo tipo de activo permite a los creadores y emisores de activos congelar y descongelar activos en la plataforma. Aunque no podemos anticipar todas las formas en que se utilizará esta función, para las organizaciones con casos de uso regulados, está claro que deben asegurarse de que solo los usuarios aprobados puedan acceder a los activos. También será una parte importante de los nuevos activos que están por venir a Avalanche.

Compatibilidad con soporte de activos nativos ERC-20: Esta actualización, la cual implementa una nueva instrucción de la Máquina Virtual de Ethereum (EVM) llamada “callex”, la cual hace posible para la C-Chain de Avalanche transferir activos nativos de Avalanche mientras ejecuta Smart Contracts. Lo cual hace posible que los activos creados en Avalanche puedan ser depositados en contratos “wrapper” ERC20.

Epochs: Los Epochs incorporarán el concepto de tiempo en la X-Chain de Avalanche, esto hará que se puedan hacer posibles nuevas características de nuestra ruta, con una descentralización y velocidades sin precedentes. Estas características incuyen el “State Pruning”, comisiones variables, gobernanza on-chain, y muchas otras más.

Con todas estas nuevas implementaciones podremos tener una mejor visión de la escalabilidad de la plataforma de Avalanche, permitiendo nuevas características como el soporte en ERC-20 en activos creados en Avalanche, la gran escalabilidad y rendimiento de la Blockchain gracias al “Pruning”, comisiones variables, lo que hará que las transacciones siempre sean económicas.

Solo estamos a un paso de todo ello, mientras que se perfecciona esta gran actualización, la cual traerá un montón de mejoras a la Blockchain de Avalanche, se seguirán liberando parches para actualizar nuestros nodos a la última versión posible antes de la gran actualización.

Puedes mantenerte al día sobre el progreso de Apricot en nuestro canales habituales y tener conversaciones con desarrolladores y usuarios en nuestro:

Discord

También puedes informarte sobre las últimas novedades de Apricot en:

Foro de Avalanche
Twitter en Español
Telegram en Español
Reddit
GitHub
Documentación

--

--