Working with Clarity
1
2
Modify the donate-stx function
;; Donate STX. Pass amount in microstacks. Optionally include a message.
(define-public (donate-stx (amount uint) (message (optional (string-utf8 280))))
(begin
(asserts! (var-get is-campaign-initialized) err-not-initialized)
(asserts! (not (var-get is-campaign-cancelled)) err-campaign-cancelled)
(asserts!
(< burn-block-height
(+ (var-get campaign-start) (var-get campaign-duration))
)
err-campaign-ended
)
(try! (stx-transfer? amount tx-sender (as-contract tx-sender)))
(map-set stx-donations tx-sender
(+ (default-to u0 (map-get? stx-donations tx-sender)) amount)
)
;; Handle the optional message
(match message
msg (map-set donation-messages tx-sender msg)
true
)
(var-set total-stx (+ (var-get total-stx) amount))
(var-set donation-count (+ (var-get donation-count) u1))
(ok true)
)
)(match message
msg (map-set donation-messages tx-sender msg) ;; If some: bind to `msg`, execute this
true ;; If none: return true, continue
)3
Modify the donate-sbtc function
;; Donate sBTC. Pass amount in Satoshis. Optionally include a message.
(define-public (donate-sbtc (amount uint) (message (optional (string-utf8 280))))
(begin
(asserts! (var-get is-campaign-initialized) err-not-initialized)
(asserts! (not (var-get is-campaign-cancelled)) err-campaign-cancelled)
(asserts!
(< burn-block-height
(+ (var-get campaign-start) (var-get campaign-duration))
)
err-campaign-ended
)
(try! (contract-call? 'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token
transfer amount contract-caller (as-contract tx-sender) none
))
(map-set sbtc-donations tx-sender
(+ (default-to u0 (map-get? sbtc-donations tx-sender)) amount)
)
(match message
msg (map-set donation-messages tx-sender msg)
true
)
(var-set total-sbtc (+ (var-get total-sbtc) amount))
(var-set donation-count (+ (var-get donation-count) u1))
(ok true)
)
)Last updated
Was this helpful?