Source Code

;; An on-chain counter that stores a count for each individual

;; Define a map data structure
(define-map individual-count principal uint)

(define-data-var global-count int 0)

;; Function to retrieve the count for a given individual
(define-read-only (get-count (who principal))
  (default-to u0 (map-get? individual-count who))
)

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

;; Function to increment the count for the caller
(define-public (count-up)
    (begin
        (var-set global-count (+ (var-get global-count) 1))
        (map-set individual-count tx-sender (+ (get-count tx-sender) u1))
        (contract-call? .count-token safe-mint)
    )
)

(define-public (count-down)
    (begin
        (var-set global-count (- (var-get global-count) 1))
        (map-set individual-count tx-sender (- (get-count tx-sender) u1))
        (contract-call? .count-token safe-mint)
    )
)

Functions (4)

FunctionAccessArgs
get-countread-onlywho: principal
get-global-countread-only
count-uppublic
count-downpublic