Source Code

;; inventory-system contract

(define-map inventory { user: principal, item-id: uint } uint)

(define-read-only (get-quantity (user principal) (item-id uint))
  (default-to u0 (map-get? inventory { user: user, item-id: item-id }))
)

(define-public (add-item (item-id uint) (quantity uint))
  (begin
    (map-set inventory { user: tx-sender, item-id: item-id } 
      (+ (get-quantity tx-sender item-id) quantity))
    (ok (get-quantity tx-sender item-id))
  )
)

(define-public (remove-item (item-id uint) (quantity uint))
  (let ((current (get-quantity tx-sender item-id)))
    (asserts! (>= current quantity) (err u1))
    (map-set inventory { user: tx-sender, item-id: item-id } (- current quantity))
    (ok (get-quantity tx-sender item-id))
  )
)

Functions (3)

FunctionAccessArgs
get-quantityread-onlyuser: principal, item-id: uint
add-itempublicitem-id: uint, quantity: uint
remove-itempublicitem-id: uint, quantity: uint