Source Code

;; Wallet Links

(define-map wallets
  principal
  { linked: bool, label: (string-ascii 30) }
)

(define-public (link-wallet (label (string-ascii 30)))
  (begin
    (asserts! (is-none (map-get? wallets tx-sender)) (err u409))
    (map-set wallets tx-sender { linked: true, label: label })
    (ok true)
  )
)

(define-public (update-label (label (string-ascii 30)))
  (let ((wallet (unwrap! (map-get? wallets tx-sender) (err u404))))
    (map-set wallets tx-sender (merge wallet { label: label }))
    (ok true)
  )
)

(define-public (unlink-wallet)
  (begin
    (asserts! (is-some (map-get? wallets tx-sender)) (err u404))
    (map-delete wallets tx-sender)
    (ok true)
  )
)

(define-read-only (get-wallet (user principal))
  (map-get? wallets user)
)

Functions (4)

FunctionAccessArgs
link-walletpubliclabel: (string-ascii 30
update-labelpubliclabel: (string-ascii 30
unlink-walletpublic
get-walletread-onlyuser: principal