Source Code


;; Nova Governance Analytics
;; Tracks and analyzes governance participation

(define-map voter-stats
    { voter: principal }
    {
        proposals-voted: uint,
        total-voting-power: uint,
        last-active-block: uint
    }
)

(define-map proposal-analytics
    { proposal-id: uint }
    {
        total-votes: uint,
        unique-voters: uint,
        participation-rate: uint
    }
)

(define-public (record-vote (voter principal) (proposal-id uint) (power uint))
    (let
        (
            (current-stats (default-to { proposals-voted: u0, total-voting-power: u0, last-active-block: u0 } (map-get? voter-stats { voter: voter })))
            (current-proposal (default-to { total-votes: u0, unique-voters: u0, participation-rate: u0 } (map-get? proposal-analytics { proposal-id: proposal-id })))
        )
        (map-set voter-stats
            { voter: voter }
            {
                proposals-voted: (+ (get proposals-voted current-stats) u1),
                total-voting-power: (+ (get total-voting-power current-stats) power),
                last-active-block: block-height
            }
        )
        (ok (map-set proposal-analytics
            { proposal-id: proposal-id }
            {
                total-votes: (+ (get total-votes current-proposal) power),
                unique-voters: (+ (get unique-voters current-proposal) u1),
                participation-rate: u0 ;; Simplified for now
            }
        ))
    )
)

(define-read-only (get-voter-stats (voter principal))
    (map-get? voter-stats { voter: voter })
)

Functions (2)

FunctionAccessArgs
record-votepublicvoter: principal, proposal-id: uint, power: uint
get-voter-statsread-onlyvoter: principal