Source Code


;; nova-fee-distributor.clar
;; Distributes protocol fees to simulated stakers
;; CLARITY VERSION: 2

(define-map balances principal uint)
(define-data-var total-shares uint u0)

(define-public (deposit-fees (amount uint))
    (stx-transfer? amount tx-sender (as-contract tx-sender))
)

(define-public (claim-rewards)
    (let (
        (share (default-to u0 (map-get? balances tx-sender)))
        (contract-bal (stx-get-balance (as-contract tx-sender)))
        (total (var-get total-shares))
    )
    (asserts! (> total u0) (err u100))
    (asserts! (> share u0) (err u101))
    
    (let ((payout (/ (* contract-bal share) total)))
        (try! (as-contract (stx-transfer? payout tx-sender tx-sender)))
        (ok payout)
    )
    )
)

(define-public (add-shareholder (user principal) (shares uint))
    (begin
        (map-set balances user shares)
        (var-set total-shares (+ (var-get total-shares) shares))
        (ok true)
    )
)

Functions (3)

FunctionAccessArgs
deposit-feespublicamount: uint
claim-rewardspublic
add-shareholderpublicuser: principal, shares: uint