What this viewer read and checked
Asking the reader…
Whether this is the project's current version is established on the check page, which is on its own address. A project's scripts can change what any page on this address says, this one included, so nothing here should be taken as that verdict.
Checked in this browser
Every file is rebuilt from its chunks and checked back to the root: each chunk against its record and its chunk id, each chunk-tree node and directory node against its id, each file against its file CID, each directory against its directory CID. A compressed file is decoded here and its content must hash to the value in its file CID. A reply that fails a check is refused and the next endpoint is asked, so an endpoint cannot change a file under a known root.
Taken from the endpoints
A project's current root is read from the project's token. No hash covers that answer, so every endpoint listed above is asked at the same block: at least two must answer and all that answer must agree. A root address (one that starts with "r") names its root in the hostname and needs no such answer.
The viewer's own code is served by this hostname's web server; everything it shows comes from the chain. A project's own service worker does not run here, and a project folder named _abxfs cannot be opened.
Your own endpoint
By default everything is read through public endpoints run by other people. If you run a node, name it here. It is then asked first for every read that is checked against the root: the folder, the file records and the file contents. If it fails, the public endpoints are asked.
A project's current root is still read from the public endpoints, and two of them must agree. Your endpoint is left out of that on purpose. This setting is kept where the project's own scripts can change it, so it is only ever used for reads that are checked. For the same reason, do not enter an address with a key in it.
The viewer itself
The viewer's own code comes from this address's web host and is the one thing here that is not checked against the chain. This is the build the reader is running. The same files, built from the repository with tools/build-view.py, give the same hashes on any host. Once a project has been opened, the reader and these pages keep working if the host goes away, and these pages are served from the copies that match this build even while the host answers.
Build
| File | SHA-256 |
|---|
Kept in this browser
Only raw replies from the chain are kept, so a later visit asks for less. They are not trusted: a project's own scripts can write this address's storage, so every kept reply goes through the same checks as a fresh one each time it is used.
Files
| Path | Stored | Type | File CID | Checked |
|---|