1. Puzzle selection
Running openpuzzle run selects the lowest-numbered unsolved
puzzle currently available from the coordination service. A participant
can choose a specific puzzle explicitly. The public page displays the
selected puzzle address, reward, hexadecimal boundaries and aggregate
coverage so the research target is visible before any client joins.
2. Random non-overlapping allocation
The server assigns a random interval inside the puzzle keyspace and stores it as a database row with a unique assignment UUID. An interval already assigned or completed is not issued again. Cancelled work is eligible for recycling before fresh space is allocated, and recycled work restarts at the beginning of that interval. Completed ranges remain immutable evidence of prior coverage.
3. Backend-aware sizing without priority
OpenPuzzle uses observed speed to estimate how many keys a backend can test during the target assignment duration. CUDA, OpenCL and CPU workers can therefore receive differently sized intervals. This is an operational calculation, not a ranking system: fast hardware does not move ahead in a queue and slow hardware does not lose the right to receive work.
4. Local execution
The client constructs an explicit engine command containing the public target address, start and end keys, device and benchmark profile. GPU profiles are produced locally. OpenPuzzle tests a broader bounded matrix while respecting a conservative share of available video memory. Engine output is written into a private assignment workspace.
5. Lease and progress
While an assignment runs, the client periodically reports keys checked, checkpoint key and measured MKey/s. Each successful progress message renews the assignment lease. These values let the public statistics represent real activity while avoiding disclosure of private engine output.
6. Completion and cancellation
A clean engine exit is accepted as completed only when the reported
checkpoint is consistent with the full assigned range. Failed, cancelled
and expired states remain distinct. openpuzzle safestop lets
the current range finish and prevents a new claim; openpuzzle stop
is reserved for immediate cancellation.
7. Potential solution
A matching key changes the workflow. The client stops automatic execution, exports a protected local wallet record and displays an explicit action notice. Only non-secret assignment metadata may be reported for review. A puzzle is never marked solved automatically; independent blockchain verification is required.