https://github.com/defuse/juggler-pow
A memory-but-not-time asymmetric proof-of-work function.
https://github.com/defuse/juggler-pow
Last synced: about 1 year ago
JSON representation
A memory-but-not-time asymmetric proof-of-work function.
- Host: GitHub
- URL: https://github.com/defuse/juggler-pow
- Owner: defuse
- Created: 2015-10-05T08:10:26.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-03-01T17:19:59.000Z (over 10 years ago)
- Last Synced: 2025-02-10T21:19:10.786Z (over 1 year ago)
- Language: C
- Size: 361 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Juggler Proof-of-Work
=======================
**THIS CODE IS EXPERIMENTAL AND SHOULD NOT BE USED FOR ANYTHING.**
Juggler is a proof-of-work puzzle system that requires lots of computing time
*and memory* to solve, but very little memory to verify.
Unfortunately, it *does* require lots of computing time to verify, but it is
a simpler operation, so it is still faster to check than it is to solve. It may
be possible to remove this computational requirement on the verifier by using
fancy crypto voodoo; I don't know yet.
Here are some rough performance characteristics using BLAKE2 reduced to 3 rounds
as the hash function on my AMD FX-8370:
- 0.5GB: 90 seconds proof, 20 seconds verify.
- 1.0GB: 180 seconds proof, 40 seconds verify.
Proof sizes are rather large, ranging from 1KB to 8KB depending on the
parameters. The size is tunable, trading off (I'm guessing) TMTO resistance.
I haven't made any attempt to tune the parameters or even make them consistent
with each other, so the actual performance could be much better or much worse.
If you want to know how it works, look at the code. Sorry I'm tired and would
rather sleep than write up an English explanation right now.
Report bugs/ideas by opening GitHub issues.
Related Work
-------------
The idea for this proof-of-work puzzle came from my attempts to
understand/break:
- [Asymmetric proof-of-work based on the Generalized Birthday problem](https://eprint.iacr.org/2015/946.pdf)