Puzzles Overview
A CTF protocol, where players create and solve EVM puzzles to earn NFTs.
Introduction
A puzzle becomes available to solve by anyone as soon as an author adds it to the Curta contract. When a player submits a valid solution, a Flag NFT is minted to the solver, and they earn points, which are used to place them on the leaderboard.
Submission period
Immediately after a puzzle is added, the puzzle enters Phase 0, the period where nobody has solved the puzzle yet. Then, as players solve the puzzle, it progresses through 4 Phases:
Phase | Meaning | Length |
---|---|---|
No one solved puzzle | ∞ | |
1 person solved | 2 days | |
Solution revealed | 3 days | |
Submissions closed | ∞ |
Simply put, each puzzle's submission period lasts from the time it's added until 5 days after the first valid solution is submitted (aka First Blood).
Generative puzzles
Every puzzle must implement a generate(address)
function, which takes in the user's address as a seed and returns a unique starting position. This way, each puzzle is generative, and each solution is unique to the solver.
Since the protocol is 100% onchain, every submission is public. The generative aspect prevents front-running and allows for multiple winners: even if you see someone else's solution, you still have to figure out what the rules/constraints of the puzzle are and solve it from your starting position.
To put it more rigorously, the solve
function on Curta requires the following to return true
: