Source Code

;; SatGuard Token Minting - rewards contributors
(define-constant err-owner (err u410))
(define-constant err-nf (err u411))
(define-constant err-dup (err u412))
(define-data-var admin principal tx-sender)
(define-data-var mint-rate uint u10) ;; tokens per unit contributed
(define-map minted {who: principal,pid: uint} {amt: uint,ma: uint})
(define-read-only (get-mint-rate) (var-get mint-rate))
(define-read-only (get-minted (who principal) (pid uint)) (map-get? minted {who: who,pid: pid}))
(define-public (set-mint-rate (rate uint))
  (begin
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (var-set mint-rate rate)
    (print {e: "mint-rate-set",rate: rate})
    (ok true)))
(define-public (mint-reward (pid uint))
  (let ((contrib (unwrap! (contract-call? .insurance-pool get-contrib pid tx-sender) err-nf))
        (ex (map-get? minted {who: tx-sender,pid: pid}))
        (ca (get a contrib))
        (reward (* ca (var-get mint-rate))))
    (asserts! (is-none ex) err-dup)
    (asserts! (> ca u0) err-nf)
    (try! (contract-call? .sg-token-core mint reward tx-sender))
    (map-set minted {who: tx-sender,pid: pid} {amt: reward,ma: block-height})
    (print {e: "reward-minted",who: tx-sender,pid: pid,amt: reward})
    (ok reward)))

Functions (4)

FunctionAccessArgs
get-mint-rateread-only
get-mintedread-onlywho: principal, pid: uint
set-mint-ratepublicrate: uint
mint-rewardpublicpid: uint