Source Code

;; loom-guild -- textile weaving guild membership
(define-data-var member-count uint u0)
(define-map members principal { name: (string-ascii 30), skill: (string-ascii 20), products: uint })
(define-data-var product-count uint u0)
(define-map products uint { maker: principal, type: (string-ascii 20), price: uint, block: uint })
(define-public (join-guild (name (string-ascii 30)) (skill (string-ascii 20)))
  (begin (var-set member-count (+ (var-get member-count) u1))
    (map-set members tx-sender { name: name, skill: skill, products: u0 }) (ok true)))
(define-public (add-product (type (string-ascii 20)) (price uint))
  (let ((id (+ (var-get product-count) u1)))
    (var-set product-count id)
    (map-set products id { maker: tx-sender, type: type, price: price, block: stacks-block-height }) (ok id)))
(define-read-only (get-member (addr principal)) (map-get? members addr))
(define-read-only (get-product (id uint)) (map-get? products id))

Functions (4)

FunctionAccessArgs
join-guildpublicname: (string-ascii 30
add-productpublictype: (string-ascii 20
get-memberread-onlyaddr: principal
get-productread-onlyid: uint