Source Code

;; Contract: Bike Registry
;; Description: Stores bike details and status.

(define-map bikes uint { owner: principal, is-rented: bool })
(define-data-var bike-count uint u0)

(define-read-only (get-bike (id uint))
    (map-get? bikes id)
)

(define-public (add-bike)
    (let
        (
            (new-id (+ (var-get bike-count) u1))
        )
        (map-set bikes new-id { owner: tx-sender, is-rented: false })
        (var-set bike-count new-id)
        (ok new-id)
    )
)

;; Only the Rental Contract should call this (simplified for demo)
(define-public (set-status (id uint) (rented bool))
    (let
        (
            (bike (unwrap! (map-get? bikes id) (err u404)))
        )
        (map-set bikes id (merge bike { is-rented: rented }))
        (ok "Status Updated")
    )
)

Functions (3)

FunctionAccessArgs
get-bikeread-onlyid: uint
add-bikepublic
set-statuspublicid: uint, rented: bool