Skip to content

zooko/potential-guacamole

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

--- after-the-bounty followups:

This looks good: https://github.com/Brooooooklyn/blake3-jit

These bounty competitors seem to have added substantial improvements after the competition ended: https://github.com/lamb356/blake3-optimized

New implementation after the contest: https://github.com/HuntsmanADHD/Blake3-JavaScript

--- bountry benchmarks

(see files named "bench-w-blake3-optimized.output.txt" in the various subdirs)

These were all run on an Apple M4 Max CPU with Macos 26.1.

text

pre-existing:

wc sha256: WebCrypto API implementation of SHA256 (native code)
blake-has: node bindings around native BLAKE3
hash-wasm: wasm implementation of BLAKE3

Vals are throughput in MB/s. Higher is better.

           pre-existing                  candidates
           ------------                  ---------->
           
           sha256    blake3
           ------    ------>

           native              js/wasm
           ------>             ------->

input size wc sha256 blake-has hash-wasm   Bk3JS   blake3-fa blake3-js blake3-op
---------- --------- --------- --------- --------- --------- --------- ---------
64 bytes         7       116       149       196       209       251 *     213
256 bytes       28       410       500       605 *     413       617 *     605 *
1 KB           117       874       897 *     883 *     528       890 *     874 *
4 KB           425      1940      1090       940      1270 *     949       935
16 KB         1110      2330      1140      1320      1560 *     984       961
64 KB         1850      2450      1170      1540 *    1540 *     987       952
256 KB        2690      2490      1170      1580 *    1560 *     971       945
1 MB          2970      2500      1170      1510 *    1560 *     960       957

`*` marks the fastest one, as well as any others within 10% of the fastest one

Comments:

This is interesting -- there are no fewer than three candidates that are the fastest at at least one size input, but there are no candidates that are the fastest, or even within 10% of the fastest, at all input sizes.

Also: it seems like a multithreaded implementation ought to achieve about 4X the throughput for each 4X increase in the input size (starting with the 1 KB input size since that is the size of a BLAKE3 Merkle Tree leaf).

--- Log:

https://x.com/zooko/status/1998185559542657145

"I'll pay somebody 10ⓩ (that's a lot of money!) to implement BLAKE3 in JavaScript using all the optimizations described in this blog post: https://web.archive.org/web/20250320125147/https://blog.fleek.network/post/fleek-network-blake3-case-study/"

Date: 2025-12-09 00:18:00 +0000


https://github.com/Numi2/Blake3inJavasScript

commit:

Date: 2025-12-09 02:37:25 +0000

supply-chain-attack risks: none tests: failed

one file

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Language              Files        Lines         Code     Comments       Blanks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 JavaScript                1          488          342           82           64

https://github.com/lamb356/blake3-optimized

sent bounty

Commit:

Date: 2025-12-09 02:37:40 +0000

supply-chain-attack risks: none tests: passed

one file (not counting TypeScript type file) tests benchmarks

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Language              Files        Lines         Code     Comments       Blanks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 JavaScript                1          304          220           44           40
 TypeScript                1           47            7           33            7

https://github.com/alrightCha/blake3-js

sent bounty

commit:

Date: 2025-12-09 05:55:34 +0000

supply-chain-attack risks: none tests: passed

one file tests benchmarks

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Language              Files        Lines         Code     Comments       Blanks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 TypeScript                1          453          385           23           45

https://github.com/Atamanov/blake3-fast

sent bounty

author: Alexander Atamanov

commit:

Date: 2025-12-09 10:20:02 +0000

supply-chain-attack risks: optional dev dependencies but they are not required for build, and there are no runtime dependencies tests: passed

8 files, nice progressive/adaptive design according to the readme tests benchmarks

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Language              Files        Lines         Code     Comments       Blanks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 TypeScript                8         5847         4201         1073          573

https://github.com/chimmykk/Bk3JS

sent bounty

author: Rilsosing Koireng

commit:

Date: 2025-12-09 12:48:38 +0000

supply-chain-attack risks: none tests: passed

one file tests benchmarks

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Language              Files        Lines         Code     Comments       Blanks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 JavaScript                1          820          687           55           78

https://x.com/zooko/status/1998407780114567360

"Whoa, whoa, it's only been 14 hours and there are already two submissions that look complete. So if you're looking at doing this for the Zcash, don't start because those other folks already beat you to it. (But you can still do it for love.)"

Date: 2025-12-09 15:01:00 +0000

(Narrator voice: there were actually 5, judging by self-assigned timestamps in git commits.)

About

BLAKE3 JavaScript bake-off

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published