Source Code

;; Portfolio Management System

(define-map user-portfolios principal { total-value: uint, asset-count: uint, risk-score: uint })
(define-map portfolio-assets { user: principal, asset: (string-ascii 32) } uint)

(define-public (create-portfolio)
  (begin
    (map-set user-portfolios tx-sender { total-value: u0, asset-count: u0, risk-score: u50 })
    (ok true)
  )
)

(define-public (add-asset (asset (string-ascii 32)) (amount uint))
  (let ((portfolio (default-to { total-value: u0, asset-count: u0, risk-score: u50 } (map-get? user-portfolios tx-sender))))
    (map-set portfolio-assets { user: tx-sender, asset: asset } amount)
    (map-set user-portfolios tx-sender (merge portfolio { 
      total-value: (+ (get total-value portfolio) amount),
      asset-count: (+ (get asset-count portfolio) u1)
    }))
    (ok true)
  )
)

(define-read-only (get-portfolio (user principal))
  (map-get? user-portfolios user)
)

Functions (3)

FunctionAccessArgs
create-portfoliopublic
add-assetpublicasset: (string-ascii 32
get-portfolioread-onlyuser: principal