;; title: connection-v3-state
;; version:
;; summary:
;; description:
;; constants
(define-constant err-not-connection (err u1000))
(define-constant err-not-standard-principal (err u1001))
;;
;; data vars
(define-data-var connection-v3-impl principal tx-sender)
(define-data-var admin principal tx-sender)
(define-data-var proposed-admin (optional principal) none)
(define-data-var connection-sn uint u0)
(define-data-var chain-nid uint u0)
(define-data-var validators (list 50 (buff 100)) (list))
(define-data-var validators-threshold uint u0)
;;
;; data maps
(define-map receipts {source-chain-id: uint, conn-sn: uint} bool)
;;
;; public functions
(define-public (set-connection-impl (who principal))
(begin
(try! (is-connection))
(try! (is-standard-principal who))
(ok (var-set connection-v3-impl who))
)
)
(define-public (set-proposed-admin (who principal))
(begin
(try! (is-connection))
(try! (is-standard-principal who))
(ok (var-set proposed-admin (some who)))
)
)
(define-public (set-admin (who principal))
(begin
(try! (is-connection))
(try! (is-standard-principal who))
(var-set admin who)
(ok (var-set proposed-admin none))
)
)
(define-public (set-connection-sn (connection-sn-in uint))
(begin
(try! (is-connection))
(ok (var-set connection-sn connection-sn-in))))
(define-public (increment-connection-sn)
(begin
(try! (is-connection))
(var-set connection-sn (+ (var-get connection-sn) u1))
(ok (var-get connection-sn))))
(define-public (set-chain-id (chain-id-in uint))
(begin
(try! (is-connection))
(ok (var-set chain-nid chain-id-in))))
(define-public (set-validators (validators-list (list 50 (buff 100))))
(begin
(try! (is-connection))
(ok (var-set validators validators-list))))
(define-public (set-validators-threshold (threshold uint))
(begin
(try! (is-connection))
(ok (var-set validators-threshold threshold))
))
(define-public (set-receipt (src-chain-id uint) (conn-sn-in uint) (receipt bool))
(begin
(try! (is-connection))
(ok (map-set receipts {source-chain-id: src-chain-id, conn-sn: conn-sn-in} receipt))
))
;;
;; read only functions
(define-read-only (is-connection)
(ok (asserts! (is-eq contract-caller (var-get connection-v3-impl)) err-not-connection))
)
(define-read-only (is-standard-principal (who principal))
(ok (asserts! (is-standard who) err-not-standard-principal))
)
(define-read-only (get-admin) (var-get admin))
(define-read-only (get-proposed-admin) (var-get proposed-admin))
(define-read-only (get-connection-v3-impl) (var-get connection-v3-impl))
(define-read-only (get-connection-sn) (var-get connection-sn))
(define-read-only (get-chain-id) (var-get chain-nid))
(define-read-only (get-validators) (var-get validators))
(define-read-only (get-validators-threshold) (var-get validators-threshold))
(define-read-only (get-receipt (src-chain-id uint) (conn-sn-in uint))
(default-to false (map-get? receipts {source-chain-id: src-chain-id, conn-sn: conn-sn-in})))
;;