Source Code

;; SatGuard Treasury
(define-constant err-owner (err u800))
(define-constant err-amt (err u801))
(define-constant err-bal (err u802))
(define-data-var admin principal tx-sender)
(define-data-var balance uint u0)
(define-map deposits {who: principal} {total: uint,last: uint})
(define-read-only (get-balance) (var-get balance))
(define-read-only (get-deposits (who principal)) (default-to {total: u0,last: u0} (map-get? deposits {who: who})))
(define-public (deposit (amt uint))
  (let ((ex (get total (get-deposits tx-sender))))
    (asserts! (> amt u0) err-amt)
    (map-set deposits {who: tx-sender} {total: (+ ex amt),last: block-height})
    (var-set balance (+ (var-get balance) amt))
    (print {e: "treasury-deposit",who: tx-sender,amt: amt})
    (ok true)))
(define-public (withdraw-treasury (amt uint) (to principal))
  (begin
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (asserts! (> amt u0) err-amt)
    (asserts! (<= amt (var-get balance)) err-bal)
    (var-set balance (- (var-get balance) amt))
    (print {e: "treasury-withdraw",to: to,amt: amt})
    (ok true)))

Functions (4)

FunctionAccessArgs
get-balanceread-only
get-depositsread-onlywho: principal
depositpublicamt: uint
withdraw-treasurypublicamt: uint, to: principal