Source Code

;; Whitelist management contract
(define-map whitelisted principal bool)
(define-data-var admin principal tx-sender)
(define-data-var whitelist-count uint u0)

(define-read-only (is-whitelisted (address principal))
  (default-to false (map-get? whitelisted address))
)

(define-read-only (get-count)
  (var-get whitelist-count)
)

(define-public (add-to-whitelist (address principal))
  (begin
    (asserts! (is-eq tx-sender (var-get admin)) (err u1))
    (asserts! (not (is-whitelisted address)) (err u2))
    (map-set whitelisted address true)
    (ok (var-set whitelist-count (+ (var-get whitelist-count) u1)))
  )
)

(define-public (remove-from-whitelist (address principal))
  (begin
    (asserts! (is-eq tx-sender (var-get admin)) (err u1))
    (asserts! (is-whitelisted address) (err u3))
    (map-delete whitelisted address)
    (ok (var-set whitelist-count (- (var-get whitelist-count) u1)))
  )
)

Functions (4)

FunctionAccessArgs
is-whitelistedread-onlyaddress: principal
get-countread-only
add-to-whitelistpublicaddress: principal
remove-from-whitelistpublicaddress: principal