Source Code

;; title: ext-sponsored-sbtc-transfer
;; version: 1.0
;; summary: Transfers SBTC tokens and pays fees to sponsor if any
;; description:

(define-constant err-invalid-payload (err u500))

(define-private (sbtc-transfer
    (amount uint)
    (from principal)
    (to principal)
  )
  (contract-call? 'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token transfer
    amount from to none
  )
)

(define-public (call (payload (buff 2048)))
  (let ((details (unwrap!
      (from-consensus-buff? {
        amount: uint,
        to: principal,
        fees: uint,
      }
        payload
      )
      err-invalid-payload
    )))
    (try! (sbtc-transfer (get amount details) tx-sender (get to details)))
    (match tx-sponsor?
      spnsr (let ((fees (get fees details)))
        (and (> fees u0) (try! (sbtc-transfer fees tx-sender spnsr)))
      )
      true
    )
    (ok true)
  )
)

Functions (1)

FunctionAccessArgs
callpublicpayload: (buff 2048