5 ms·
Agreed. I have another suggestion, which would require continuous investment of compute and (hopefully) not make things too much more complex: Every N seconds
by ericbarrett 3y ago
Agreed. I have another suggestion, which would require continuous investment of compute and (hopefully) not make things too much more complex:
Every N seconds, publish a "generation" string, randomly generated. This string must be prefixed to the nonce of the winner of the contest for [marquee, color, grid square].
When performing the "winner test" for new submissions, before the comparison to find out which is less, both the challenger and incumbent hashes are subject to the operation H << M where H is the hash and M is the age of their generation string (current = 0, previous = 1, second-previous = 2, etc.). This means incumbents weaken over time unless the incumbent's submitter continues to defend them by brute-forcing with newer published generation strings.
Since the hash (SHA256) is 256 bits, you'd need to keep 256 previous generation strings, and this could get a bit expensive for testing new submissions. But computers are pretty fast nowadays!
- Retr0id 3y agoYou can do it statelessly by just adding a timestamp, i.e. msg||timestamp||nonce Clients can reject timestamps from the future outright, and for the rest, apply a decay function based on age, prior to comparison.
- ericbarrett 3y agoTrue, it’s nicely stateless, but it does allow precomputation. E.g. you could spend a few weeks doing PoW for a future date and submit when you reach it. Whether that’s a problem is a matter of taste!