Source Code

;; Quran Audio - Quran recitation recording fund
;; Halal - preserving Quran recitation
(define-constant CONTRACT-OWNER tx-sender)
(define-constant ERR-AUTH (err u401))
(define-constant ERR-NONE (err u404))
(define-data-var recitation-count uint u0)
(define-data-var total-donated uint u0)
(define-map recitations uint { reciter: (string-utf8 100), surah: (string-utf8 50), hash: (string-ascii 64), block: uint })
(define-map audio-donors principal uint)
(define-public (donate (amount uint))
  (let ((prev (default-to u0 (map-get? audio-donors tx-sender))))
    (try! (stx-transfer? amount tx-sender CONTRACT-OWNER))
    (map-set audio-donors tx-sender (+ prev amount))
    (var-set total-donated (+ (var-get total-donated) amount)) (ok amount)))
(define-public (add-recitation (reciter (string-utf8 100)) (surah (string-utf8 50)) (hash (string-ascii 64)))
  (let ((id (+ (var-get recitation-count) u1)))
    (asserts! (is-eq tx-sender CONTRACT-OWNER) ERR-AUTH)
    (map-set recitations id { reciter: reciter, surah: surah, hash: hash, block: stacks-block-height })
    (var-set recitation-count id) (ok id)))
(define-read-only (get-recitation (id uint)) (map-get? recitations id))
(define-read-only (get-donor (who principal)) (ok (default-to u0 (map-get? audio-donors who))))
(define-read-only (get-stats) (ok { recitations: (var-get recitation-count), donated: (var-get total-donated) }))

Functions (5)

FunctionAccessArgs
donatepublicamount: uint
add-recitationpublicreciter: (string-utf8 100
get-recitationread-onlyid: uint
get-donorread-onlywho: principal
get-statsread-only