Source Code

;; Commission for MiamiCoin ($MIA)

(impl-trait 'SP2BSV94A650WGZ2YZ5Y8HM93W01NGT4GY0W2BN3P.commission-trait.commission-trait)

;; errors
(define-constant err-failed-to-transfer-ft u400)
(define-constant err-not-authorized u401)

;; constants
(define-constant contract-owner tx-sender)
(define-constant stackerdao-treasury 'SP2BSV94A650WGZ2YZ5Y8HM93W01NGT4GY0W2BN3P.stackerdao-treasury)
(define-constant treasury .citypacks-treasury)

;; variables
(define-data-var artist-address principal 'SP3R91G719XMPED4S1ZP37YHF30CAV1KGEKB8YXDT)

(define-data-var price uint u20000)

(define-public (send-funds)
  (begin
    (unwrap! (contract-call? 'SP466FNC0P7JWTNM2R9T199QRZN1MYEDTAR0KP27.miamicoin-token transfer (/ (* (var-get price) u2) u100) tx-sender stackerdao-treasury (some 0x11)) (err err-failed-to-transfer-ft))
    (unwrap! (contract-call? 'SP466FNC0P7JWTNM2R9T199QRZN1MYEDTAR0KP27.miamicoin-token transfer (/ (* (var-get price) u5) u100) tx-sender treasury (some 0x11)) (err err-failed-to-transfer-ft))
    (unwrap! (contract-call? 'SP466FNC0P7JWTNM2R9T199QRZN1MYEDTAR0KP27.miamicoin-token transfer (/ (* (var-get price) u75) u100) tx-sender 'SP1SN78YDPHJ4CN1NNKZPYYVMGBGVPJ3RM1VA6Y3F (some 0x11)) (err err-failed-to-transfer-ft))
    (if (not (is-eq tx-sender (var-get artist-address)))
      (unwrap! (contract-call? 'SP466FNC0P7JWTNM2R9T199QRZN1MYEDTAR0KP27.miamicoin-token transfer (/ (* (var-get price) u18) u100) tx-sender (var-get artist-address) (some 0x11)) (err err-failed-to-transfer-ft))
      false
    )
    (ok true)
  )
)

(define-public (pay (sale-price uint) (owner principal))
  (begin
    (unwrap! (stx-transfer? (/ (* sale-price u1) u100) tx-sender stackerdao-treasury) (err err-failed-to-transfer-ft))
    (unwrap! (stx-transfer? (/ (* sale-price u10) u100) tx-sender (var-get artist-address)) (err err-failed-to-transfer-ft))
    (ok true)
  )
)

(define-public (set-price (new-price uint))
  (if (is-eq tx-sender contract-owner)
    (begin 
      (var-set price new-price)
      (ok true)
    )
    (err err-not-authorized)
  )
)

Functions (3)

FunctionAccessArgs
send-fundspublic
paypublicsale-price: uint, owner: principal
set-pricepublicnew-price: uint