Source Code

;; agate-record-27
(define-data-var weight-balance uint u0)
(define-data-var fee-rate uint u4)
(define-data-var owner principal tx-sender)
(define-map deposits principal uint)

(define-public (deposit (amount uint))
  (begin
    (map-set deposits tx-sender
      (+ (default-to u0 (map-get? deposits tx-sender)) amount))
    (var-set weight-balance (+ (var-get weight-balance) amount))
    (ok amount)))

(define-public (withdraw (amount uint))
  (let ((balance (default-to u0 (map-get? deposits tx-sender))))
    (if (>= balance amount)
      (begin
        (map-set deposits tx-sender (- balance amount))
        (var-set weight-balance (- (var-get weight-balance) amount))
        (ok amount))
      (err u1))))

(define-read-only (get-balance (who principal))
  (ok (default-to u0 (map-get? deposits who))))

(define-read-only (get-total-balance)
  (ok (var-get weight-balance)))

(define-read-only (get-fee-rate)
  (ok (var-get fee-rate)))

Functions (5)

FunctionAccessArgs
depositpublicamount: uint
withdrawpublicamount: uint
get-balanceread-onlywho: principal
get-total-balanceread-only
get-fee-rateread-only