Source Code

;; title: rps-token
;; version: 1.0
;; summary: Reward token for RockPaperStacks winners

(define-fungible-token rps-token)

;; constants
(define-constant err-unauthorized (err u401))

;; data vars
(define-constant admin tx-sender)
(define-data-var game-contract principal .rockpaperscissors)

;; public functions
(define-public (set-game-contract (new-contract principal))
    (begin
        (asserts! (is-eq tx-sender admin) err-unauthorized)
        (ok (var-set game-contract new-contract))
    )
)

(define-public (mint (amount uint) (recipient principal))
    (let
        (
            (amount-to-check amount)
            (recipient-to-check recipient)
        )
        (asserts! (or (is-eq contract-caller (var-get game-contract)) (is-eq tx-sender admin)) err-unauthorized)
        (ft-mint? rps-token amount-to-check recipient-to-check)
    )
)

(define-public (transfer (amount uint) (sender principal) (recipient principal) (memo (optional (buff 34))))
    (let
        (
            (amount-to-check amount)
            (sender-to-check sender)
            (recipient-to-check recipient)
        )
        (asserts! (or (is-eq tx-sender sender) (is-eq contract-caller sender)) err-unauthorized)
        (match memo to-print (print to-print) 0x)
        (ft-transfer? rps-token amount-to-check sender-to-check recipient-to-check)
    )
)

;; read only functions
(define-read-only (get-name)
    (ok "RockPaperStacks Token")
)

(define-read-only (get-symbol)
    (ok "RPS")
)

(define-read-only (get-decimals)
    (ok u6)
)

(define-read-only (get-balance (who principal))
    (ok (ft-get-balance rps-token who))
)

(define-read-only (get-total-supply)
    (ok (ft-get-supply rps-token))
)

(define-read-only (get-token-uri)
    (ok none)
)

Functions (9)

FunctionAccessArgs
set-game-contractpublicnew-contract: principal
mintpublicamount: uint, recipient: principal
transferpublicamount: uint, sender: principal, recipient: principal, memo: (optional (buff 34
get-nameread-only
get-symbolread-only
get-decimalsread-only
get-balanceread-onlywho: principal
get-total-supplyread-only
get-token-uriread-only