I'm trying to make certain I'm understanding the purpose behind the Quark algorithm.

There are lots of devices that need secure algorithms but have severe power and processing constraints such as RFIDs (the chips found in everything from clothes to cars) - hence Quark (and other algorithms) were developed. Quark seems to be secure and yet lightweight enough that CPUs are more that capable of hashing them without maxing out.

I've read lots of articles and posts that come up with reasons pro and con re Quark. What I'm wondering about is what makes Quark worthy as an algorithm for a currency? One advantage is that it uses multiple algorithms and the chance of multiple hash functions getting cracked at the same time approaches zero. But why would we really care if more or less electricity is being spent in creating a block? Of course I want my electric costs to be less - the same as anyone else. But more important than my electric costs is knowing that the currency is secure. I would also prefer that mining is distributed across the network (as opposed to ASICs) but again what counts first and foremost is that the system is secure.

That being the case how is an algorithm designed for RFID's able to compete with SHA256?

I'm still struggling with these algorithms so I may be missing something very basic.

  • 1
    I'm confused by the remark about RFID's - SHA256 can run in an RFID chip too.
    – Nick ODell
    May 26 '15 at 20:32
  • Really! See I am missing things. I thought that Quark was designed for RFIDs because they needed something with minimal power usage - something that SHA 256 wasn't suitable for.
    – Mayo
    May 26 '15 at 21:11
  • 3
    SHA256 can run with about 100 bytes of memory. It's all of the other stuff, like maintaining a 1.3 GB unspent transaction set, that makes an RFID chip unsuitable for running a full node.
    – Nick ODell
    May 26 '15 at 22:36

The biggest problem with Quark (or any other "memory hard" algorithm) as a hashing algorithm is that verification is synchronous. So in order to verify things you have to do a lot of work, compared to the very small amount of work required to verify SHA256. This could lead to a DoS attack where an attacker sends you a whole lot of bad blocks and makes you tie up memory and CPU trying to verify them.

Not the answer you're looking for? Browse other questions tagged or ask your own question.