Source Code

;; Simple message board contract
(define-map messages {id: uint} {author: principal, content: (string-utf8 512), timestamp: uint})
(define-data-var message-counter uint u0)

(define-read-only (get-message (id uint))
  (map-get? messages {id: id})
)

(define-read-only (get-total-messages)
  (var-get message-counter)
)

(define-public (post-message (content (string-utf8 512)))
  (let ((id (var-get message-counter)))
    (begin
      (asserts! (> (len content) u0) (err u1))
      (map-set messages {id: id} {
        author: tx-sender,
        content: content,
        timestamp: burn-block-height
      })
      (ok (var-set message-counter (+ id u1)))
    )
  )
)

Functions (3)

FunctionAccessArgs
get-messageread-onlyid: uint
get-total-messagesread-only
post-messagepubliccontent: (string-utf8 512