Source Code

;; referral-tracker contract

(define-map referrals principal { referrer: principal, count: uint })
(define-map referred-by principal principal)

(define-read-only (get-referrer (user principal))
  (map-get? referred-by user)
)

(define-read-only (get-referral-count (user principal))
  (default-to u0 (get count (map-get? referrals user)))
)

(define-public (register-referral (referrer principal))
  (begin
    (asserts! (is-none (map-get? referred-by tx-sender)) (err u1))
    (map-set referred-by tx-sender referrer)
    (map-set referrals referrer { referrer: referrer, count: (+ (get-referral-count referrer) u1) })
    (ok true)
  )
)

Functions (3)

FunctionAccessArgs
get-referrerread-onlyuser: principal
get-referral-countread-onlyuser: principal
register-referralpublicreferrer: principal