Source Code

;; SatGuard Governance Token (SIP-010 lite)
(define-constant err-owner (err u400))
(define-constant err-amt (err u401))
(define-constant err-bal (err u402))
(define-data-var admin principal tx-sender)
(define-data-var total-supply uint u0)
(define-map balances {who: principal} {amt: uint})
(define-read-only (get-balance (who principal)) (default-to {amt: u0} (map-get? balances {who: who})))
(define-read-only (get-total-supply) (var-get total-supply))
(define-public (transfer (amt uint) (to principal))
  (let ((sb (get amt (get-balance tx-sender)))
        (rb (get amt (get-balance to))))
    (asserts! (> amt u0) err-amt)
    (asserts! (>= sb amt) err-bal)
    (map-set balances {who: tx-sender} {amt: (- sb amt)})
    (map-set balances {who: to} {amt: (+ rb amt)})
    (print {e: "transfer",from: tx-sender,to: to,amt: amt})
    (ok true)))
(define-public (mint (amt uint) (to principal))
  (let ((rb (get amt (get-balance to))))
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (asserts! (> amt u0) err-amt)
    (map-set balances {who: to} {amt: (+ rb amt)})
    (var-set total-supply (+ (var-get total-supply) amt))
    (print {e: "mint",to: to,amt: amt})
    (ok true)))
(define-public (burn (amt uint))
  (let ((sb (get amt (get-balance tx-sender))))
    (asserts! (>= sb amt) err-bal)
    (map-set balances {who: tx-sender} {amt: (- sb amt)})
    (var-set total-supply (- (var-get total-supply) amt))
    (print {e: "burn",from: tx-sender,amt: amt})
    (ok true)))

Functions (5)

FunctionAccessArgs
get-balanceread-onlywho: principal
get-total-supplyread-only
transferpublicamt: uint, to: principal
mintpublicamt: uint, to: principal
burnpublicamt: uint