Source Code

(define-constant admin 'SP1K1A1PMGW2ZJCNF46NWZWHG8TS1D23EGH1KNK60)

(define-map balances principal uint)
(define-data-var total-rewards uint u0)
(define-data-var total-claimed uint u0)

(define-read-only (get-balance (user principal))
  (ok (map-get? balances user)))

(define-read-only (get-depot-info)
  {tokens: (contract-call? 'SP1JSH2FPE8BWNTP228YZ1AZZ0HE0064PS6RXRAY4.fpwr-v03 get-balance (as-contract tx-sender)),
   total-rewards: (var-get total-rewards),
   total-claimed: (var-get total-claimed)})

(define-public (claim)
  (let ((user tx-sender)
    (amount (default-to u0 (map-get? balances user))))
    (var-set total-claimed (+ amount (var-get total-claimed)))
    (if (> amount u0)
      (contract-call? 'SP1JSH2FPE8BWNTP228YZ1AZZ0HE0064PS6RXRAY4.fpwr-v03 transfer amount tx-sender user none)
      (err u1))))

(define-private (add-reward (reward {user: principal, amount: uint}))
  (let ((amount (default-to u0 (map-get? balances (get user reward)))))
    (var-set total-rewards (+ amount (var-get total-rewards)))
    (map-set balances (get user reward) (+ amount (get amount reward)))))

(define-public (add-rewards (rewards (list 200 {user: principal, amount: uint})))
  (if (is-eq tx-sender admin)
    (ok (map add-reward rewards))
    (err u403)))

(define-public (update-reward-admin (new-admin principal))
  (if (is-eq tx-sender admin)
    (contract-call? 'SP1JSH2FPE8BWNTP228YZ1AZZ0HE0064PS6RXRAY4.fpwr-v03 update-reward-admin new-admin)
    (err u403)))

Functions (6)

FunctionAccessArgs
get-balanceread-onlyuser: principal
get-depot-inforead-only
claimpublic
add-rewardprivatereward: {user: principal, amount: uint}
add-rewardspublicrewards: (list 200 {user: principal, amount: uint}
update-reward-adminpublicnew-admin: principal