How BOINC identifies computers
We haven't found a universal hardware-level mechanism (CPU chip ID, 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.
Cross-project host ID
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 concatenation of its domain name, IP address, free disk space, and a timestamp. 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 (this is intended to prevent spoofing). The external ID is exported in statistics files.