Source Code

;; simple-nft.clar

(define-constant ERR-NOT-OWNER u401)
(define-constant ERR-NOT-TOKEN-OWNER u404)

(define-non-fungible-token simple-nft uint)

(define-data-var owner principal tx-sender)
(define-data-var next-id uint u1)

(define-public (mint (recipient principal))
  (if (is-eq tx-sender (var-get owner))
    (let ((id (var-get next-id)))
      (var-set next-id (+ id u1))
      (try! (nft-mint? simple-nft id recipient))
      (ok id))
    (err ERR-NOT-OWNER)))

(define-public (transfer (id uint) (sender principal) (recipient principal))
  (if (is-eq tx-sender sender)
    (match (nft-transfer? simple-nft id sender recipient)
      ok-val (ok true)
      err-val (err ERR-NOT-TOKEN-OWNER))
    (err ERR-NOT-OWNER)))

(define-read-only (get-owner-of (id uint))
  (ok (nft-get-owner? simple-nft id)))

Functions (3)

FunctionAccessArgs
mintpublicrecipient: principal
transferpublicid: uint, sender: principal, recipient: principal
get-owner-ofread-onlyid: uint