Source Code

;; Order Book DEX
;; Decentralized exchange with order book

(define-constant contract-owner tx-sender)
(define-data-var next-order-id uint u1)

(define-map orders
  uint
  {
    trader: principal,
    amount: uint,
    price: uint,
    order-type: (string-ascii 4),
    filled: bool
  }
)

(define-read-only (get-order (order-id uint))
  (map-get? orders order-id)
)

(define-public (place-order (amount uint) (price uint) (order-type (string-ascii 4)))
  (let ((order-id (var-get next-order-id)))
    (map-set orders order-id {
      trader: tx-sender,
      amount: amount,
      price: price,
      order-type: order-type,
      filled: false
    })
    (var-set next-order-id (+ order-id u1))
    (ok order-id)
  )
)

(define-public (fill-order (order-id uint))
  (let ((order (unwrap! (map-get? orders order-id) (err u100))))
    (asserts! (not (get filled order)) (err u101))
    (map-set orders order-id (merge order { filled: true }))
    (ok true)
  )
)

Functions (3)

FunctionAccessArgs
get-orderread-onlyorder-id: uint
place-orderpublicamount: uint, price: uint, order-type: (string-ascii 4
fill-orderpublicorder-id: uint