receipt_registry contract combines the previous receipt-related contracts into one simpler MVP deployment.
It handles:
- Payment receipt proof metadata.
- Duplicate receipt hash rejection.
- Owner receipt indexes.
- Receipt hash verification.
- Receipt access grants and revocations.
- Batch anchor records.
- Receipt-linked dispute records.
Why merge this layer?
Receipts, access grants, anchors, and disputes are one product surface for users. Keeping them split across four contracts created more contract IDs, more initialization steps, and more reviewer overhead without improving the protection reserve boundary. The money-path contracts remain separate:protection_engineprotected_balance_vaultreserve_vaultoracle_adapter
Main methods
Paid receipt printing
Username payments complete first. A wallet-signed receipt transaction is optional and should be shown only after payment success. The app gives users a 10-minute print window; if they click Print receipt,create_receipt() charges the receipt fee and anchors the receipt hash on-chain.
For the current MVP, receipt fees route 100% to the configured treasury wallet. No automation split is taken from individual receipt-print fees.
Security notes
- Sender authorization is required to create a receipt.
- Owner authorization is required to create a receipt, mark it disputed, or manage receipt access.
- Admin authorization is required for dispute resolution.
- Receipt metadata is proof-oriented. It should not store raw private payment notes.