-
Notifications
You must be signed in to change notification settings - Fork 71
Open
Labels
Description
Enables an asset owner (lessor) to lease an asset to a lessee for a defined period with rent terms tracked on-chain.
Requirements
Lease struct: lease_id: BytesN<32>, asset_id: BytesN<32>, lessor: Address, lessee: Address, start_timestamp: u64, end_timestamp: u64, rent_per_period: i128, deposit: i128, status: LeaseStatus (Active, Returned, Cancelled, Expired)
Functions:
create_lease(env, asset_id, lease_id, lessor, lessee, start, end, rent, deposit)— lessor authenticates; asset must not already have an active lease; stores lease and updates asset active lease index; emits eventreturn_leased_asset(env, lease_id, caller)— lessor or lessee; sets status to Returned; clears active lease indexcancel_lease(env, lease_id, caller)— lessor only; only before start_timestampexpire_lease(env, lease_id)— permissionless; only ifend_timestamp < now; sets Expiredget_lease(env, lease_id)get_asset_active_lease(env, asset_id)— returnsOption<BytesN<32>>get_lessee_leases(env, lessee)— index of all lease IDs for a lessee
Acceptance Criteria
- Creating a lease on an already-leased asset fails
-
cancel_leasefails after the lease start timestamp - Lessee index updated on creation
Reactions are currently unavailable