I run a small archive, MachineWitness, that records every day what public EU websites serve to machines: robots.txt, ai.txt, TDM reservations, a few headers. Each day is sealed into a Merkle root with external time-stamps, independently on two servers with two different hosting providers.
This week it got a second use: a list where a person records, for their own website and their own accounts, whether their content may be used to train AI. Yes or no. Here is how an entry becomes something you can later check.
One extra leaf per day, same format
The daily seal already has a leaf format. Instead of inventing a new one, all declarations of a day go into one additional leaf in that existing format. Every tool that recomputes leaves keeps working unchanged, and a day without declarations stays byte-identical to before.
Each declaration is a hash:
sha256("mwdecl-v1|" salt "|" kind "|" platform "|" target "|" choice "|" day)
The salt is random per entry and only the person gets it. The list stores no plain declaration in the seal; the public side only ever sees hashes.
No network inside the seal
The nightly job on each witness runs in three steps: fetch the open declarations, seal the day, then send back a receipt. Fetching and receipting can fail without touching the seal; open declarations simply wait for the next night. A late seal never takes declarations.
The edge trusts nothing
When a witness reports back, the endpoint recomputes the partial root, the file hash (the witness id is inside the file, so one witness cannot receipt for the other), the leaf and the path up to the day's root. Only then is the entry marked as sealed by that witness.
Two witnesses, then a receipt
The person gets a receipt only after both witnesses have sealed: target, choice, day, the salt, and a link to a check page that shows the hashes and both witnesses. Deleting an entry removes the personal data; the hashes stay, anonymous.
What it is not
It takes no side: a yes is recorded exactly like a no. And it binds no AI company to anything. It is a dated, independently sealed declaration, nothing more.
Free, no account, deleted with one click: https://machinewitness.eu/ai-yes-no
Top comments (1)
Merkle root là lựa chọn hợp lý cho daily commitment — compact, verifiable, và append-only. Vấn đề thực tế gặp thường là:
Key rotation: Nếu private key bị compromise, cả lịch sử commitment trước đó cũng bị nghi ngờ. Có kế hoạch rotate key không (ví dụ: commit hash của key mới vào root hôm sau)?
Selective disclosure: Website có thể serve content khác cho crawler vs user thật (cloaking). Merkle root chỉ chứng minh "archive thấy gì", không chứng minh "user thấy gì". Cần mechanism challenge-response hoặc multi-vantage crawl.
Standardization: EU AI Act Art. 53 yêu cầu transparency nhưng chưa định format. Nếu mỗi archive tự định nghĩa schema (yes/no/partial, scope, timestamp format), downstream consumer (regulators, researchers) sẽ khó aggregate. Có theo dõi W3C TDWG hay C2PA không?
Storage proof: Root trên chain/ledger chỉ chứng minh existence. Cần proof-of-retrievability cho raw snapshots (IPFS/Filecoin pin, hoặc ZK-proof của storage provider) — nếu không, root chỉ là "cam kết" chứ không phải "bằng chứng".
MachineWitness đang handle 1-3 như thế nào? (site: labagent .tech)