Source Code

;; AI Prediction Market
;; Market for AI predictions and outcomes

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

(define-map predictions
  uint
  {
    creator: principal,
    question: (string-ascii 128),
    stake: uint,
    resolved: bool,
    outcome: bool
  }
)

(define-read-only (get-prediction (prediction-id uint))
  (map-get? predictions prediction-id)
)

(define-public (create-prediction (question (string-ascii 128)) (stake uint))
  (let ((prediction-id (var-get next-prediction-id)))
    (try! (stx-transfer? stake tx-sender (as-contract tx-sender)))
    (map-set predictions prediction-id {
      creator: tx-sender,
      question: question,
      stake: stake,
      resolved: false,
      outcome: false
    })
    (var-set next-prediction-id (+ prediction-id u1))
    (ok prediction-id)
  )
)

(define-public (resolve-prediction (prediction-id uint) (outcome bool))
  (let ((prediction (unwrap! (map-get? predictions prediction-id) (err u100))))
    (asserts! (is-eq tx-sender contract-owner) (err u101))
    (asserts! (not (get resolved prediction)) (err u102))
    (map-set predictions prediction-id (merge prediction { resolved: true, outcome: outcome }))
    (ok true)
  )
)

Functions (3)

FunctionAccessArgs
get-predictionread-onlyprediction-id: uint
create-predictionpublicquestion: (string-ascii 128
resolve-predictionpublicprediction-id: uint, outcome: bool