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:
Looks like we had no serious attempts, so this will resolve NO unless there are any objections.
However if anybody does believe they've found a flaw in future, the offer still stands -- let me know (or a trusted neutral party if you prefer) to set up a new market with similar criteria and I'll happily subsidize a thousand M$ or so onto NO as a bounty.
@NeonNuke your random number is: 1774341561
Technical details
Round: 2544298, salt: XC1sIVNG2qGF3Dn249N1, retries: 0. To validate, run the following Linux command: echo -n 0a968d3f60670fa45db94880031e9b3d934c381dc707c9844ca0aff52ed6eff4-XC1sIVNG2qGF3Dn249N1 | sha256sum
. Take the first sixteen hex digits of the output (0x8b5396ac74a2e5b8 = 10039533661774341560) modulo 2000000000 and add 1. Randomness details:
{"round": 2544298, "randomness": "0a968d3f60670fa45db94880031e9b3d934c381dc707c9844ca0aff52ed6eff4", "signature": "83395f5f72b313c18bb2e10061f785d3fad2ac74f2a81820084255b507ba811479dfee45b3a89da5c20fd5911869c5f2099d1799b442006033d482067dab28e4bf5aa39484cfad0044765c5bd82c9d96706e2fa01955b3515ce58d713bac7ce9", "previous_signature": "aa96d9d703fd3da9018581e775e854c4866dea033aa540d009264689e60aca3357ff8f681d5126966dad8c922f29cceb176d36f86debc19a4ce236489b46c96e1fa26346395a15a716c898086dab54b515b0bcb59ac0e7ef52cc72344d015bc8", "timestamp_retrieved": 1671759963, "timestamp_available_estimate": 1671759960}
@NeonNuke 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: 2544296 (latest), offset: 2, selected round: 2544298, salt: XC1sIVNG2qGF3Dn249N1. Algorithm:
m = hashlib.sha256()
m.update(randomness['randomness'].encode('ascii'))
m.update('-XC1sIVNG2qGF3Dn249N1'.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": 2544296, "randomness": "231335c91858047ffc7b2ad2f76a9e17018c5f953285b09327e262f3ad9ea948", "signature": "b42ded6a27af44d95020a2d9e66ca1833e012c869a437b6e10dabb5a85107d9d5d6fc0e878d9f37d22bee58012efa08f09e6b5e6369c3b9e7ac225c798d01fb43a36f0bae716400fbf69b249273be99780821d64a586c58ee5a90dc332a6e1cb", "previous_signature": "acf764109bcd4b6bb24d5ff259f778f6bc38ff748bf2bf3aaa7c2bcd2b46ce20349c147f650ad36d5c8c65d01b4d9d7c0da273cfdc7ff41b1284869fd761406a940f83c201c879be32be4acc3b1f61e89bbbd8ec0cc370d59c484360c110fa6d", "timestamp_retrieved": 1671759903, "timestamp_available_estimate": 1671759900}
@howtodowtle your random number is: 971413205
Technical details
Round: 2520105, salt: W4eu2Ri2l4P8vziuJ1ed, retries: 0. To validate, run the following Linux command: echo -n 63dc80957558c9e431addd8ef1b1192315b8b15f1d8c517b48e5a148201b99a8-W4eu2Ri2l4P8vziuJ1ed | sha256sum
. Take the first sixteen hex digits of the output (0xc935f877d66c86d4 = 14498767768971413204) modulo 2000000000 and add 1. Randomness details:
{"round": 2520105, "randomness": "63dc80957558c9e431addd8ef1b1192315b8b15f1d8c517b48e5a148201b99a8", "signature": "b31854c8ea7517444c0b6da93fcfd18ae5fb1ccf4e5c4b6e378d6f173e96c81c94a92ff9a6940e64c49c13b28c22986605164c015f16404b20b17dcba25510adb7a789f4fa9205f02c9c88295553b6845c6138598f5d8be4e81b5fb22f8a85b3", "previous_signature": "986bfc05c9e3c041c8a13b089973f9128eee81f3de5931117b1205c6369eb5a4ad98952fb54fe6938d71841498b20da80a70f944c446da057e387484c24f23d050d30cebf63c4532372b1b3303b739f52d7007247047f2159a919a667bac2fa9", "timestamp_retrieved": 1671034172, "timestamp_available_estimate": 1671034170}
@howtodowtle 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: 2520103 (latest), offset: 2, selected round: 2520105, salt: W4eu2Ri2l4P8vziuJ1ed. Algorithm:
m = hashlib.sha256()
m.update(randomness['randomness'].encode('ascii'))
m.update('-W4eu2Ri2l4P8vziuJ1ed'.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": 2520103, "randomness": "68c8069c57ef1494d6341a6af90f8cce2ff0fca46a35e3d0333337d9e19a801b", "signature": "886b9443f7f56f4df0b8c951a934316c3f8d5212ffc496986f4853a64cec79d1d8356ae62c3472e1401dc277bc8dd37c01a7b92b0ff09eb0968fb913397d7cf58d75ce0102f1ee07ffeaa1897e386a416fb62160cdec58dcad156a37b2561ee5", "previous_signature": "a367bccfeae4a650fbb05a6a52a4a96a671dc8ff97599e164061445af6903b0932dc29127b1ca0c47bb2cc1a274233a7194035bf62e50df123d92dda196f741c7502b7cf2db18aabe91f408dfb62a313923ca6ac9c5cf160a1a90568a21221c8", "timestamp_retrieved": 1671034127, "timestamp_available_estimate": 1671034110}
@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.
@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}
@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}