Source Code

;; SatGuard Price Feed
(define-constant err-unauth (err u610))
(define-constant err-amt (err u611))
(define-map prices {asset: (string-ascii 10)} {price: uint,ts: uint,by: principal})
(define-read-only (get-price (asset (string-ascii 10))) (map-get? prices {asset: asset}))
(define-read-only (get-last-update (asset (string-ascii 10)))
  (match (map-get? prices {asset: asset})
    p (ok (get ts p))
    (err u610)))
(define-public (submit-price (asset (string-ascii 10)) (price uint))
  (begin
    (asserts! (contract-call? .sg-oracle-registry is-oracle tx-sender) err-unauth)
    (asserts! (> price u0) err-amt)
    (map-set prices {asset: asset} {price: price,ts: block-height,by: tx-sender})
    (print {e: "price-submitted",asset: asset,price: price,by: tx-sender})
    (ok true)))
(define-read-only (get-btc-price) (get-price "BTC"))
(define-read-only (get-stx-price) (get-price "STX"))

Functions (5)

FunctionAccessArgs
get-priceread-onlyasset: (string-ascii 10
get-last-updateread-onlyasset: (string-ascii 10
submit-pricepublicasset: (string-ascii 10
get-btc-priceread-only
get-stx-priceread-only