WEB3DEV Español

Cover image for ¿Qué es el Plugin Solana Geyser?
Hector
Hector

Posted on • Updated on

¿Qué es el Plugin Solana Geyser?

Descubre el aprovisionamiento disponible para mantener un rendimiento alto en los Validadores de Solana

Este artículo es una traducción de Alchemy, hecha por Héctor Botero. Puedes encontrar el artículo original aquí.
Sería genial escucharte en nuestro Discord, puedes contarnos tus ideas, comentarios, sugerencias y dejarnos saber lo que necesitas.
Si prefieres puedes escribirnos a @web3dev_eshttps://twitter.com/web3dev_es en Twitter.

El Plugin Geyser de Solana ayuda a reducir la dependencia en los nodos validadores. Este artículo explicará qué es el Plugin Geyser de Solana, cómo funciona y cómo configurar un servidor PostgeSQL para ser usado en el interfaz del Plugin Geyser.

¿Qué es el Plugin Solana Geyser?

Solana desarrolló un mecanismo llamado Solana Geyser Plugin para enrutar los pedidos RPC a otra localización de la memoria y reducir la dependencia de los nodos validadores. La Llamada de Procedimiento Remoto (Remote Procedure Call, RPC) permite a los usuarios conectarse, leer y escribir información en los nodos de Solana en una red. Los proveedores de servicio RPC pueden ser inundados con pedido cuando la red de Solana experimenta un alto tráfico. Este tráfico inusual puede causar que los validadores de Solana queden detrás del nodo líder.

¿Cómo ayuda el Plugin Solana Geyser con las fuentes de datos externas?

El Plugin Solana Geyser permite a los desarrolladores acceder algunas formas de datos sin solicitarlos en la cadera. Usando Kafka, postgreSQL y otras formas posibles de almacenar datos, los desarrolladores no necesitan usar los recursos RPC para acciones como obtener cuentas, bloques y ranuras. Para interactuar con el Plugin Solana Geyser, los desarrolladores necesitan usar cajas.

¿Qué son las cajas en el Plugin Solana Geyser?

El Plugin Geiser de Solana está hecho de cajas las cuales son una unidad de compilación en Rust, que típicamente se convierte en una biblioteca o binario cuando es compilado. Las cajas son sinónimos a los paquetes en otros idiomas de programación. Pero en Rust, un paquete es una combinación de una o más cajas. Las cajas están hechas de unidades de compilación.

¿Qué son las unidades de compilación?

Las unidades de compilación son piezas del código fuente de un programa que, pueden ser compilados independientemente o separadamente. Ya que Rust en un lenguaje de programación para propósitos generales, soporta programación concurrente, funcional, imperativa y orientada a los objetivos. Rust usa declaraciones que cambian el estado de un programa ya que cada una de las declaraciones son ejecutadas por turnos. Este acercamiento permite a los programas, que son escritos con Rust, que sean compuestos por unidades de compilación.

¿Qué son las interfaces en el Plugin Geyser de Solana?

La interfaz de un plugin se define como la caja que es usada. Por ejemplo, la interfaz del Plugin Geyser de Solana es especificada por su rasgo GeyserPlugin. Permitiendo el flujo de la comunicación, el GeyserPlugin puede transmitir la cuenta y detalles de transacciones.

Usos comunes del Plugin Solana Geyser

Algunos de los casos de usos más prácticos para la interfaz del Plugin Geyser de Solana incluyen: recibir notificaciones de las actualizaciones de cuentas, cambios de ranuras y la notificación de transacciones.

1. Actualización de la cuenta

El siguiente método es usado para notificar una actualización de una cuenta:

   fn update_account(
        &mut self,
        account: ReplicaAccountInfoVersions,
        slot: u64,
        is_startup: bool,
    ) -> Result<()>
Enter fullscreen mode Exit fullscreen mode

La estructura ReplicaAccountInfoVersions contiene los metadatos y los datos de la cuenta que están siendo transmitidos.

Cuando el is_startup es verdadero, indica que la cuenta está siendo cargada desde los snapshots cuando el nodo validador arranca. Cuando is_startup es falso, la cuenta es actualizada cuando se procesa una transacción.

Invoca esta función luego que todas las cuentas han sido alertadas como recuperaciones de validación de los detalles de la cuenta desde los snapshots.

fn notify_end_of_startup(&mut self) -> Result<()>
Enter fullscreen mode Exit fullscreen mode

La persistencia de datos externos es mantenido garantizando que el proceso se ejecute asincrónicamente. Esto hace que el proceso de la transacción trabaje rápido y en paralelo cuando update_account sea invocado.

2. Cambio de ranuras

El siguiente método es usado para notificar los cambios de estado de las ranuras:

fn update_slot_status(
        &mut self,
        slot: u64,
        parent: Option,
        status: SlotStatus,
    ) -> Result<()>
Enter fullscreen mode Exit fullscreen mode

En el caso de que suceda un error mientras se preserven los datos, el plugin puede decidir abortar el validador. Los datos permanecen consistentes y, una vez que el validador lo reinicie, todos los datos de la cuenta son retransmitidos.

3. Notificación de las Transacciones

El siguiente método es usado para la notificación de las transacciones:

fn notify_transaction(
        &mut self,
        transaction: ReplicaTransactionInfoVersions,
        slot: u64,
    ) -> Result<()>
Enter fullscreen mode Exit fullscreen mode

Cómo configurar una base de datos PostgreSQL para el Plugin Geyser de Solana

El plugin PostgreSQL es usado para almacenar datos de la cuenta en una base de datos PostgreSQL. Para configurar tus archivos adecuadamente, usa la guía de configuración en la página de documentación oficial de Solana y, sigue estos pasos para configurar la base datos: instala un servidor PostgreSQL, crea una instancia de base de datos y crea un esquema de objetos.

1. Instala el servidor PostgreSQL

Sigue las instrucciones para instalar el servidor PostgreSQL en tu máquina. Para un mejor desempeño en tu nodo validador, es altamente recomendable que ejecutes el servidor de la base de datos en un nodo que sea distinto al del validador.

2. Crea la instancia la base de datos

Luego, comienza el servidor, crea la base de datos, crea un usuario y verifica que todo esté funcionando.

Comienza el servidor:

sudo systemctl start postgresql@14-main
Enter fullscreen mode Exit fullscreen mode

En el ejemplo oficial, la siguiente línea crea una base de datos llamada “solana”:

sudo -u postgres createdb solana -p 5433
Enter fullscreen mode Exit fullscreen mode

Crea la base de datos del usuario:

sudo -u postgres createuser -p 5433 solana
Enter fullscreen mode Exit fullscreen mode

La línea de código anterior creará un usuario llamado “solana”. Verifica que la base de datos esté funcionando adecuadamente:

psql -U solana -p 5433 -h 10.138.0.9 -w -d solana
Enter fullscreen mode Exit fullscreen mode

3. Crea un esquema de objetos

Usa el script create_schema.sql de GitHub, para crear objetos para almacenar cuentas y ranuras.

Ejecuta el script de abajo:

psql -U solana -p 5433 -h 10.138.0.9 -w -d solana -f create_schema.sql
Enter fullscreen mode Exit fullscreen mode

Ahora, ejecuta el validador con este plugin que ha sido cargado en el mismo.

Comienza a usar el Plugin Solana Geyser para Acceder a Datos más rápidamente

Aparte de la inmutabilidad, los datos deberían estar fácilmente listos y accesibles en la blockchain. El Plugin Geyser de Solana hace que esta accesibilidad sea posible y rápida en Solana, mientras que ayuda a los nodos validadores a manejar sus recursos y el tiempo de actividad.

Discussion (0)