(define-map counters (string-ascii 30) uint)
(define-read-only (get-counter (name (string-ascii 30))) (default-to u0 (map-get? counters name)))
(define-public (increment (name (string-ascii 30)))
(let ((current (get-counter name)))
(map-set counters name (+ current u1))
(ok (+ current u1))))
(define-public (decrement (name (string-ascii 30)))
(let ((current (get-counter name)))
(if (> current u0)
(begin (map-set counters name (- current u1)) (ok (- current u1)))
(err u0))))
(define-public (reset (name (string-ascii 30)))
(begin (map-set counters name u0) (ok u0)))