Source Code

;; Guessing Game Contract

(define-constant GAME-OWNER tx-sender)
(define-constant GUESS-FEE u100000) ;; 0.1 STX to play
;; The hash of the number "42" (simplified for demo)
(define-constant SECRET-HASH 0x736563726574206e756d626572203432) 

(define-data-var jackpot uint u0)

;; Read the current jackpot size
(define-read-only (get-jackpot)
  (var-get jackpot)
)

;; Submit a guess
(define-public (guess (attempt uint))
  (begin
    ;; 1. Pay the entry fee to the jackpot
    (try! (stx-transfer? GUESS-FEE tx-sender (as-contract tx-sender)))
    (var-set jackpot (+ (var-get jackpot) GUESS-FEE))

    ;; 2. Check if the guess is 42 (The answer to life, the universe, and everything)
    (if (is-eq attempt u42)
        (let ((winnings (var-get jackpot)))
          (var-set jackpot u0)
          ;; Send the entire jackpot to the winner!
          (try! (as-contract (stx-transfer? winnings (as-contract tx-sender) tx-sender)))
          (ok "WINNER! You took the jackpot!"))
        (ok "Wrong guess. Your fee was added to the jackpot.")
    )
  )
)

Functions (2)

FunctionAccessArgs
get-jackpotread-only
guesspublicattempt: uint