Source Code

;; vault.clar
;; Simple STX Vault

(define-map balances principal uint)

(define-public (deposit (amount uint))
    (let
        (
            (current-bal (default-to u0 (map-get? balances tx-sender)))
        )
        (try! (stx-transfer? amount tx-sender (as-contract tx-sender)))
        (map-set balances tx-sender (+ current-bal amount))
        (ok true)
    )
)

(define-public (withdraw (amount uint))
    (let
        (
            (current-bal (unwrap! (map-get? balances tx-sender) (err u100)))
        )
        (asserts! (>= current-bal amount) (err u101))
        (try! (as-contract (stx-transfer? amount tx-sender tx-sender)))
        (map-set balances tx-sender (- current-bal amount))
        (ok true)
    )
)

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

Functions (3)

FunctionAccessArgs
depositpublicamount: uint
withdrawpublicamount: uint
get-balanceread-onlyuser: principal