1. Credentials
  2. Puzzles
  3. Puzzles Overview

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 solved2 days
Solution revealed3 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:

puzzle.verify(
puzzle.generate(msg.sender), // Unique starting position, seeded by the address of the solver.
_solution
)

Learn more

Waterfall