Source Code


;; 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)
    )
)

Functions (10)

FunctionAccessArgs
increment-counterpublic
decrement-counterpublic
register-userpublicname: (string-ascii 20
deactivate-userpublic
reset-counterpublic
intercept-signalpublicsignal-id: uint
toggle-activepublicstatus: bool
log-auditpublicmessage: (string-ascii 50
set-counterpublicval: uint
clear-registrypublic