Source Code

;; SatGuard TVL Tracker
(define-constant err-owner (err u1030))
(define-data-var admin principal tx-sender)
(define-data-var current-tvl uint u0)
(define-data-var h-nonce uint u0)
(define-map tvl-history {idx: uint} {tvl: uint,pools: uint,bh: uint})
(define-read-only (get-tvl) (var-get current-tvl))
(define-read-only (get-tvl-entry (idx uint)) (map-get? tvl-history {idx: idx}))
(define-read-only (get-history-count) (var-get h-nonce))
(define-public (update-tvl (tvl uint) (pools uint))
  (let ((nid (+ (var-get h-nonce) u1)))
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (var-set current-tvl tvl)
    (map-set tvl-history {idx: nid} {tvl: tvl,pools: pools,bh: block-height})
    (var-set h-nonce nid)
    (print {e: "tvl-updated",tvl: tvl,pools: pools})
    (ok nid)))
(define-public (add-to-tvl (amt uint))
  (begin
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (var-set current-tvl (+ (var-get current-tvl) amt))
    (print {e: "tvl-increased",amt: amt,new-tvl: (var-get current-tvl)})
    (ok true)))
(define-public (sub-from-tvl (amt uint))
  (begin
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (var-set current-tvl (if (>= (var-get current-tvl) amt) (- (var-get current-tvl) amt) u0))
    (print {e: "tvl-decreased",amt: amt,new-tvl: (var-get current-tvl)})
    (ok true)))

Functions (6)

FunctionAccessArgs
get-tvlread-only
get-tvl-entryread-onlyidx: uint
get-history-countread-only
update-tvlpublictvl: uint, pools: uint
add-to-tvlpublicamt: uint
sub-from-tvlpublicamt: uint