Skip to content

[Contract] Implement Asset Metadata Update, Ownership Transfer, and Retirement #467

@yusuftomilola

Description

@yusuftomilola

Post-registration lifecycle operations: updating an asset's mutable metadata, transferring ownership between addresses, and marking an asset as retired.

Requirements

update_asset_metadata(env, asset_id, new_description, new_metadata_uri, new_custom_attributes, caller):

  • Caller must be asset owner or admin
  • Applies provided Option<T> values (skips None)
  • Validates metadata URI if provided
  • Emits asset_upd event

transfer_asset_ownership(env, asset_id, new_owner, caller):

  • Caller must be current owner
  • New owner cannot be zero address
  • Removes ID from old owner's registry, adds to new owner's registry
  • Updates asset.owner, last_transfer_timestamp, status = Transferred
  • Emits asset_tx event

retire_asset(env, asset_id, caller):

  • Caller must be owner or admin
  • Sets status = Retired
  • Emits asset_ret event

Acceptance Criteria

  • Metadata update with all None args is a no-op (no error)
  • Ownership transfer correctly updates both registries
  • Retired assets cannot be re-transferred (check status in transfer)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions