Prechádzať zdrojové kódy

(feat) add get_price view functions to aptos contract (#1861)

* (feat) add get_price view functions to aptos contract

* trigger ci

---------

Co-authored-by: Ali Behjati <bahjatia@gmail.com>
0xbe1 11 mesiacov pred
rodič
commit
868e7fe765

+ 20 - 0
target_chains/aptos/contracts/sources/pyth.move

@@ -424,6 +424,14 @@ module pyth::pyth {
         get_price_no_older_than(price_identifier, state::get_stale_price_threshold_secs())
     }
 
+    #[view]
+    /// A view function version of get_price(...) that's available in offchain programming environments
+    /// including aptos fullnode api, aptos cli, and aptos ts sdk.
+    public fun get_price_by_feed_id(feed_id: vector<u8>): Price {
+        let price_identifier = price_identifier::from_byte_vec(feed_id);
+        get_price(price_identifier)
+    }
+
     /// Get the latest available price cached for the given price identifier, if that price is
     /// no older than the given age.
     public fun get_price_no_older_than(price_identifier: PriceIdentifier, max_age_secs: u64): Price {
@@ -433,6 +441,12 @@ module pyth::pyth {
         price
     }
 
+    #[view]
+    public fun get_price_no_older_than_by_feed_id(feed_id: vector<u8>, max_age_secs: u64): Price {
+        let price_identifier = price_identifier::from_byte_vec(feed_id);
+        get_price_no_older_than(price_identifier, max_age_secs)
+    }
+
     /// Get the latest available price cached for the given price identifier.
     ///
     /// WARNING: the returned price can be from arbitrarily far in the past.
@@ -446,6 +460,12 @@ module pyth::pyth {
             price_info::get_price_feed(&state::get_latest_price_info(price_identifier)))
     }
 
+    #[view]
+    public fun get_price_unsafe_by_feed_id(feed_id: vector<u8>): Price {
+        let price_identifier = price_identifier::from_byte_vec(feed_id);
+        get_price_unsafe(price_identifier)
+    }
+
     fun abs_diff(x: u64, y: u64): u64 {
         if (x > y) {
             return x - y