Source Code

(define-trait security-token-trait
  ((transfer (principal principal uint) (response bool uint))
   (balance-of (principal) (response uint uint))
   (total-supply () (response uint uint))
   (mint (principal uint) (response bool uint))
   (burn (principal uint) (response bool uint))))

(define-constant token-name u"SecurityToken")
(define-constant token-symbol u"STKN")
(define-constant token-decimals u6)
(define-data-var total-supply-var uint u0)
(define-map balances principal uint)


(define-private (is-restricted) true)
(define-read-only (get-restrict-assets) (is-restricted))

(define-public (transfer (sender principal) (recipient principal) (amount uint))
  (let ((sender-balance (default-to u0 (map-get? balances sender))))
    (if (>= sender-balance amount)
        (begin
          (map-set balances sender (- sender-balance amount))
          (map-set balances recipient (+ (default-to u0 (map-get? balances recipient)) amount))
          (ok true))
        (err u100))))


(define-private (get-balance (owner principal))
  (default-to u0 (map-get? balances owner)))


(define-read-only (balance-of (owner principal))
  (ok (get-balance owner)))

(define-read-only (total-supply)
  (ok (var-get total-supply-var)))


(define-private (do-mint (recipient principal) (amount uint))
  (begin
    (var-set total-supply-var (+ (var-get total-supply-var) amount))
    (map-set balances recipient (+ (get-balance recipient) amount))
    true))

(define-public (mint (recipient principal) (amount uint))
  (begin
    (do-mint recipient amount)
    (ok true)))


(define-private (do-burn (owner principal) (amount uint))
  (begin
    (var-set total-supply-var (- (var-get total-supply-var) amount))
    (map-set balances owner (- (get-balance owner) amount))
    true))

(define-public (burn (owner principal) (amount uint))
  (let ((owner-balance (get-balance owner)))
    (if (>= owner-balance amount)
        (begin
          (do-burn owner amount)
          (ok true))
        (err u101))))



Functions (10)

FunctionAccessArgs
is-restrictedprivate
get-restrict-assetsread-only
transferpublicsender: principal, recipient: principal, amount: uint
get-balanceprivateowner: principal
balance-ofread-onlyowner: principal
total-supplyread-only
do-mintprivaterecipient: principal, amount: uint
mintpublicrecipient: principal, amount: uint
do-burnprivateowner: principal, amount: uint
burnpublicowner: principal, amount: uint