Source Code

;; Contract: Digital Diploma
;; Description: NFT that can only be minted by authorized professors.

(define-non-fungible-token degree uint)
(define-data-var degree-count uint u0)

(define-public (issue-degree (student principal))
    (let
        (
            ;; Call University contract to check if sender is a professor
            (is-prof (contract-call? .university is-authorized tx-sender))
            (new-id (+ (var-get degree-count) u1))
        )
        ;; Strict check
        (asserts! is-prof (err u403))
        
        ;; Mint the degree
        (try! (nft-mint? degree new-id student))
        (var-set degree-count new-id)
        (ok "Degree Issued")
    )
)

Functions (1)

FunctionAccessArgs
issue-degreepublicstudent: principal