Contributing
Consent receipts
The terms live on the ledger, not in a document we control.
A consent receipt says: this contributor allowed this buyer to use the data with this hash, for this purpose, until this moment.
If that lived in our database, a buyer would have to take our word for it and we could rewrite it. On the ledger, a buyer checks it themselves — no account with us, no permission — and neither side can quietly change what was agreed.
Two rules the contract enforces
- Consent always ends. A grant without a future expiry is refused. There are no perpetual grants.
- Only you can withdraw it. Not the buyer, not us. Revoking ends the receipt while keeping the record of what was agreed.
These are code, not policy. That distinction is the whole reason for putting consent on a ledger.
Verifying one
Anyone can ask the contract whether a receipt still stands:
stellar contract invoke --network testnet --send=no \
--id CBBSNMX74QCDBYJ3MECQTVBAQQ52NYJWLI5B7JUEESHHSPAGAJAJTLQI \
--source <any-funded-key> \
-- is_valid --id 0The contract, its source and its tests are on the links page.
What it can't do
A receipt can't reach into a model that already trained on your data. Revoking stops future use and makes the withdrawal publicly checkable; it doesn't unlearn anything. That limit is exactly why consent here has to expire.