Saltearse al contenido

Usa Oráculos en tus Aplicaciones Aptos

Esta guía de referencia presenta varios Oráculos que puedes utilizar al construir en Aptos. Los oráculos suministran datos offchain a la blockchain, permitiendo que los contratos inteligentes accedan a una amplia gama de información.

La Pyth Network es una de las redes de oráculos de primera parte más grandes, entregando datos en tiempo real a través de una gran cantidad de cadenas.

La red está compuesta por algunos de los mayores exchanges, creadores de mercado y proveedores de servicios financieros del mundo. Estos publican datos propietarios on-chain para su agregación y distribución a aplicaciones de contratos inteligentes.

Cómo Usar Datos en Tiempo Real de Pyth en Contratos Aptos

Sección titulada «Cómo Usar Datos en Tiempo Real de Pyth en Contratos Aptos»

Esta guía explica cómo usar datos en tiempo real de Pyth en aplicaciones Aptos.

Agrega el contrato de Pyth a las dependencias de tu proyecto en el archivo Move.toml:

[dependencies]
Pyth = { git = "https://github.com/pyth-network/pyth-crosschain.git", subdir = "target_chains/aptos/contracts", rev = "main" }

Las direcciones nombradas de pyth, wormhole y deployers deben definirse en tiempo de compilación. Estas direcciones se usan para interactuar con el contrato de Pyth en Aptos.

[addresses]
pyth = "0x7e783b349d3e89cf5931af376ebeadbfab855b3fa239b7ada8f5a92fbea6b387"
deployer = "0xb31e712b26fd295357355f6845e77c888298636609e93bc9b05f0f604049f434"
wormhole = "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625"

Consulta Direcciones de Contrato de Aptos para la lista completa de direcciones de contrato en diferentes redes de Aptos.

El fragmento de código a continuación proporciona un módulo de ejemplo que obtiene el precio BTC/USD de los feeds de precios de Pyth:

module example::example {
use pyth::pyth;
use pyth::price::Price;
use pyth::price_identifier;
use aptos_framework::coin;
// Agrega el argumento pyth_price_update a cualquier método en tu contrato que necesite leer el precio de Pyth.
// Consulta https://docs.pyth.network/price-feeds/fetch-price-updates para más información sobre cómo obtener el pyth_price_update.
public fun get_btc_usd_price(user: &signer, pyth_price_update: vector<vector<u8>>): Price {
// Primero actualiza los feeds de precios de Pyth
let coins = coin::withdraw(user, pyth::get_update_fee(&pyth_price_update));
pyth::update_price_feeds(pyth_price_update, coins);
// Lee el precio actual de un feed de precios.
// Cada feed de precios (ej., BTC/USD) se identifica por un ID de feed de precios.
// La lista completa de IDs de feed está disponible en https://pyth.network/developers/price-feed-ids
// Nota: Aptos usa el ID de feed de precios de Pyth sin el prefijo `0x`.
let btc_price_identifier = x"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43";
let btc_usd_price_id = price_identifier::from_byte_vec(btc_price_identifier);
pyth::get_price(btc_usd_price_id)
}
}

El fragmento de código anterior hace las siguientes cosas:

  1. Llama pyth::get_update_fee para obtener la tarifa requerida para actualizar los feeds de precios de Pyth.
  2. Llama pyth::update_price_feeds y pasa pyth_price_update para actualizar los feeds de precios de Pyth.
  3. Llama pyth::get_price para leer el precio actual, proporcionando el ID de feed de precios que deseas leer.

Puedes encontrar estos recursos adicionales útiles para desarrollar tu aplicación Aptos.

Los feeds de precios listados en la tabla a continuación están actualmente patrocinados en Aptos mainnet.

Parámetros de Actualización: 1 segundo de heartbeat o 0.5% de desviación de precio

NombreID de Feed de Precios
APT/USD03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5
BTC/USDe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43
ETH/USDff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace
SOL/USDef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d
USDC/USDeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a
USDT/USD2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b
CAKE/USD2356af9529a1064d41e32d617e2ce1dca5733afa901daba9e2b68dee5d53ecf9
SUI/USD23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744
CETUS/USDe5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef
BNB/USD2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f
WBTC/USDc9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33
THL/USD74e3fbb0d33e0ed8c0078b56134dcebdae38852f0858a8ea4de4c5ea7474bd42
USDY/USDe393449f6aff8a4b6d3e1165a7c9ebec103685f3b41e60db4277b5b6d10e7326
WETH/USD9d4294bbcd1174d6f2003ec365831e64cc31d9f6f15a2b85399db8d5000960f6
THAPT/USDb29276972267db5d64ae718fb7f107ad9e72a79cabf9992f0e9bc75ad451a7f6
EZETH/USD06c217a791f5c4f988b36629af4cb88fad827b2485400a358f3b02886b54de92
WEETH/USD9ee4e7c60b940440a261eb54b6d8149c23b580ed7da3139f7f08f4ea29dad395
USDM/USDa6a0dfa49b6b3a93510658245618099f5e842514970f596cf64fad9e0d658193
STONE/USD4dcc2fb96fb89a802ef9712f6bd2246d3607cf95ca5540cb24490d37003f8c46

Para más detalles sobre feeds patrocinados, consulta aquí

La referencia de API de Aptos te permite explorar interactivamente la API completa del contrato de Pyth.