Source Code

;; ============================================
;; BENEFICIARY MANAGER - Distribution Rules
;; Clarity 4 Smart Contract
;; ============================================

(define-constant ERR_INVALID_PERCENTAGE (err u413))

(define-map beneficiaries principal (list 10 {
  recipient: principal,
  percentage: uint
}))

;; Helper for summing percentages
(define-private (sum-percentages (item { recipient: principal, percentage: uint }) (acc uint))
  (+ (get percentage item) acc)
)

(define-public (set-beneficiaries (new-list (list 10 { recipient: principal, percentage: uint })))
  (let
    (
      (total-percent (fold sum-percentages new-list u0))
    )
    (asserts! (<= total-percent u100) ERR_INVALID_PERCENTAGE)
    (map-set beneficiaries tx-sender new-list)
    (ok true)
  )
)

(define-read-only (get-beneficiaries (user principal))
  (match (map-get? beneficiaries user)
    list-found list-found
    (list)
  )
)

Functions (3)

FunctionAccessArgs
sum-percentagesprivateitem: { recipient: principal, percentage: uint }, acc: uint
set-beneficiariespublicnew-list: (list 10 { recipient: principal, percentage: uint }
get-beneficiariesread-onlyuser: principal