Source Code

;; Milestone Rewards - Track and reward milestones

(define-map milestones
  { user: principal, milestone-type: (string-ascii 30) }
  {
    achieved: bool,
    achieved-at: (optional uint)
  }
)

(define-public (mark-milestone (milestone-type (string-ascii 30)))
  (begin
    (map-set milestones { user: tx-sender, milestone-type: milestone-type } {
      achieved: true,
      achieved-at: (some stacks-block-height)
    })
    (ok true)
  )
)

(define-read-only (has-milestone (user principal) (milestone-type (string-ascii 30)))
  (default-to false (get achieved (map-get? milestones { user: user, milestone-type: milestone-type })))
)

Functions (2)

FunctionAccessArgs
mark-milestonepublicmilestone-type: (string-ascii 30
has-milestoneread-onlyuser: principal, milestone-type: (string-ascii 30