Source Code


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



Functions (19)

FunctionAccessArgs
set-connection-implpublicwho: principal
set-proposed-adminpublicwho: principal
set-adminpublicwho: principal
set-connection-snpublicconnection-sn-in: uint
increment-connection-snpublic
set-chain-idpublicchain-id-in: uint
set-validatorspublicvalidators-list: (list 50 (buff 100
set-validators-thresholdpublicthreshold: uint
set-receiptpublicsrc-chain-id: uint, conn-sn-in: uint, receipt: bool
is-connectionread-only
is-standard-principalread-onlywho: principal
get-adminread-only
get-proposed-adminread-only
get-connection-v3-implread-only
get-connection-snread-only
get-chain-idread-only
get-validatorsread-only
get-validators-thresholdread-only
get-receiptread-onlysrc-chain-id: uint, conn-sn-in: uint