Source Code

;; SatGuard Reserve Fund - emergency reserves
(define-constant err-owner (err u830))
(define-constant err-amt (err u831))
(define-constant err-bal (err u832))
(define-data-var admin principal tx-sender)
(define-data-var reserve uint u0)
(define-data-var min-reserve uint u1000000) ;; minimum 1 sBTC
(define-read-only (get-reserve) (var-get reserve))
(define-read-only (get-min-reserve) (var-get min-reserve))
(define-public (add-reserve (amt uint))
  (begin
    (asserts! (> amt u0) err-amt)
    (var-set reserve (+ (var-get reserve) amt))
    (print {e: "reserve-added",who: tx-sender,amt: amt})
    (ok true)))
(define-public (use-reserve (amt uint) (reason (string-ascii 50)))
  (begin
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (asserts! (> amt u0) err-amt)
    (asserts! (<= amt (var-get reserve)) err-bal)
    (var-set reserve (- (var-get reserve) amt))
    (print {e: "reserve-used",amt: amt,reason: reason})
    (ok true)))
(define-public (set-min-reserve (min uint))
  (begin
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (var-set min-reserve min)
    (print {e: "min-reserve-set",min: min})
    (ok true)))
(define-read-only (is-healthy)
  (ok (>= (var-get reserve) (var-get min-reserve))))

Functions (6)

FunctionAccessArgs
get-reserveread-only
get-min-reserveread-only
add-reservepublicamt: uint
use-reservepublicamt: uint, reason: (string-ascii 50
set-min-reservepublicmin: uint
is-healthyread-only