Oráculo
Descripción general
Esta guía es solo para nodos validadores.
El Slinky Oracle consta de dos elementos principales:
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.
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.json
el 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-endpoint
bandera al iniciar el sidecar o modificando el oracle.json
componente 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:8080
y, si está activado, el punto final de métricas de Prometheus lo utiliza 0.0.0.0:8002
como 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