Source Code

;; Leaderboard contract for tracking scores
(define-map scores principal uint)
(define-data-var top-score uint u0)
(define-data-var top-scorer principal tx-sender)
(define-data-var total-players uint u0)

(define-read-only (get-score (player principal))
  (default-to u0 (map-get? scores player))
)

(define-read-only (get-top-score)
  (var-get top-score)
)

(define-read-only (get-top-scorer)
  (var-get top-scorer)
)

(define-public (submit-score (score uint))
  (let ((current (get-score tx-sender)))
    (begin
      (asserts! (> score current) (err u1))
      (map-set scores tx-sender score)
      (if (> score (var-get top-score))
        (begin
          (var-set top-score score)
          (var-set top-scorer tx-sender)
        )
        false
      )
      (ok true)
    )
  )
)

Functions (4)

FunctionAccessArgs
get-scoreread-onlyplayer: principal
get-top-scoreread-only
get-top-scorerread-only
submit-scorepublicscore: uint