Privacy Policy
Scope Producer Registry
Register Form ↗ Rename Producer ↗ Delete Registration ↗
Deterministic Ordering through Linear Iterations
Privacy Policy
Producer Registry — last updated 2026-08-08
Scope. This policy covers ONLY the optional producer-name registry at /api/producers/*, served on both doli.network and explorer.doli.network. The DOLI blockchain itself is pseudonymous and requires no personal data.

1 What we collect

Registration requires no personal identifier. The form asks for a name you choose, the network you produce on, and a signature made by the key your node already publishes on-chain. It does not ask who you are, and there is no field in which you could tell it.

The registry stores exactly this about you, and nothing else — plus four internal bookkeeping timestamps that say nothing about you, listed in full under the table:

FieldWhat it isWhere it comes from
usernameThe human-readable name shown next to your node on the network dashboardYou choose it
pubkeyYour Ed25519 producer public key. Already public: it is in the on-chain producer set, and your node signs every block with itAlready public
networkmainnet / testnet / local — the chain your node produces on, and it is not part of the signed message. The registration form offers the first two; the API accepts all threeYou choose it
claim timestampThe Unix second inside the message you signed. It bounds replay of that signature to a ±5 minute windowGenerated by the page
signatureThe 64-byte Ed25519 signature over DOLI claim: <username> <timestamp>. It is the proof you hold the key, and it is meaningless for anything elseYour node's doli sign
IP addressRate limiting only. Logged at the nginx layer for 7 days, then rotated out. This is the one item you do not supply — any web server sees itObserved automatically

The network you pick is not signed, and it does not scope your name. The message your node signs is DOLI claim: <username> <timestamp> and nothing else, so network is recorded exactly as your browser sent it and no signature attests to it. Usernames are unique across every network — one namespace covers all networks, so a name registered on testnet is blocked on mainnet: the registry will not issue it twice. It is not held for you there — the row keeps the network you declared, and the mainnet dashboard shows nothing for it.

The four bookkeeping timestamps complete the row. They are the registry's own operating record, not anything you supply: verified_at (the second your claim was accepted), created_at (the second the row was written), last_renamed_at (the second of your last rename — this is how the 30-day rename cool-off is enforced, and it is 0 until you first rename), and unsubscribed_at, a disused column left behind by the mail system that was removed: it is empty for every row and nothing in the service can write to it. Those four plus the five stored fields above are the complete contents of the producers table — nine columns, all of them. The IP address in the table above is an nginx log line, not a database column.

We do not collect: an address of any kind, real name, phone number, billing data, location, browser fingerprint, or any third-party tracking identifier. There is no account, no password, and no session cookie.

Until August 2026 the registry did store a contact address, because registration used to require confirming one. That step was removed, the column was deleted from the database, and the stored values were destroyed by a schema migration — not exported, not archived, not handed to anyone. Database backups taken before that migration are purged on the schedule in the operator runbook. The same migration also destroyed the stored mailing preference described in earlier versions of this policy; nothing is left that could act on it.

2 How we use it

  1. Prove the claim. Your pubkey must be in the active producer set and the signature must match the claim. The request must also clear field validation, a 5-minute freshness window on the signed command, two rate limits, a replay guard, the reserved-name list, the 30-day post-deletion lockout and a uniqueness check before a row is written. None of those involve anything about you, because nothing about you was submitted.
  2. Show your name on the network dashboard. username, pubkey and network are returned by GET /api/producers/names, which is what the dashboard at explorer.doli.network/network.html reads. They are meant to be public — that is the entire purpose of the registry. The signature, the claim timestamp and the four bookkeeping timestamps are kept as the audit and operating record of the claim and are not returned by any API.
  3. Rate limit. Your IP and your pubkey are checked against two separate in-memory limits. Per IP they are token buckets, not a fixed quota per period: registration allows a burst of 5 and refills one token per second, the public GET /api/producers/names read allows a burst of 60 on the same one-token-per-second refill, and rename and delete have their own, much slower buckets (a burst of 5 refilled once every 12 minutes, and a burst of 3 refilled once every 20 minutes). Per pubkey a rolling 60-minute ceiling applies on top — 5 registration attempts, 1 rename, 3 deletions. Nothing here is written to disk: both limits live in the service's memory and are lost when it restarts.
The registry sends no email. There is no mail sender in the service, no mailing list, and no address to add you to one. Nothing you do here can cause you to receive a message from us.

3 Legal basis (GDPR Art. 6)

A public key and a self-chosen handle are, in most readings, not personal data at all — but we do not want the policy to rest on that argument, so we state a basis for each item as if it were:

Consent is no longer a basis for anything here, and no consent is asked for. Earlier versions of this policy relied on Art. 6(1)(a) for a contact address and on Art. 7(2) for a separate, optional mailing preference. Neither is collected any more, so neither consent exists, and there is nothing left to withdraw. The registration form no longer carries a consent tickbox.

4 Third parties (sub-processors)

None. The registry uses no sub-processor. Nothing it stores is shared with, transmitted to, or processed by any third party on our behalf. There is no delivery provider, because there is nothing to deliver. We use no analytics, no tag manager, no user-tracking CDN, and no advertising network.

That is a statement about transfers, not about confidentiality. The username, pubkey and network triple is served to anyone who asks for it and Section 5 says so too — that is a publication by design (Section 2), not a disclosure to a third party.

The registry does not sell, rent, share or otherwise disclose anything it holds.

5 Your rights (GDPR / CCPA)

Several of these rights are exercised differently here than on a normal service, because the registry holds no identifier it could match you to. It cannot look you up; only your signing key can. That is deliberate, and it cuts both ways — each right below says how it actually works.

If you have lost your signing key, none of the self-service routes above will work, because every one of them is proved by a signature and there is no other way to establish that a record is yours. There is no fallback identity check, and never has been: we hold nothing that could serve as one. Write to privacy@doli.network and we will do what we can, but be clear that we cannot verify the claim cryptographically and will not hand a name to whoever asks first.

CCPA-specific (California residents). We do not "sell" or "share" personal information as defined by the CCPA / CPRA, and we hold no personal identifier to sell. You have the right to know what we collect (Section 1), the right to delete (above), and the right to correct inaccurate data.

6 Retention

DataRetention
Producer record — the whole nine-column row: username, pubkey, network, claim timestamp, signature, plus the four bookkeeping timestamps verified_at, created_at, last_renamed_at, unsubscribed_at (Section 1)Until you delete it
Deleted-pubkey cool-off marker — the public key and two timestamps, nothing else: pubkey, deleted_at, expires_at30 days, then auto-deleted
nginx access logs (IP + request line)7 days, rolled
In-memory rate-limit state — per-IP token buckets (burst 5 for registration, 60 for /names, refilled one token per second; slower buckets for rename and delete) and the per-pubkey attempt timestamps behind the rolling 60-minute ceilingHeld in the service's memory only, never written to disk, and lost on restart

There is no pending-registration table any more — a claim either succeeds outright or is rejected outright, so nothing is held in an intermediate state.

7 Security

8 Children

The DOLI producer registry is not directed at children under 16. It collects no personal data from anyone, of any age, so there is nothing about a child for it to hold. If you believe a record should not be there, write to privacy@doli.network and we will look at it.

9 International transfers

The backend is hosted in the European Union and nothing leaves it. There are no international transfers, because there is no third party to transfer anything to (Section 4).

10 Changes to this policy

We will post the updated policy at this URL and update the "last updated" date at the top. We cannot notify you individually and will not pretend otherwise: the registry holds no way to reach you, by design. Check this page, or follow the community channels linked from doli.network.

11 Contact

Data controller: DOLI Network. Contact: privacy@doli.network. We aim to respond to all privacy requests within 72 hours and in all cases within 30 days as required by GDPR Art. 12.