How it works
Three steps, one CLI. The signing happens entirely on your machine — no coordinator, no custodian, no account.
The flow
- Commit — hash your solution against the bounty's criteria and publish the commitment. Nothing about your identity leaves the machine.
- Prove — the CLI derives a one-way nullifier from your secret and signs a completion proof. Reveal it whenever you're ready to claim.
- Settle — anyone can verify the proof and the nullifier. Once it checks out, the reward releases to a fresh address you control.
1 · Commit
You bind your work to a specific bounty with a hiding commitment. This lets you timestamp that you had the solution, without revealing it yet.
$ tasknull commit --bounty zk-audit-114 --file ./solution.txt
2 · Prove
When you're ready to claim, generate a signed proof. It contains the commitment, a one-way nullifier derived from your secret and the bounty, and the fresh payout address — all signed with your identity key.
$ tasknull prove --bounty zk-audit-114 --file ./solution.txt \
--to 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU --out proof.json
3 · Settle
Anyone can verify the proof — no trust in you required. Settling burns the nullifier so the same work can never be claimed twice.
$ tasknull verify proof.json
$ tasknull claim proof.json
Why double-claims fail
The nullifier is deterministic for a given (secret, bounty) pair. Proving the same bounty again with the same identity produces the same nullifier — so the second claim collides with the first and is rejected, while the nullifier still reveals nothing about your secret.