tasknull docs
Home GitHub
/ how it works

How it works

Three steps, one CLI. The signing happens entirely on your machine — no coordinator, no custodian, no account.

The flow

  1. Commit — hash your solution against the bounty's criteria and publish the commitment. Nothing about your identity leaves the machine.
  2. Prove — the CLI derives a one-way nullifier from your secret and signs a completion proof. Reveal it whenever you're ready to claim.
  3. 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
The payout goes to the address in the proof, which has no on-chain link to your identity key. A verifier confirms a valid hunter completed the work — never which one.

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.

Try it: claim a proof twice and watch the second attempt fail. See the CLI reference for a full walkthrough.