Ship code. Get paid in shielded Zcash. Keep your wallet private.
Fix a labelled issue in an approved, opted-in repo. When a maintainer merges it, you claim your share of the bounty to the wallet you committed to. Here's exactly how, and the rules the enclave enforces.
- Commitment generator
- Claim from the enclave
- Pays only for merged pull requests
Step 1
Commit
Before your PR is merged, lock in where you want to be paid, without saying where. You publish a hash of your address and a random salt. Nobody can work backwards from it, and only you can prove it was yours.
SHA-256("pom-commit-v1" ‖ 0x00 ‖ address ‖ 0x00 ‖ salt)
Step 2
Claim
Once 10 minutes have passed since the merge, reveal your address and salt to the enclave. They’re encrypted to the enclave’s attested key, so only the enclave can read them.
What the enclave checks, in order
- 1The repo is on the approved list, or has launchpad money set aside for it
- 2The PR is merged
- 3The repo has opted in, and approved repos are old enough
- 4Someone other than you merged it
- 5The issue has the bounty label, and you didn't open it yourself
- 610 minutes have passed since the merge
- 7Your commitment was posted by you, before the merge
- 8Re-hashing your address and salt gives your commitment
- 9The merged code isn't a close copy of an earlier pull request on the issue
- 10Your share of the split fits the caps and the repo's budget, and isn't already paid
Any failure means no payment, and the reason is logged.
Step 3
Confirm receipt
Your wallet shows the payment arriving. Its transaction id matches the public receipt for your PR, and you can check that receipt’s signature yourself, in your browser, on the payouts page.
Your work is public. Your wallet isn't.
Public
- Your GitHub handle and your PR, as always
- Your commitment hash
- The amount and the transaction id
- The enclave's signed receipt
Private
- Your wallet address
- Which wallet each payout went to
Who did the work and how much they earned are public. Moving the exact amount from the shielded pool to an exchange can link it back. What this can’t do
The rules, in full
Today’s treasury cap is 0.50TAZ per pull request.
- The pull request is merged into an opted-in repo, on an issue that carries the repo's bounty label. The repo is on the approved list, or a launchpad coin has set money aside for it.
- Your commitment is a comment on the PR, posted by you (the PR author or a credited co-author), before the merge.
- Don't edit the comment. If you post more than one, the last one before the merge counts.
- Payouts go to a unified address with an Orchard receiver. Transparent and Sapling-only addresses are refused, and so is any address that carries an expiry, because it could lapse before you claim.
- The repo's opt-in file must still be there when you claim.