Source Code

;; ============================================
;; GUARDIAN NETWORK - Trusted Timer Extenders
;; Clarity 4 Smart Contract
;; ============================================

(define-constant ERR_NOT_AUTHORIZED (err u401))

(define-map guardians { user: principal, guardian: principal } bool)

(define-public (add-guardian (guardian principal))
  (begin
    (asserts! (not (is-eq guardian tx-sender)) (err u400))
    (map-set guardians { user: tx-sender, guardian: guardian } true)
    (ok true)
  )
)

(define-public (remove-guardian (guardian principal))
  (begin
    (asserts! (not (is-eq guardian tx-sender)) (err u400))
    (map-delete guardians { user: tx-sender, guardian: guardian })
    (ok true)
  )
)

(define-public (extend-timer (user principal))
  (begin
    (asserts! (default-to false (map-get? guardians { user: user, guardian: tx-sender })) ERR_NOT_AUTHORIZED)
    (as-contract (contract-call? .heartbeat-core guardian-pulse user))
  )
)

(define-read-only (is-guardian (user principal) (guardian principal))
  (default-to false (map-get? guardians { user: user, guardian: guardian }))
)

Functions (4)

FunctionAccessArgs
add-guardianpublicguardian: principal
remove-guardianpublicguardian: principal
extend-timerpublicuser: principal
is-guardianread-onlyuser: principal, guardian: principal