verify

two checks, both done in this tab. nothing is sent anywhere except read requests to the chain.

a share

paste a challenge, the beneficiary address and a nonce. the page computes keccak256(challenge || beneficiary || nonce_le) and compares the first 8 bytes to the target.

waiting for input.

a block

paste a coin mint and a block number. the page reads the coin's ring from chain and recomputes sats_per_share = reward × 10^9 / shares and what the block paid.

waiting for input.

the bytes

challengekeccak256( mint[32] || u64_le(block)[8] || slot_hash[32] ) sharekeccak256( challenge[32] || beneficiary[32] || u64_le(nonce)[8] ) validu64_be(share[0..8]) < target hashes per share2^64 / target retargetnext = target × 600 × duration / (shares × 600), clamped to [target/4, target×4] then [2^30, 2^56] rewardunallocated / 6, where unallocated = pot − (allocated − paid) sats per sharereward × 10^9 / shares (fixed point); a miner earns floor(shares × sps / 10^9)