Source Code

;; SatGuard Loyalty Points
(define-constant admin tx-sender)
(define-map points principal uint)
(define-data-var total-points uint u0)
(define-read-only (get-points (user principal)) (default-to u0 (map-get? points user)))
(define-read-only (get-total) (var-get total-points))
(define-public (add-points (user principal) (amt uint))
  (begin (asserts! (is-eq tx-sender admin) (err u401))
    (map-set points user (+ (get-points user) amt))
    (var-set total-points (+ (var-get total-points) amt)) (ok true)))
(define-public (redeem-points (amt uint))
  (let ((bal (get-points tx-sender)))
    (asserts! (>= bal amt) (err u402))
    (map-set points tx-sender (- bal amt))
    (var-set total-points (- (var-get total-points) amt)) (ok true)))

Functions (4)

FunctionAccessArgs
get-pointsread-onlyuser: principal
get-totalread-only
add-pointspublicuser: principal, amt: uint
redeem-pointspublicamt: uint