Source Code

(define-map history principal
 {trades: uint, wins: uint, losses: uint, volume: uint, last-trade: uint})
(define-public (record-trade (amt uint))
 (let ((h (default-to {trades: u0, wins: u0, losses: u0, volume: u0, last-trade: u0}
           (map-get? history tx-sender))))
  (ok (map-set history tx-sender
   (merge h {trades: (+ (get trades h) u1),
             volume: (+ (get volume h) amt),
             last-trade: stacks-block-height})))))
(define-public (record-win)
 (let ((h (default-to {trades: u0, wins: u0, losses: u0, volume: u0, last-trade: u0}
           (map-get? history tx-sender))))
  (ok (map-set history tx-sender
   (merge h {wins: (+ (get wins h) u1)})))))
(define-public (record-loss)
 (let ((h (default-to {trades: u0, wins: u0, losses: u0, volume: u0, last-trade: u0}
           (map-get? history tx-sender))))
  (ok (map-set history tx-sender
   (merge h {losses: (+ (get losses h) u1)})))))
(define-read-only (get-history (u principal))
 (default-to {trades: u0, wins: u0, losses: u0, volume: u0, last-trade: u0}
  (map-get? history u)))

Functions (4)

FunctionAccessArgs
record-tradepublicamt: uint
record-winpublic
record-losspublic
get-historyread-onlyu: principal