Source Code

(define-constant O tx-sender)
(define-constant E1 (err u1000))
(define-map versions (string-ascii 32) {version: uint, address: principal, block: uint})
(define-map version-history {name: (string-ascii 32), ver: uint} principal)
(define-public (register-upgrade (name (string-ascii 32)) (addr principal))
 (begin (asserts! (is-eq tx-sender O) E1)
  (let ((cur (default-to {version: u0, address: O, block: u0}
              (map-get? versions name)))
        (nv (+ (get version cur) u1)))
   (map-set versions name {version: nv, address: addr, block: stacks-block-height})
   (map-set version-history {name: name, ver: nv} addr)
   (ok nv))))
(define-read-only (get-current (name (string-ascii 32)))
 (map-get? versions name))
(define-read-only (get-version (name (string-ascii 32)) (ver uint))
 (map-get? version-history {name: name, ver: ver}))

Functions (3)

FunctionAccessArgs
register-upgradepublicname: (string-ascii 32
get-currentread-onlyname: (string-ascii 32
get-versionread-onlyname: (string-ascii 32