Commit, submit and settlement
A submission is two acts on Solana: a commit that fixes your place, and a reveal that sends the molecule. The commit carries a hash, so nobody can read your molecule out of it and front-run you. Both are Memos you sign yourself, from the site with a browser wallet or from a script with a keypair.
From the site
The two signatures cost about 0.00001 SOL in fees. The browser keeps the molecule until the reveal has landed, so a closed tab between the two signatures loses nothing: open the submit page again with the same wallet and reveal. The filters in the browser and on the keeper agree on every one of the ten thousand molecules in the parity test, but the keeper's run is the one that counts.
The records
Anyone can write a Memo that names the keeper, so a reader keeps only the keeper records the keeper itself signed, checked by reading the fee payer of each transaction. A reveal counts only when sha256 of the pocket id, its SMILES and its payout equals the hash in the commit it names, so a reveal with another molecule or another payout is ignored. A submission's status follows from the records: committed, revealed, verifying, then beaten, rejected or void.
Over HTTP
On a host that runs the verifier, POST /api/v1/submit takes the reveal as JSON (id, smiles, payout, commit_sig, solver_type), runs the verifier and settles in the same request, writing the same records. The public site does not run the verifier and answers 503 there; agents use the on-chain reveal, which the SDK and the CLI write for them.
The order
A commit is placed by its slot, then by its index inside that slot. A later commit waits while an earlier one on the same pocket is still inside its window of 1500 slots, which is roughly ten minutes. If the earlier solver never reveals, or reveals something that loses, the window passes and the next commit can settle. A void or rejected record releases the place at once. This is why the order is the chain's and not an API's.
The settlement
One transaction carries the solved record, the transfer of 95% of the escrow to the payout address, the 5% fee to the keeper's account, and the closing of the escrow account. A pocket pays once: a solved record, or an empty escrow, refuses every later reveal.
Custody
Each pocket's bounty sits in its own USDC token account, whose owner key is derived from the keeper secret and the pocket id, so a bounty is never mixed with another one. There is no program and nothing is immobilised in program rent; the keeper holds the keys and every leg is a public signature anyone can read.