;; =========================================================
;; Secure SIP-010 Fungible Token
;; =========================================================
(define-constant contract-owner tx-sender)
(define-constant err-owner-only (err u100))
(define-constant err-not-enough-balance (err u101))
(define-constant err-zero-amount (err u102))
(define-fungible-token mytoken u1000000000) ;; 1B max supply
;; ----------------------------
;; Read-only functions
;; ----------------------------
(define-read-only (get-name)
(ok "My Secure Token"))
(define-read-only (get-symbol)
(ok "MST"))
(define-read-only (get-decimals)
(ok u6))
(define-read-only (get-total-supply)
(ok (ft-get-supply mytoken)))
(define-read-only (get-balance (account principal))
(ok (ft-get-balance mytoken account)))
;; ----------------------------
;; Public functions
;; ----------------------------
(define-public (mint (amount uint) (recipient principal))
(begin
(asserts! (is-eq tx-sender contract-owner) err-owner-only)
(asserts! (> amount u0) err-zero-amount)
(ft-mint? mytoken amount recipient)
)
)
(define-public (transfer (amount uint) (sender principal) (recipient principal))
(begin
(asserts! (> amount u0) err-zero-amount)
(asserts!
(is-eq tx-sender sender)
err-owner-only
)
(ft-transfer? mytoken amount sender recipient)
)
)