noman-land
This is essentially how bitcoin's proof of work algorithm works. They maintain the difficulty by adding 0s as computers get faster.
olalonde
For comparison with Bitcoin:

    00000000 000003da 5849ade5 e2112447 73478c46 5fcdc744 9e247df4 11e97b28 (#1 of leaderboard)

    00000000 00000000 0002a2fa b0d010ce 270927e8 c9a698a3 4f5e3d6c 4dbcffd3 (latest mined block)
Doesn't seem that impressive but keep in mind that it gets exponentially harder to find additional leading 0s and that the Bitcoin network currently finds such hashes every ~10 minutes.
kadajett2
Just got to 11 zeros with some beginner rust code! Gonna keep it running for a while to see if I can get higher than 24, but this was a ton of fun! And it was my first time doing parallel rust code!

I couldn't get wgsl to work properly, as it would need to have a sha256 implementation, and that's a bit heavy for a buzzed coding session. So, I used the simd commands, and that got me up to around 7mh/s on the m1, and a whole lot more on my desktop.

I will share the code once I get all the other optimizations I want in!

paulgerhardt
Ah this brings back fond memories of the EngineYard challenge that consumed HackerNews in 2009[1][2][3][4].

From what I recall it was a bunch of YC founders writing janky cuda code vs djb who proceeded to smoke us all.

[1] https://news.ycombinator.com/item?id=704182

[2] archive link to the dead link in [1] https://web.archive.org/web/20090717104634/http://www.engine...

[3] https://news.ycombinator.com/item?id=716851

[4] https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...

kadajett2
Also, Oi tudo bem @quirino?!? Will you be posting the number of competitors at any point? I would love to see how good my 24 is in the grand scheme!
londons_explore
Anyone got a guestimate as to the energy used to make that leaderboard?
jimbobthrowawy
I like that you linked to a javascript miner. Makes it really easy to try instead of needing to write up some code.

Design/colour scheme is nice too.

turbidimeter
I also find this concept fascinating and made something similar a while back [1][2] but came from a slightly different angle, where people can compete for the title text on the page, for colors and for pixels in a grid (like a small r/place).

It uses Peer-2-Peer in the browser and I haven't touched it in a while, but it looks like it still works. :)

[1] https://tropical.pages.dev/pow/

[2] https://news.ycombinator.com/item?id=38934607

YaBa
I've made a few changes in my software, use Base64 instead of numerical values, now I'm getting the following error: "Nonce must be 1-64 characters long and consist only of Base64 characteres"

Whih is really odd, since my string has only 51 chars and all chars are valid within the Base64 group.

If I remove the padding ("=") then it's good to go, however, there is a string in the scoreboard with "=" in it (garethgeorge/AHQAAAHPe0Q=)

Did the user bypassed the javascript check using curl or something?

Also, this could use some adjustments:

    const nonceRegex = /^[A-Za-z0-9+/]{1,64}$/;
    if (!nonceRegex.test(nonce)) {
        alert('Nonce must be 1-64 characters long and consist only of Base64 characters');
        return false;
    }
Personally, I would use const nonceRegex = /^[A-Za-z0-9+/]{1,64}(={0,2})$/;
vkoskiv
Wasn't expecting to stay in the top 100 for this long!

Initial C implementation got me to ~70 for a short time, then very sloppy racy pthreads one kept me at the tail end for a bit longer, but my again very sloppy cuda program running on my GTX1070 has me at 35 at the time of writing.

Rough calculation shows it to be doing 28.6MHashes/sec, and I suspect I could do a lot better than that if I knew anything about cuda programming.

I didn't read enough to know how to pick good values for blocks/threads per block, so I just benchmarked all the combinations of powers of two to arrive at the best result.

Really fun challenge!

Would be fun to see the total amount of valid submissions, and maybe the number of leading zeroes of a hash for those of us that need a moment to figure it out from hex in their head :]

Bluestein
Might as well ask, as tangentially (even so slightly) related: DAE know of a way to get/generate "vanity" (arbitrary or close) Bitcoin addresses?
jodrellblank
Just lucked into 33rd place with 16 lines of single threaded C# doing ~1MH/sec.

Bug: The site says "nonce: 1-64 characters from Base64 (a-zA-Z0-9+/)" but it accepts "=" as well.

Reading the other answers about hand optimised CUDA and parallel Go and Rust, that's probably as high as I'll get.

playingalong
Would it make sense to have some partial/incremental SHA256 implementation? E.g. one that gives the first character only (in ASCII representation). So that you could have a cheaper money miner to narrow down the search space?

Is it even possible to have cheaper first character SHA256 algorithm?

grishka
Huh, I somehow got #32 with my very naive multithreaded thing I quickly wrote in C. One thing I'm kinda amazed about is how quickly the M1 Max goes through 2^32 hashes, it only takes about 80 seconds with 10 threads.

edit: up to #28 ;)

chaz6
This is my attempt in Rust. I am not a Rust programmer so it is probably horribly inefficient, but it works!

https://gist.github.com/Chaz6/81523edaed6f31aa609daa919ff6b8...

zdimension
60 MH/s with parallel Rust code (rayon) on a 5900X. Got stuck on 8 zeroes, changed my nonce prefix and got lucky with 9 zeroes after 10 seconds! Currently sitting at #73 and pondering whether to write a GPU solution.

https://gist.github.com/zdimension/63d3aa5f04573267f423520e4...

KomoD
Fun, no way I'm beating any of the top 10 scores though.
korbin
I'm at about ~22GH/s per Xilinx VU9P UltraScale+ FPGA - at least 40GH/s is possible (for around 250W/device.)

The nonce alphabet being limited makes the whole thing quite a bit more expensive.

lovasoa
Very fun ! I got to the first half of the leaderboard using Rust and ChatGPT.
Exuma
I got an amazing one only to find out Zalgo is not supported EXỦMÂ :[
anacrolix
I'm sitting on just under 40MH/s on an M1 Pro with a multithreaded Rust implementation I whipped up. I doubt I can go much faster without using the GPU.
tln
Suggestion: close submissions after it leaves the front page :)
JSDevOps
Quirky and fun