Se despliega un módulo de oráculo para cada tipo de colateral, alimentándolo con los datos de precios para el tipo de colateral correspondiente al Vat
. El módulo de oráculo introduce la lista blanca de direcciones, que les permite emitir actualizaciones de precios off-chain, que luego se introducen en median
antes de ser llevado dentro del OSM
. El *Spot
'ter* luego procederá a leer el OSM
y actuará como un enlace entre los oracles
(oráculos) y dss
.
El Módulo de Oráculo tiene 2 componentes principales que consisten en los contratos Median
y OSM
.
Median
proporciona un precio de referencia confiable para Maker. En resumen, funciona manteniendo una lista blanca de contratos de alimentación de precios que están autorizados de postear actualizaciones de precios. Cada vez que se recibe una nueva lista de precios, se calcula la median de estos y se utiliza para actualizar el valor almacenado. La Median tiene una lógica de permisos que la habilita para agregar y remover direcciones de alimentación de precios de la lista blanca, que se controlan mediante la Gobernanza. La lógica de permisos capacita a la Gobernanza para fijar otros parámetros y controlar el comportamiento de Median (por ejemplo, el parámetro bar
es el número mínimo de precios necesarios para aceptar un nuevo valor de la median).OSM
(nombrado por el acrónimo en inglés "Oracle Security Module", Módulo de Seguridad de Oráculos) asegura que los nuevos valores de precios propagados desde los Oráculos no sean tomados por el sistema hasta que haya pasado un retraso especifico. Los Valores son leídos desde un contrato DSValue designado (o cualquier contrato que implemente las interfaces read()
y peek()
) mediante el método poke()
; los métodos read()
y peek()
darán el valor actual de la fuentes de precios y otros contratos deben estar en la lista blanca para poder llamarlos. Un contrato OMS solo puede leer de una sola fuente de precios, así que en la práctica se debe desplegar un contrato OMS por cada tipo de colateral.poke
para ir y leerlo desde algo que también tiene la misma estructura (el método peek
, en este caso, es la median pero puedes configurarlo para leer desde cualquier cosa que se ajuste a la misma interfaz).