Source Code

;; SatGuard Oracle Registry
(define-constant err-owner (err u600))
(define-constant err-dup (err u601))
(define-constant err-nf (err u602))
(define-data-var admin principal tx-sender)
(define-data-var o-count uint u0)
(define-map oracles {oracle: principal} {name: (string-ascii 30),ra: uint,active: bool})
(define-read-only (is-oracle (oracle principal)) (is-some (map-get? oracles {oracle: oracle})))
(define-read-only (get-oracle (oracle principal)) (map-get? oracles {oracle: oracle}))
(define-read-only (get-oracle-count) (var-get o-count))
(define-public (register-oracle (oracle principal) (name (string-ascii 30)))
  (begin
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (asserts! (not (is-oracle oracle)) err-dup)
    (map-set oracles {oracle: oracle} {name: name,ra: block-height,active: true})
    (var-set o-count (+ (var-get o-count) u1))
    (print {e: "oracle-registered",oracle: oracle,name: name})
    (ok true)))
(define-public (remove-oracle (oracle principal))
  (let ((o (unwrap! (map-get? oracles {oracle: oracle}) err-nf)))
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (map-set oracles {oracle: oracle} (merge o {active: false}))
    (print {e: "oracle-removed",oracle: oracle})
    (ok true)))

Functions (5)

FunctionAccessArgs
is-oracleread-onlyoracle: principal
get-oracleread-onlyoracle: principal
get-oracle-countread-only
register-oraclepublicoracle: principal, name: (string-ascii 30
remove-oraclepublicoracle: principal