Source Code

;; simple-voting.clar

(define-constant ERR-ALREADY-VOTED u101)

(define-data-var yes uint u0)
(define-data-var no uint u0)
(define-map voted {voter: principal} {v: bool})

(define-public (vote-yes)
  (if (is-some (map-get? voted {voter: tx-sender}))
    (err ERR-ALREADY-VOTED)
    (begin
      (map-set voted {voter: tx-sender} {v: true})
      (var-set yes (+ (var-get yes) u1))
      (ok true))))

(define-public (vote-no)
  (if (is-some (map-get? voted {voter: tx-sender}))
    (err ERR-ALREADY-VOTED)
    (begin
      (map-set voted {voter: tx-sender} {v: true})
      (var-set no (+ (var-get no) u1))
      (ok true))))

(define-read-only (get-results)
  (ok {yes: (var-get yes), no: (var-get no)}))

Functions (3)

FunctionAccessArgs
vote-yespublic
vote-nopublic
get-resultsread-only