;; SatGuard Blacklist
(define-constant err-owner (err u930))
(define-constant err-nf (err u931))
(define-data-var admin principal tx-sender)
(define-data-var bl-count uint u0)
(define-map blacklist {who: principal} {reason: (string-ascii 50),ba: uint,by: principal})
(define-read-only (is-blacklisted (who principal)) (is-some (map-get? blacklist {who: who})))
(define-read-only (get-blacklist-entry (who principal)) (map-get? blacklist {who: who}))
(define-read-only (get-bl-count) (var-get bl-count))
(define-public (add-to-blacklist (who principal) (reason (string-ascii 50)))
(begin
(asserts! (is-eq tx-sender (var-get admin)) err-owner)
(map-set blacklist {who: who} {reason: reason,ba: block-height,by: tx-sender})
(var-set bl-count (+ (var-get bl-count) u1))
(print {e: "blacklisted",who: who,reason: reason})
(ok true)))
(define-public (remove-from-blacklist (who principal))
(begin
(asserts! (is-eq tx-sender (var-get admin)) err-owner)
(asserts! (is-blacklisted who) err-nf)
(map-delete blacklist {who: who})
(var-set bl-count (- (var-get bl-count) u1))
(print {e: "unblacklisted",who: who})
(ok true)))