Oráculo

Descripción general

Esta guía es solo para nodos validadores.

El Slinky Oracle consta de dos elementos principales:

  1. Un componente en cadena que recupera datos de precios del sidecar con cada bloque, envía estos precios a la cadena de bloques a través de extensiones de votación y compila los precios de todos los validadores involucrados.

  2. Un proceso paralelo dedicado a sondear información de precios de varios proveedores y entregar estos datos al componente en cadena.

Para obtener información adicional sobre Oracle, consulte el repositorio de Slinky en https://github.com/skip-mev/slinky/ .

Los archivos binarios precompilados estarán disponibles en el futuro. Actualmente, se recomienda a los usuarios que compilen el software necesario a partir del código fuente.

Tutorial

Paso 1: clonar el repositorio

Clona el repositorio furtivo.

Copiar

git clone https://github.com/skip-mev/slinky.git
cd slinky

# checkout proper version
git checkout v0.4.3

Paso 2: ejecutar el sidecar

Configuración de configuración

Para operar el sidecar de Oracle, es esencial tener archivos de configuración válidos tanto para el componente de Oracle como para el componente de mercado. El ejecutable de Oracle reconoce indicadores que especifican cada archivo de configuración. A continuación se muestran las configuraciones predeterminadas recomendadas adecuadas para el entorno Initia Devnet existente.

Componente de Oracle

El componente de Oracle determina con qué frecuencia sondear a los proveedores de precios, el comportamiento de multiplexación de los websockets y más. Skip lo ha probado y es seguro de usar. El componente de Oracle recomendado se puede encontrar en config/core/oracle.jsonel repositorio de Slinky.

Componente de mercado

El componente de mercado determina para qué mercados debería obtener precios el sidecar. Los mercados deseados se almacenarán en la cadena y serán arrastrados por el sidecar. Para configurar correctamente el sidecar, debe apuntar el sidecar al puerto GRPC en un nodo (normalmente el puerto 9090). Esto se puede hacer agregando la --market-map-endpointbandera al iniciar el sidecar o modificando el oracle.jsoncomponente como se muestra a continuación.

// config/core/oracle.json found in the repo.

```json
{
  ...,
    {
      "name": "marketmap_api",
      "api": {
        "enabled": true,
        "timeout": 20000000000,
        "interval": 10000000000,
        "reconnectTimeout": 2000000000,
        "maxQueries": 1,
        "atomic": true,
        "url": "0.0.0.0:9090", // URL that must point to a node GRPC endpoint
        "endpoints": null,
        "batchSize": 0,
        "name": "marketmap_api"
      },
      "type": "market_map_provider"
    }
  ],
  "metrics": {
    "prometheusServerAddress": "0.0.0.0:8002",
    "enabled": true
  },
  "host": "0.0.0.0",
  "port": "8080"
}
```

Arrancar el sidecar

El inicio del proceso sidecar de Oracle se logra ejecutando el binario.

# Build the Slinky binary in the repo.
make build

# Run with the core oracle config from the repo.
./build/slinky --oracle-config-path ./config/core/oracle.json --market-map-endpoint 0.0.0.0:9090

El servidor GRPC funciona con la configuración predeterminada de 0.0.0.0:8080y, si está activado, el punto final de métricas de Prometheus lo utiliza 0.0.0.0:8002como host y puerto predeterminados.

Paso 3: Validar precios

Al iniciar el Oracle, debería observar una recuperación exitosa de los precios de las fuentes del proveedor. Además, tiene la opción de ejecutar el script del cliente de prueba disponible en el repositorio de Slinky mediante el comando make run-oracle-client.

Paso 4: habilite la extensión de votación de Oracle

Para utilizar los datos de Slinky Oracle en el nodo Initia, la configuración de Oracle debe estar habilitada en el config/app.toml archivo.

###############################################################################
###                                  Oracle                                 ###
###############################################################################
[oracle]
# Enabled indicates whether the oracle is enabled.
enabled = "true"

# Oracle Address is the URL of the out of process oracle sidecar. This is used to
# connect to the oracle sidecar when the application boots up. Note that the address
# can be modified at any point, but will only take effect after the application is
# restarted. This can be the address of an oracle container running on the same
# machine or a remote machine.
oracle_address = "127.0.0.1:8080"

# Client Timeout is the time that the client is willing to wait for responses from 
# the oracle before timing out.
client_timeout = "500ms"

# MetricsEnabled determines whether oracle metrics are enabled. Specifically
# this enables instrumentation of the oracle client and the interaction between
# the oracle and the app.
metrics_enabled = "false"

Last updated