;; Interceptor Contract
;; A contract with 10 non-payable write functions
(define-data-var counter uint u0)
(define-map registry principal { name: (string-ascii 20), active: bool })
;; 1. Update counter
(define-public (increment-counter)
(begin
(var-set counter (+ (var-get counter) u1))
(ok (var-get counter))
)
)
;; 2. Decrement counter
(define-public (decrement-counter)
(begin
(var-set counter (- (var-get counter) u1))
(ok (var-get counter))
)
)
;; 3. Register a user
(define-public (register-user (name (string-ascii 20)))
(begin
(map-set registry tx-sender { name: name, active: true })
(ok true)
)
)
;; 4. Deactivate a user
(define-public (deactivate-user)
(begin
(map-set registry tx-sender { name: "unknown", active: false })
(ok true)
)
)
;; 5. Reset counter
(define-public (reset-counter)
(begin
(var-set counter u0)
(ok true)
)
)
;; 6. Intercept transaction (mock logic)
(define-public (intercept-signal (signal-id uint))
(begin
(print { event: "intercept", signal: signal-id, sender: tx-sender })
(ok signal-id)
)
)
;; 7. Toggle status
(define-public (toggle-active (status bool))
(begin
(map-set registry tx-sender { name: "user", active: status })
(ok status)
)
)
;; 8. Log message
(define-public (log-audit (message (string-ascii 50)))
(begin
(print message)
(ok true)
)
)
;; 9. Set specific value
(define-public (set-counter (val uint))
(begin
(var-set counter val)
(ok val)
)
)
;; 10. Clear registry entry
(define-public (clear-registry)
(begin
(map-delete registry tx-sender)
(ok true)
)
)