Source Code

;; Vault without STX transfer - tracking only
(define-constant ERR-ZERO (err u1))
(define-constant ERR-INSUFFICIENT (err u2))
(define-constant CONTRACT-OWNER tx-sender)

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

(define-public (record-deposit (amount uint))
  (begin
    (asserts! (> amount u0) ERR-ZERO)
    (map-set balances tx-sender (+ (default-to u0 (map-get? balances tx-sender)) amount))
    (var-set total-deposits (+ (var-get total-deposits) amount))
    (ok amount)))

(define-public (record-withdraw (amount uint))
  (let ((bal (default-to u0 (map-get? balances tx-sender))))
    (asserts! (>= bal amount) ERR-INSUFFICIENT)
    (map-set balances tx-sender (- bal amount))
    (var-set total-deposits (- (var-get total-deposits) amount))
    (ok amount)))

(define-read-only (get-balance (user principal))
  (default-to u0 (map-get? balances user)))

(define-read-only (get-total)
  (var-get total-deposits))

Functions (4)

FunctionAccessArgs
record-depositpublicamount: uint
record-withdrawpublicamount: uint
get-balanceread-onlyuser: principal
get-totalread-only