Source Code

;; token-tdog-v-0-2

(impl-trait .sip-010-trait-ft-standard-v-0-0.sip-010-trait)

(define-fungible-token tDOG)

(define-constant ERR_USER_ALREADY_MINTED (err u9000))
(define-constant ERR_NOT_AUTHORIZED (err u9001))

(define-constant CONTRACT_DEPLOYER tx-sender)

(define-constant DEPLOY_MINT_AMOUNT u10000000000000)

(define-data-var user-mint-amount uint u88980600000)

(define-map user-minted principal bool)

(define-read-only (get-name)
  (ok "Test DOG Token")
)

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

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

(define-read-only (get-balance (account principal))
  (ok (ft-get-balance tDOG account))
)

(define-read-only (get-balance-simple (account principal))
  (ft-get-balance tDOG account)
)

(define-read-only (get-total-supply)
  (ok (ft-get-supply tDOG))
)

(define-read-only (get-token-uri)
  (ok (some u""))
)

(define-read-only (get-user-mint-amount)
  (ok (var-get user-mint-amount))
)

(define-read-only (get-user-minted (account principal))
  (ok (default-to false (map-get? user-minted account)))
)

(define-public (transfer (amount uint) (sender principal) (recipient principal) (memo (optional (buff 34))))
  (begin
    (asserts! (is-eq tx-sender sender) (err u1001))

    (match (ft-transfer? tDOG amount sender recipient)
      response (begin
        (print memo)
        (ok response)
      )
      error (err error)
    )
  )
)

(define-public (set-user-mint-amount (amount uint))
  (begin
    (asserts! (is-eq tx-sender CONTRACT_DEPLOYER) ERR_NOT_AUTHORIZED)
    (var-set user-mint-amount amount)
    (ok true)
  )
)

(define-public (mint)
  (begin
    (asserts! (is-none (map-get? user-minted tx-sender)) ERR_USER_ALREADY_MINTED)
    (map-set user-minted tx-sender true)
    (ft-mint? tDOG (var-get user-mint-amount) tx-sender)
  )
)

(define-public (admin-mint (amount uint) (recipient principal))
  (begin
    (asserts! (is-eq tx-sender CONTRACT_DEPLOYER) ERR_NOT_AUTHORIZED)
    (ft-mint? tDOG amount recipient)
  )
)

(define-public (burn (amount uint))
  (begin
    (ft-burn? tDOG amount tx-sender)
  )
)

(ft-mint? tDOG DEPLOY_MINT_AMOUNT CONTRACT_DEPLOYER)

Functions (14)

FunctionAccessArgs
get-symbolread-only
get-nameread-only
get-decimalsread-only
get-balanceread-onlyaccount: principal
get-balance-simpleread-onlyaccount: principal
get-total-supplyread-only
get-token-uriread-only
get-user-mint-amountread-only
get-user-mintedread-onlyaccount: principal
transferpublicamount: uint, sender: principal, recipient: principal, memo: (optional (buff 34
set-user-mint-amountpublicamount: uint
mintpublic
admin-mintpublicamount: uint, recipient: principal
burnpublicamount: uint