-
Notifications
You must be signed in to change notification settings - Fork 514
Host identification
We haven't found a universal hardware-level mechanism (such as CPU chip ID or MAC address) for uniquely identifying computers. So we use two software mechanisms.
A computer attached to a project has a corresponding record in
the "host" table of that project's database,
and is identified by the integer ID of that record.
The ID in the <hostid> element in the client's client_state.xml file.
BOINC has mechanisms to
- Prevent two computers from having the same ID when a volunteer clones their BOINC data directory;
- Avoid creating duplicate host records when a host loses its ID (e.g. because its client state file is deleted).
- Allow users to merge duplicate host records.
These mechanisms are described here.
Leaderboard sites show statistics from multiple BOINC projects, and may want to show credit for hosts summed across all the projects in which they participate.
Each host generates an internal cross-project ID, which is the MD5 of
- the MAC address (if available; else a random string)
- the data dir path (for hosts that run multiple clients)
The goal is that if you reinstall BOINC (with the same data dir) you'll get the same CPID.
This is reported to the projects that to which the host is attached. The projects convert it to an external cross-project ID by hashing it with the owner's email address. The external ID is exported in statistics files.
The email addr hashing is intended to prevent a form of spoofing where user A learns the host CPID of user B's host, then hacks their client to report the same host CPID, and do some sort of misbehavior (like reporting huge CPU time), thus making it look like user B misbehaved.
This assumes that the user uses the same email addr on all projects; otherwise the host will have different external CPIDs.