Source Code

;; Vault contract for secure asset storage
(define-map vault-balances principal uint)
(define-map vault-owners {vault-id: uint} principal)
(define-data-var vault-counter uint u0)

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

(define-public (deposit (amount uint))
  (begin
    (asserts! (> amount u0) (err u1))
    (let ((current (get-vault-balance tx-sender)))
      (ok (map-set vault-balances tx-sender (+ current amount)))
    )
  )
)

(define-public (withdraw (amount uint))
  (let ((current (get-vault-balance tx-sender)))
    (begin
      (asserts! (>= current amount) (err u2))
      (ok (map-set vault-balances tx-sender (- current amount)))
    )
  )
)

(define-public (check-vault-balance (user principal))
  (ok (get-vault-balance user))
)

Functions (4)

FunctionAccessArgs
get-vault-balanceread-onlyuser: principal
depositpublicamount: uint
withdrawpublicamount: uint
check-vault-balancepublicuser: principal