The contract
PayerAnchor on Ethereum Sepolia. Unowned, immutable, permissionless: anyone can call it, and nobody can upgrade it. It is a trust root, so it has no admin to compromise.
The commitment
address
required
The worker’s wallet. This becomes the credential’s subject.
uint256
required
Base units of a six-decimal token. $2,500 is
2500000000. Must fit in a uint64; the circuit holds it as one.uint256
required
Your pay-cycle counter, incrementing by one. Payer-local: your period 7 has nothing to do with anyone else’s. The circuit requires three consecutive periods, so gaps make a window unprovable.
bytes32
required
See below. This choice decides whether the commitment hides anything.
The salt decides your privacy
- Random and secret (recommended)
- Deterministic (on-chain payers only)
32 bytes from a CSPRNG, kept by the payer and worker and never published.The commitment is then hiding: nobody can recover the amount from it, because they cannot guess the salt.
Anchoring
AlreadyAnchored. Scoping is per payer, so two payers may legitimately anchor the same commitment.
Delivering the slip
If you used a random salt, the worker needs the recipient, amount, period, salt and commitment to prove anything. Treat that complete record as payslip data and never publish a real preimage in documentation, source control or logs. The shape of a slip, with made-up values. Nothing below is anchored anywhere; the commitment is whatshared/commitment.ts returns for these inputs, so you can recompute it to check the encoding:
Direct payer-to-worker delivery gives the strongest privacy because Orru never sees the preimage. In the current testnet demo, an authenticated Orru route may deliver or derive the demo slip for the connected wallet. The exact amount and salt are still never published on-chain, placed in the credential, shown to a lender or sent to a remote proving service, but the demo does not hide them from the Orru server.
Then what
A relayer picks up yourPaymentAnchored event, waits for the block to be attested, and submits the Attestcoin proof to Creditcoin, typically within minutes. After that the worker can build a proof and issue a statement whenever they like.
You do not have to run that relayer, and it needs no permission from you.