Source Code

(define-constant O tx-sender)
(define-constant E1 (err u880))
(define-constant E2 (err u881))
(define-data-var total-fees uint u0)
(define-data-var total-distributed uint u0)
(define-map fee-deposits uint {from: principal, amount: uint, block: uint})
(define-data-var dep-count uint u0)
(define-public (deposit-fee (amt uint))
 (begin (asserts! (> amt u0) E2)
  (try! (stx-transfer? amt tx-sender (as-contract tx-sender)))
  (let ((id (var-get dep-count)))
   (var-set dep-count (+ id u1))
   (var-set total-fees (+ (var-get total-fees) amt))
   (ok (map-set fee-deposits id
    {from: tx-sender, amount: amt, block: stacks-block-height})))))
(define-public (distribute (to principal) (amt uint))
 (begin (asserts! (is-eq tx-sender O) E1)
  (try! (as-contract (stx-transfer? amt tx-sender to)))
  (var-set total-distributed (+ (var-get total-distributed) amt))
  (ok amt)))
(define-read-only (get-vault-info)
 {total-fees: (var-get total-fees),
  total-distributed: (var-get total-distributed),
  deposits: (var-get dep-count)})
(define-read-only (get-deposit (id uint))
 (map-get? fee-deposits id))

Functions (4)

FunctionAccessArgs
deposit-feepublicamt: uint
distributepublicto: principal, amt: uint
get-vault-inforead-only
get-depositread-onlyid: uint