Source Code

;; task-board contract

(define-map tasks uint { title: (string-utf8 100), owner: principal, completed: bool })
(define-data-var task-count uint u0)

(define-read-only (get-task (id uint))
  (map-get? tasks id)
)

(define-public (create-task (title (string-utf8 100)))
  (let ((id (+ (var-get task-count) u1)))
    (map-set tasks id { title: title, owner: tx-sender, completed: false })
    (var-set task-count id)
    (ok id)
  )
)

(define-public (complete-task (id uint))
  (match (map-get? tasks id)
    task (begin
      (asserts! (is-eq (get owner task) tx-sender) (err u1))
      (map-set tasks id (merge task { completed: true }))
      (ok true)
    )
    (err u2)
  )
)

Functions (3)

FunctionAccessArgs
get-taskread-onlyid: uint
create-taskpublictitle: (string-utf8 100
complete-taskpublicid: uint