Every score signed by a secure element, verified in your browser ·
how to play →
Scanning relays for signed runs…
Next draw · every 1,008 blocks · each verified run = one ticket
—
—
Swarm
—
Kilometres Walked
—
Embers Held (swarm)
—
Runs Logged
—
Verified Devices
How verification works
Each run is a Nostr kind:1888 event. Three checks run client-side:
(1) the event's schnorr signature proves the poster's key authored it;
(2) the attest tag holds a P-256 signature from the device's secure element over
score · walked · runs · level · time · nonce, bound to the poster's key —
recomputed and verified here in your browser;
(3) the attestation key is checked against the published registry of provisioned Favilla devices.
A ✓ means all three passed. Scores without an attestation, or from unknown keys, are shown in the
Live Feed but never ranked. Firmware without hardware attestation could in
principle sign a fabricated score — every such "cheater" is a customer who reverse-engineered their
own device. We think that's fair.
How the draw works
The draw is anchored to the Bitcoin chain — no server, no random.org, nothing to trust.
Draw k happens at block height 959,192 + 1,008·k
(1,008 blocks = one week of target time, expected around Thursday 00:08 UTC).
WEIGHT. Your chance is proportional to your
weekly average score — the mean of your verified runs in the window. One brilliant run
beats ten lazy ones; spamming lowers your average.
POOLS. Like mining: solo, or join a pool of up
to five. A pool's weight is the sum of its members' averages — more chances to hit — and a win
splits proportionally to each member's average that week. Expected value is unchanged; variance
drops. To join, hit CREATE / JOIN POOL on the Pools tab — one click with a NIP-07
signer extension, or it shows you the exact kind:1889 event
(tags ["t","favilla-pool"], ["pool","<name>"]) to publish from
any client via your KEY's bunker. Your latest declaration wins; the first five keys naming a pool are its
roster.
SETTLEMENT. When the draw block is mined
(plus two confirmations) its hash seeds the draw: SHA-256(blockhash ‖ "FAVILLA-DRAW"),
first 8 bytes as a number, mapped onto the total-weight line; whichever unit's segment it lands in
wins. Sort order is lexicographic by unit id — fully reproducible from public data:
bitcoin-cli getblockhash, the window's kind:1888/1889 events from any
relay, and this arithmetic. The winner was decided by proof-of-work the moment the block was
found — nobody, including us, could choose it or predict it.