Source Code

;; Treasury Contract

(define-constant contract-owner tx-sender)
(define-constant err-owner-only (err u100))
(define-constant err-insufficient-funds (err u101))

(define-data-var total-balance uint u0)

(define-read-only (get-balance)
  (var-get total-balance)
)

(define-public (deposit (amount uint))
  (begin
    (try! (stx-transfer? amount tx-sender (as-contract tx-sender)))
    (var-set total-balance (+ (var-get total-balance) amount))
    (ok amount)
  )
)

(define-public (withdraw (amount uint) (recipient principal))
  (begin
    (asserts! (is-eq tx-sender contract-owner) err-owner-only)
    (asserts! (>= (var-get total-balance) amount) err-insufficient-funds)
    (try! (as-contract (stx-transfer? amount tx-sender recipient)))
    (var-set total-balance (- (var-get total-balance) amount))
    (ok amount)
  )
)

Functions (3)

FunctionAccessArgs
get-balanceread-only
depositpublicamount: uint
withdrawpublicamount: uint, recipient: principal