| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- use fuels::{
- prelude::{Address, Provider, WalletUnlocked},
- types::Bits256,
- };
- use pyth_sdk::{constants::BETA_5_URL, pyth_utils::guardian_set_upgrade_4_vaa};
- use pyth_sdk::{
- constants::{
- BTC_USD_PRICE_FEED_ID, DEFAULT_VALID_TIME_PERIOD, ETH_USD_PRICE_FEED_ID,
- USDC_USD_PRICE_FEED_ID,
- },
- pyth_utils::{update_data_bytes, Pyth},
- };
- #[tokio::main]
- async fn main() {
- dotenv::dotenv().ok();
- println!("🔮 Testnet Pyth deploy action");
- let provider = Provider::connect(BETA_5_URL).await.unwrap();
- let admin_pk = std::env::var("ADMIN").expect("ADMIN environment variable missing");
- let admin =
- WalletUnlocked::new_from_private_key(admin_pk.parse().unwrap(), Some(provider.clone()));
- println!("Admin address = 0x{}\n", Address::from(admin.address()));
- let pyth = Pyth::deploy(admin).await.unwrap();
- let _ = pyth
- .constructor(DEFAULT_VALID_TIME_PERIOD, guardian_set_upgrade_4_vaa())
- .await
- .unwrap();
- //check GS
- let gsi = pyth.current_guardian_set_index().await.unwrap().value;
- println!("gsi: {:?}", gsi);
- let update_data = update_data_bytes(None).await.unwrap();
- let fee = pyth.update_fee(&update_data).await.unwrap().value;
- //print fee
- println!("fee: {:?}", fee);
- let btc_price_feed = Bits256::from_hex_str(BTC_USD_PRICE_FEED_ID).unwrap();
- let eth_price_feed = Bits256::from_hex_str(ETH_USD_PRICE_FEED_ID).unwrap();
- let usdc_price_feed = Bits256::from_hex_str(USDC_USD_PRICE_FEED_ID).unwrap();
- let _ = pyth.update_price_feeds(fee, &update_data).await.unwrap();
- println!("Pyth address = 0x{:?}\n", pyth.instance.contract_id().hash);
- println!(
- "BTC price {:?}",
- pyth.price(btc_price_feed).await.unwrap().value
- );
- println!(
- "ETH price {:?}",
- pyth.price(eth_price_feed).await.unwrap().value
- );
- println!(
- "USDC price {:?}",
- pyth.price(usdc_price_feed).await.unwrap().value
- );
- }
|