What you see
The Payslips screen lists your pay cycles, newest first, with an anchored badge on each cycle that has been committed to the chain. Selecting a cycle expands its recipient list, its anchor status, and a download control. A single Anchor cycle action commits the whole cycle at once.Cycles list
How it works
1
Generate payslips for a run
After a payroll run settles, generate the cycle’s payslips. Each document is built for one
contractor and encrypted to that contractor’s public viewing key, so only the holder of the
matching key can open it. Your amounts, read from your private ledger, populate each
payslip on your device.
2
Anchor the cycle on-chain
Confiroll commits the whole cycle as a single Merkle root to the on-chain payslip anchor. It
stores only that hash. It never writes the payslip contents and never writes an amount. This
step costs you 0 XLM, because the fee is sponsored.
3
Contractors download and verify
Each contractor downloads their payslip, decrypts it locally with their own viewing key, and
verifies it against the on-chain anchor. If the document matches the anchored fingerprint,
it is authentic and unaltered.
What is on-chain versus off-chain
On-chain
One Merkle root per cycle: a single fingerprint that commits to every payslip in the cycle
at once. No contents. No names. No amounts. Just a hash anyone can check against.
Off-chain
The payslip documents themselves, each end-to-end encrypted to its contractor. They stay
encrypted at rest and are readable only by the contractor who holds the matching viewing
key.
Anchoring is tamper-evidence, not publication. The anchor lets anyone confirm that a
payslip has not changed since it was issued. It does not put the payslip, the contractor, or
the amount on-chain. The figure stays inside the encrypted document, which never leaves the
off-chain store in readable form.
One anchor for the whole cycle
Because the entire cycle is committed as a single Merkle root, anchoring costs the same whether you pay 3 people or 300. You write one fingerprint per cycle, not one per payslip.A Merkle root is a single hash that stands in for a whole set of documents. Each payslip sits
in the tree, and the root at the top changes if any leaf changes. That is what makes one small
on-chain write cover an entire headcount. See
Soroban contracts on the Developers tab for the anchor’s design.
Tamper-evidence explained
1
The fingerprint is fixed at issue time
When you anchor a cycle, the Merkle root is written to the chain and cannot be changed. It is
a permanent commitment to exactly the payslips that existed at that moment.
2
Verification recomputes and compares
When a contractor verifies a payslip, their device recomputes the fingerprint from the
document they hold and checks it against the anchored root on-chain.
3
Any change breaks the match
Alter a single character in a payslip and its recomputed fingerprint no longer matches the
anchor. The verification fails, and the alteration is caught. An unaltered payslip always
verifies.
FAQ
Can anyone else read a contractor's payslip?
Can anyone else read a contractor's payslip?
No. Each payslip is end-to-end encrypted to a single contractor’s public viewing key. Only
the contractor holding the matching key can decrypt and read it. Confiroll stores the
encrypted document but cannot open it, and no other contractor or employer can either.
Does anchoring a cycle reveal the amounts?
Does anchoring a cycle reveal the amounts?
No. Anchoring writes only a Merkle root, a single hash for the whole cycle. It never writes
the payslip contents, the contractor identities, or any amount. The figures stay inside the
encrypted documents, off-chain. The anchor proves the documents have not been tampered with,
nothing more.
What happens if a payslip is altered?
What happens if a payslip is altered?
Verification catches it. A contractor’s device recomputes the fingerprint from the document
and compares it to the on-chain anchor. If even one character changed, the fingerprints no
longer match and verification fails. An unaltered payslip verifies cleanly against the
anchor.
What does anchoring cost, and does headcount change it?
What does anchoring cost, and does headcount change it?
Anchoring a cycle costs you 0 XLM, because the fee is sponsored. Headcount does not change
that, and it does not change the on-chain work either: the whole cycle commits as one Merkle
root, so anchoring is a single write whether you pay 3 people or 300.