Source Code

;; Contract: Tip Jar
;; Description: Collects donations and tracks the top donor.

(define-data-var top-donor principal tx-sender)
(define-data-var top-amount uint u0)

(define-public (tip (amount uint))
    (begin
        ;; Transfer STX from sender to contract owner (or this contract)
        (try! (stx-transfer? amount tx-sender (as-contract tx-sender)))
        
        ;; Update top donor if amount is higher
        (if (> amount (var-get top-amount))
            (begin
                (var-set top-donor tx-sender)
                (var-set top-amount amount)
                (ok "New Top Donor!")
            )
            (ok "Thank you for the tip")
        )
    )
)

(define-read-only (get-top-donor)
    (ok { user: (var-get top-donor), amount: (var-get top-amount) })
)

Functions (2)

FunctionAccessArgs
tippublicamount: uint
get-top-donorread-only