Skip to main content
MANIFOLD
Proof of work market: I will select the lowest MD5 hash submitted
11
Ṁ780Ṁ1.8k
resolved Jun 26
100%71%
proofofworkmarket<<<<F0C":00000000005e73c35e8a93e819f543a5
0.7%Other
0.0%
proofofworkmarket2:0cc1e06a125489f066517540476e7da9
26%
ANTE
0.0%
proofofworkmarket2623326:000000d15a5e3bcd35f21ee4a730d92e
0.0%
proofofworkmarketd56f496cddd2b923ef52ae96b0ba2cd0:00000002eed77ddf3a95d78c4439ddaa
0.0%
proofofworkmarket2392249cd1c9d328fb674f087b2b6747e:00000001e26934ba7496eec4ef39d55a
0.0%
proofofworkmarket92696743373:00000001702574cf63c6084281d25b9c
0.0%
proofofworkmarket6194463258:0000000007b6fac39fc3f008117f6670
1.2%
proofofworkmarket6194463258:0000000007b6fac39fc3f008117f6670
0.0%
proofofworkmarket___b92f22b309:00000000060be6c15687feb3981f3520
0.0%
proofofworkmarket___d2ab4684cb:00000000051d612ab997a059aa1e5cc6
0.0%
proofofworkmarket6efa29ef0f7daa86a4776a0e5fef2720:0000000002c7144b4697621bfd96c7bf
0.0%
proofofworkmarket___d8d653a408:0000000001e50dac3f573c3ccdd06287
0.0%
proofofworkmarket...3782778b7e:00000000015a30589dec32973dd1a158
0.9%
proofofworkmarket5234262oglK62MMPJzYCbHHAnl:0000000000ea92d7cad6c5eadb757b54
Submit answers in the format: "proofofworkmarket[<insert anything here>]":<MD5 hash of the string between quotes>. I will select as correct the answer with the lowest hash value, where it is a valid md5 hash of the string between the quotes. The string must start with the words "proofofworkmarket", and can contain anything after that, but should be all ascii characters. Jun 21, 12:05am: Provided an example valid answer. I will not submit any more valid answers.
Market context
Get
Ṁ1,000
to start trading!

🏅 Top traders

#TraderTotal profit
1Ṁ367
2Ṁ240
3Ṁ70
4Ṁ39
5Ṁ31
Sort by:
Congrats @joy_void_joy. Not sure what, if anything, this market has shown. Although I expected everyone to hold back their answers until the last moment in order not to reveal their cards - but I guess it's just more fun to just compete openly, and after all it's all about fun.
Yeah me too. Could have made way more money by betting more on my answer, but I thought I might get snapped, and wanted to post it early for people to bet on it while I was still mining :D
@JoyVoid So.... how much real mining money did you sacrifice to get that hash :-)
@Undox Actually, I got really lucky, the hash was found after like ~10 minutes of running the script (which explains why it's so short too). I let it run for one hour more just in case I found better
@JoyVoid I had 16 cores running overnight XD, v. satisfying to find low hashes quickly :)
If anyone is interested I mined with: https://github.com/Zumili/find-extreme-hashes The exact command was: ``python find-extreme-hashes.py -u proofofworkmarket -w [number of cores] -m md5 -o manifold -b 1 -n -c 8 --shuffle`` Very efficient, uses all cores
@JoyVoid I did CPU mining with a small Rust program. I would have tried GPU or FPGA mining if I had a good GPU or FPGA.
(An anti-social strategy would have been to submit something with a false MD5 and bet on people being too lazy to check. Then sell and cash out)
@JoyVoid proofofworkmarket:00000000000000000000000000000000
@FranekZak Apparently so.
@ManifoldMarketsUser well, I wasn't really ready for a duplicate from the same user. In this case i guess I'd resolve to both, otherwise just to the first (chronologically) instance.
@FranekZak Oh yeah how are you resolving duplicates?
@Electricitypipe hmm, this is the same one as before, did your script reset? :D
@ManifoldMarketsUser yes, as I understand it, all money bet in the market goes to the winner (minus fees), and this is just an option that will not be the winner. Nothing special about it tho, i could just as well bet on a different known loser.
@FranekZak Is betting on ANTE a way to (subsidize / add liquidity to) the market?
For those wondering about how reasonable it is to use md5 in proof-of-work contexts, considering that it's very cryptographically broken: https://crypto.stackexchange.com/questions/29610/is-it-safe-to-use-md5-in-a-proof-of-work-system > Currently, it is probably safe. There are preimage attacks on MD5 but they are only slightly better than brute force. With a proof of work that only requires the initial bits of the hash to match it would likely be easier to use brute force than try to apply any attacks on it. > > However, I cannot see a good reason you would do that instead of using a more secure hash function, like SHA-256 – or SHA-256/128 if the output length must match.
@jack I am of course aware of that - but if someone wants to utilize a complicated attack to extract a few hundred mana, they are more than welcome to :)
Oh I don't think there's an easy, practical attack, but if there were I would probably do it for fun, not for the mana :)
We've reached peak nonsense market. This is it.
I am currently mining with the crude JavaScript script below in Node.js. Most of it from StackOverflow :-). If you want to, run this too (it will look for different hashes for you due to the random statement in the code), we can be like a "mining pool". let best = "9"; let prev = '' + Math.random(); console.log('Seed: ' + prev); while (true) { const currInput = prev; const curr = md5("proofofworkmarket" + currInput); if (curr < best) { best = curr; bestinput = currInput; console.log(bestinput + " -> " + best); } prev = curr; } document.getElementById("progress").innerText = 'stopped' // FROM : https://stackoverflow.com/questions/1655769/fastest-md5-implementation-in-javascript // A formatted version of a popular md5 implementation. // Original copyright (c) Paul Johnston & Greg Holt. // The function itself is now 42 lines long. function md5(inputString) { var hc = "0123456789abcdef"; function rh(n) { var j, s = ""; for (j = 0; j <= 3; j++) s += hc.charAt((n >> (j * 8 + 4)) & 0x0f) + hc.charAt((n >> (j * 8)) & 0x0f); return s; } function ad(x, y) { var l = (x & 0xffff) + (y & 0xffff); var m = (x >> 16) + (y >> 16) + (l >> 16); return (m << 16) | (l & 0xffff); } function rl(n, c) { return (n << c) | (n >>> (32 - c)); } function cm(q, a, b, x, s, t) { return ad(rl(ad(ad(a, q), ad(x, t)), s), b); } function ff(a, b, c, d, x, s, t) { return cm((b & c) | (~b & d), a, b, x, s, t); } function gg(a, b, c, d, x, s, t) { return cm((b & d) | (c & ~d), a, b, x, s, t); } function hh(a, b, c, d, x, s, t) { return cm(b ^ c ^ d, a, b, x, s, t); } function ii(a, b, c, d, x, s, t) { return cm(c ^ (b | ~d), a, b, x, s, t); } function sb(x) { var i; var nblk = ((x.length + 8) >> 6) + 1; var blks = new Array(nblk * 16); for (i = 0; i < nblk * 16; i++) blks[i] = 0; for (i = 0; i < x.length; i++) blks[i >> 2] |= x.charCodeAt(i) << ((i % 4) * 8); blks[i >> 2] |= 0x80 << ((i % 4) * 8); blks[nblk * 16 - 2] = x.length * 8; return blks; } var i, x = sb(inputString), a = 1732584193, b = -271733879, c = -1732584194, d = 271733878, olda, oldb, oldc, oldd; for (i = 0; i < x.length; i += 16) { olda = a; oldb = b; oldc = c; oldd = d; a = ff(a, b, c, d, x[i + 0], 7, -680876936); d = ff(d, a, b, c, x[i + 1], 12, -389564586); c = ff(c, d, a, b, x[i + 2], 17, 606105819); b = ff(b, c, d, a, x[i + 3], 22, -1044525330); a = ff(a, b, c, d, x[i + 4], 7, -176418897); d = ff(d, a, b, c, x[i + 5], 12, 1200080426); c = ff(c, d, a, b, x[i + 6], 17, -1473231341); b = ff(b, c, d, a, x[i + 7], 22, -45705983); a = ff(a, b, c, d, x[i + 8], 7, 1770035416); d = ff(d, a, b, c, x[i + 9], 12, -1958414417); c = ff(c, d, a, b, x[i + 10], 17, -42063); b = ff(b, c, d, a, x[i + 11], 22, -1990404162); a = ff(a, b, c, d, x[i + 12], 7, 1804603682); d = ff(d, a, b, c, x[i + 13], 12, -40341101); c = ff(c, d, a, b, x[i + 14], 17, -1502002290); b = ff(b, c, d, a, x[i + 15], 22, 1236535329); a = gg(a, b, c, d, x[i + 1], 5, -165796510); d = gg(d, a, b, c, x[i + 6], 9, -1069501632); c = gg(c, d, a, b, x[i + 11], 14, 643717713); b = gg(b, c, d, a, x[i + 0], 20, -373897302); a = gg(a, b, c, d, x[i + 5], 5, -701558691); d = gg(d, a, b, c, x[i + 10], 9, 38016083); c = gg(c, d, a, b, x[i + 15], 14, -660478335); b = gg(b, c, d, a, x[i + 4], 20, -405537848); a = gg(a, b, c, d, x[i + 9], 5, 568446438); d = gg(d, a, b, c, x[i + 14], 9, -1019803690); c = gg(c, d, a, b, x[i + 3], 14, -187363961); b = gg(b, c, d, a, x[i + 8], 20, 1163531501); a = gg(a, b, c, d, x[i + 13], 5, -1444681467); d = gg(d, a, b, c, x[i + 2], 9, -51403784); c = gg(c, d, a, b, x[i + 7], 14, 1735328473); b = gg(b, c, d, a, x[i + 12], 20, -1926607734); a = hh(a, b, c, d, x[i + 5], 4, -378558); d = hh(d, a, b, c, x[i + 8], 11, -2022574463); c = hh(c, d, a, b, x[i + 11], 16, 1839030562); b = hh(b, c, d, a, x[i + 14], 23, -35309556); a = hh(a, b, c, d, x[i + 1], 4, -1530992060); d = hh(d, a, b, c, x[i + 4], 11, 1272893353); c = hh(c, d, a, b, x[i + 7], 16, -155497632); b = hh(b, c, d, a, x[i + 10], 23, -1094730640); a = hh(a, b, c, d, x[i + 13], 4, 681279174); d = hh(d, a, b, c, x[i + 0], 11, -358537222); c = hh(c, d, a, b, x[i + 3], 16, -722521979); b = hh(b, c, d, a, x[i + 6], 23, 76029189); a = hh(a, b, c, d, x[i + 9], 4, -640364487); d = hh(d, a, b, c, x[i + 12], 11, -421815835); c = hh(c, d, a, b, x[i + 15], 16, 530742520); b = hh(b, c, d, a, x[i + 2], 23, -995338651); a = ii(a, b, c, d, x[i + 0], 6, -198630844); d = ii(d, a, b, c, x[i + 7], 10, 1126891415); c = ii(c, d, a, b, x[i + 14], 15, -1416354905); b = ii(b, c, d, a, x[i + 5], 21, -57434055); a = ii(a, b, c, d, x[i + 12], 6, 1700485571); d = ii(d, a, b, c, x[i + 3], 10, -1894986606); c = ii(c, d, a, b, x[i + 10], 15, -1051523); b = ii(b, c, d, a, x[i + 1], 21, -2054922799); a = ii(a, b, c, d, x[i + 8], 6, 1873313359); d = ii(d, a, b, c, x[i + 15], 10, -30611744); c = ii(c, d, a, b, x[i + 6], 15, -1560198380); b = ii(b, c, d, a, x[i + 13], 21, 1309151649); a = ii(a, b, c, d, x[i + 4], 6, -145523070); d = ii(d, a, b, c, x[i + 11], 10, -1120210379); c = ii(c, d, a, b, x[i + 2], 15, 718787259); b = ii(b, c, d, a, x[i + 9], 21, -343485551); a = ad(a, olda); b = ad(b, oldb); c = ad(c, oldc); d = ad(d, oldd); } return rh(a) + rh(b) + rh(c) + rh(d); }