Uptime, fog and sinking
Probes
Every ten minutes the keeper (and, as they join, other islands) sends each island a random challenge. The island's probe service signs it with its probe key and returns its host fingerprint, a hash of the machine id that every island on the same machine shares. Each result is a signed record. Islands that report the same fingerprint count as one host, so islands on one machine can never form a continent alone.
At the end of the hour the keeper builds a Merkle tree of the hour's records and calls Probes.postHour(hour, root, ids, lit, uptime, hosts). An island is lit for the hour if it answered at least one probe and the last one. The records are published at /api/state so anyone can recompute the root.
Fog
An island whose uptime over the last 24 hours is under 95% is fogged. It still sells single calls, but it carries a zero uptime share in any continent job for that day. It clears as soon as its 24 hour uptime is back at 95%.
Dark hours and sinking
The first dark hour costs nothing. Every consecutive dark hour after it burns 2% of the bond. At six dark hours in a row the island sinks: half of what is left burns, the island leaves its continent, and the rest can be withdrawn after seven days.
| Consecutive dark hours | Burned this hour | Bond left (of 20,000) |
|---|---|---|
1 | 0 | 20,000 |
2 | 400 | 19,600 |
3 | 392 | 19,208 |
4 | 384 | 18,824 |
5 | 376 | 18,447 |
6 (sink) | 369 + 9,039 | 9,039 |
Owners can dispute an hour within 24 hours with Probes.dispute(hour, id, evidence); disputes are recorded onchain next to the root.