tasknull docs
Home GitHub
/ cli reference

CLI reference

Every command, its options, and a complete walkthrough you can copy-paste. Run tasknull --help any time.

Commands at a glance

CommandWhat it does
tasknull initCreate your local identity (secret + Ed25519 keys).
tasknull whoamiPrint your public local identity.
tasknull commitPublish a hiding commitment for a solution.
tasknull proveEmit a signed proof + one-way nullifier.
tasknull verifyVerify a proof JSON.
tasknull claimSettle a proof — burns the nullifier.
tasknull spentList nullifiers spent on this machine.

tasknull init

Creates your identity in ~/.tasknull/identity.json. Use --force to overwrite an existing one.

$ tasknull init
✓ identity created  → ~/.tasknull/identity.json

tasknull whoami

Prints your shareable local identity key. This key is separate from the fresh Arc payout address carried by a proof.

$ tasknull whoami

tasknull commit

Binds a solution file to a bounty and prints the commitment.

OptionRequiredDescription
--bounty <id>yesBounty identifier.
--file <path>yesPath to your solution.
$ tasknull commit --bounty zk-audit-114 --file solution.txt

tasknull prove

Generates a signed completion proof with a one-way nullifier.

OptionRequiredDescription
--bounty <id>yesBounty identifier.
--file <path>yesPath to your solution.
--to <ARC_ADDRESS>yesFresh Arc payout address (EVM format: 0x plus 40 hex characters).
--out <path>noWrite the proof JSON to a file (default: stdout).
--scope <text>noOptional scope label, included in the signed payload.
--reward <text>noOptional reward label, included in the signed payload.
$ tasknull prove --bounty zk-audit-114 --file solution.txt \
    --to 0x7E57d0040527699D7fE97A76D3fca9ec6AFB4A21 --out proof.json

tasknull verify

Checks a proof and exits 0 if valid, 1 otherwise. Runs four checks: bounty membership / commitment, signature integrity, nullifier unspent, and scope & reward match.

$ tasknull verify proof.json

tasknull claim

Verifies the proof, then burns the nullifier by recording it locally. A second claim of the same work fails.

$ tasknull claim proof.json
Settlement is local in v0.1 — the nullifier is written to ~/.tasknull/spent.json. Arc Testnet settlement ships with the $TNULL contracts.

tasknull spent

Lists the nullifiers burned on this machine.

$ tasknull spent

Full walkthrough

Copy-paste this end to end to see the whole lifecycle, including double-claim rejection.

# 1. create your identity
$ tasknull init

# 2. write a solution (anything — code, a writeup, a patch)
$ echo "my fix for the reentrancy bug" > solution.txt

# 3. prove completion, payable to a fresh address
$ tasknull prove --bounty zk-audit-114 --file solution.txt \
    --to 0x7E57d0040527699D7fE97A76D3fca9ec6AFB4A21 --out proof.json

# 4. anyone can verify it
$ tasknull verify proof.json        # → ✓ VALID

# 5. settle — burns the nullifier
$ tasknull claim proof.json         # → ✓ settled

# 6. try to claim the same work again
$ tasknull claim proof.json         # → ✗ rejected (nullifier already spent)