Source Code

;; Badge Issuer

(define-constant contract-owner tx-sender)
(define-data-var next-badge-id uint u1)

(define-map badges uint { recipient: principal, badge-type: (string-ascii 32), issued-at: uint })

(define-public (issue-badge (recipient principal) (badge-type (string-ascii 32)))
  (let ((badge-id (var-get next-badge-id)))
    (asserts! (is-eq tx-sender contract-owner) (err u100))
    (map-set badges badge-id { recipient: recipient, badge-type: badge-type, issued-at: block-height })
    (var-set next-badge-id (+ badge-id u1))
    (ok badge-id)
  )
)

Functions (1)

FunctionAccessArgs
issue-badgepublicrecipient: principal, badge-type: (string-ascii 32