Skip to content

[BE-62] Implement Stellar tokenization API — fractional ownership token management #935

Description

@yusuftomilola

Overview

The assetsup contract supports tokenization — splitting an asset into fractional tokens that can be held by multiple investors. This issue exposes the tokenization contract functions as REST API endpoints. Enables the tokenization UI (FE-43) and investor portal (FE-44).

Context

  • Depends on BE-60 (StellarService) and BE-61 (asset must be registered on-chain first)
  • Contract source: contracts/assetsup/src/tokenization.rs — review tokenize(), transfer_tokens(), lock_tokens(), unlock_tokens() function signatures
  • Token holders and balances are stored on-chain — the backend reads them via contract data queries

Acceptance Criteria

  • POST /stellar/assets/:id/tokenize body: { totalTokens: number, pricePerToken: number, lockPeriodDays?: number } — calls contract tokenize(), stores tokenization config on the Asset entity (isTokenized: boolean, totalTokens, tokenPrice)
  • GET /stellar/assets/:id/tokens — queries on-chain token holders and balances, returns: { totalTokens, circulatingTokens, holders: [{ address, balance, percentage }] }
  • POST /stellar/assets/:id/tokens/transfer body: { toAddress: string, amount: number } — calls contract transfer_tokens()
  • POST /stellar/assets/:id/tokens/lock and POST /stellar/assets/:id/tokens/unlock — calls contract lock/unlock functions
  • Add isTokenized, totalTokens (nullable), tokenPrice (nullable decimal) to Asset entity

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions