FairlyRandom avatar
closes Jan 1, 2023
Will any of the traders predict their roll on a 2000000000-sided Fairly Random die by EOY? (with hax)
3%
chance

Same rules as the linked market, but with a few tweaks/clarifications. To summarize:

  • If a trader correctly predicts their roll on a 2-billion sided FairlyRandom die (or a fork of it ostensibly using the same randomness protocol), they "win".

  • If at least one trader wins, the market resolves yes.

  • Cheating is allowed, but if somebody can prove that you cheated then your win doesn't count.

Differences compared to the linked market:

  • Die is 2 billion sided instead of 2000 sided so that the chance of winning without cheating is negligible even with a large number of traders participating.

  • Instead of a fixed target roll of 1337, you just need to unambiguously declare in advance what number you're going for (if unspecified, we'll assume 1337). This allows exploits that predict the result in advance even if they can't manipulate it.

  • Even though winning is effectively statistical proof that you cheated, that still isn't sufficient evidence on its own to disqualify you -- there needs to be some independent proof of cheating.

  • Updated commit hash for the randomness protocol: https://github.com/u0s41v/FairlyRandom/tree/9117363e82d589e3e13fd19254e264b028b2e95a. The only change from before is that the default offset between the declaration round and the result round is 2 instead of 1. You may not decrease the offset lower than 2 (but you can increase it if you want to).

  • You can try a few times if you want, as long as you're not just trying to brute force it. As a rule of thumb: Max of 10 tries total per trader, and I reserve the right to disregard attempts after the first one if it doesn't seem like they're made in a good faith effort to cheat.

Non-exhaustive list of things that DO count as sufficient evidence of cheating:

  • Overtly deviating from the prescribed randomness protocol. As long as it is proven that you deviated from the protocol, it's not needed to prove exactly how that deviation allowed you to cheat.

  • Posting your declaration comment with a Manifold timestamp more than 45 seconds later than the timestamp_available_estimate value that a protocol-compliant FairlyRandom would produce.

  • If the final randomness output posted by your bot doesn't match the expected output produced by an independent run of the fairly_random_verify.py script with the parameters specified in your declaration comment.

Unless disabling verbose is critical to making your exploit work, please use verbose=true in your FairlyRandom command for convenience of verification. Sample command:

@FairlyRandom 2000000000 verbose=true

I'll be betting NO here as a bounty for anyone who manages to find a flaw in the protocol. (And therefore you probably shouldn't use the price of this market as proof of how secure the protocol is, unless it attracts significant interest from other traders.)

Original market:

Sort by:
FairlyRandom avatar
FairlyRandomBot
is predicting NO at 9%

@Yev your random number is: 3

Salt: 1BPuoutr4mwda1NBDFNz, round: 2463420 (signature a71f6849198c7058b55183adc54e9a0736e1022fa609a605ccf4dfa2b354c3363bb1faf8e3d4c0c5e66f49013fb240bf0fbdd73c2a67775c9a5a555f8955b6acc08e883a4dcc825ee9d8bfdb5f11ec2376ecbe10080f7855a2870e01973b27d6)

FairlyRandom avatar
FairlyRandomBot
is predicting NO at 9%

@Yev you asked for a random integer between 1 and 10, inclusive. Coming up shortly!

Source: GitHub, previous round: 2463418 (latest), offset: 2, selected round: 2463420, salt: 1BPuoutr4mwda1NBDFNz.

Yev avatar

@FairlyRandom 10 (this is just a test and not a real attempt)

Yev avatar

Can I try as many times as I'd like?

A avatar
A
is predicting NO at 9%

@Yev Sure you can try a few times if you want, as long as you're not just trying to brute force it. Call it max of 10 tries total per trader, and I reserve the right to disregard attempts after the first one if it doesn't seem like they're made in a good faith effort to cheat.

FairlyRandom avatar
FairlyRandomBot
is predicting NO at 50%

@A your random number is: 538357089

Technical details

Round: 2463178, salt: FxL9S3pJiI6neEldiBGx, retries: 0. To validate, run the following Linux command: echo -n 38afa4f8b45c209723c81bfdd7ed9fdef53fedd914ecf9cdfabb59ee7350845f-FxL9S3pJiI6neEldiBGx | sha256sum. Take the first sixteen hex digits of the output (0x8c5be286be64dd60 = 10113926456538357088) modulo 2000000000 and add 1. Randomness details:

{"round": 2463178, "randomness": "38afa4f8b45c209723c81bfdd7ed9fdef53fedd914ecf9cdfabb59ee7350845f", "signature": "ad77bb91a01d6f6a9890e3613b43488f24407060bc84876719509819049f235a404e84f42a6dd71fe99ccc6b6c5c3aa00663998b26f2e569118553c5790244e723c6ec80375792a157fb7a7f56c34efefbbc1ef9322d5ce59859f382a6621152", "previous_signature": "87aa918591f39e8d9f758980fc7305ca823fbcdb8dad75d76c3c7fc5fbac0701da5bcc76e0a94e880a34d744fd7ac0231457c884eb7285c2c014003528b48519303ce9c657710e73e8d8c46e0b54a94865e66d260151975e853e1017fc429a7d", "timestamp_retrieved": 1669326362, "timestamp_available_estimate": 1669326360}
FairlyRandom avatar
FairlyRandomBot
bought Ṁ50 of NO

@A you asked for a random integer between 1 and 2000000000, inclusive. Coming up shortly!

You can view the open-source implementation and usage instructions for this bot on GitHub.

Technical details

Previous round: 2463176 (latest), offset: 2, selected round: 2463178, salt: FxL9S3pJiI6neEldiBGx. Algorithm:

m = hashlib.sha256()
m.update(randomness['randomness'].encode('ascii'))
m.update('-FxL9S3pJiI6neEldiBGx'.encode('ascii'))
while True:
   m_int = int.from_bytes(m.digest()[:8], byteorder='big')
   if m_int < 18446744072000000000:
       return (m_int % 2000000000) + 1
   m.update("-RETRY")

Randomness details:

{"round": 2463176, "randomness": "daf00ae4c6e0b0456fc3579f34675b39f6df148d101b337acee2f1d30f54e226", "signature": "b69fd47adc4fff4b04c3fe67b9579c5aa617c4c9add660122be27796718ca341149a59520d9855118bd18a7361c16a0a02e92da8eb5127c0c54737ee0557d916966f6926de56dc13f9cd4ca65aef7cb6636a0f94b6cc56a08442a155b6da43c0", "previous_signature": "b2c5788b1799a5447c54d73aeb2f47d86b752447bd24544d169f44fce097f4fd974b3ad8973c0caa2fdc092aaa2103e915865cfb9f5e653ad861be2706c52db93d21fefc384d90e5df14fb6f93ee08f1b8cc109412e42ce5ef76db1ee2aac876", "timestamp_retrieved": 1669326325, "timestamp_available_estimate": 1669326300}
A avatar
A
is predicting NO at 50%

@FairlyRandom 2000000000 verbose=true

A avatar
A
bought Ṁ50 of NO

Example roll -- trying for a result of "123"

ManifoldDream avatar

Will any of the traders predict their roll on a 2000000000-sided Fairly Random die by EOY? (with hax), 8k, beautiful, illustration, trending on art station, picture of the day, epic composition