List of Equihash coins, by implementation parameters


#1

(Explanation of terms below the charts.)

Approximate Equihash Minimum VRAM requirements

Params Min VRAM Standard Name?
96, 5 2.5 MB
200, 9 144 MB Equihash (Classic?)
210, 9 288 MB Equihash 210_9
144,5 2.0 GB Equihash (Zhash?)
192,7 2.5 GB Equihash Zero (Heavy?)

List of known coins and implementations

Coin Coin Name Params Pers String Algo Name Used Notes
MNX MinexCoin 96, 5 Equihash 96/5*
BCI Bitcoin Interest 200, 9 ZcashPoW Equihash
BTCP BitcoinPrivate 200, 9 ZcashPoW Equihash
CMM Commercium 200, 9 ZcashPoW Equihash
HUSH Hush 200, 9 ZcashPoW Equihash
KMD Komodo 200, 9 ZcashPoW Equihash
ZCL Zclassic 200, 9 ZcashPoW Equihash
ZEC Zcash 200, 9 ZcashPoW Equihash
ZEL Zelcash 200, 9 ZcashPoW Equihash
ZEN Zencash 200, 9 ZcashPoW Equihash
AION Aion 210, 9 Equihash 210_9
BTCZ BitcoinZ 144,5 BitcoinZ Zhash Effective 2018-6-15
BTG Bitcoin Gold 144,5 BgoldPoW Equihash-BTG Effective 2018-7-3
LTZ LitecoinZ 144,5 ZcashPoW Equihash Effective 2018-6-21
SAFE Safecoin 144,5 Safecoin Equihash 144,5 Effective 2018-6-18
XSG SnowGem 144,5 sngemPoW Equihash Effective 2018-7-5
ZER Zero 192, 7 ZERO_PoW Equihash 192_7

Grouped by Params in Min VRAM order; groups sorted alphabetically by Coin.

Explanations

Params:

Equihash provides for the following Parameters: (n, k)

For example, the classic Equihash first used by Zcash used n = 200 and k = 9, so it was Equihash (200, 9).

The n and k values create enormous differences in the minimum memory requirement, and create enormous differences in how the actual mining software is coded in order to do the mining.

Min VRAM:

The minimum amount of memory necessary for efficient mining; having less than this would require laboriously recalculating values that could be otherwise stored and quickly referenced over and over.

Pers String:

Equihash provides for a Personalization String. The classic Equihash first used by Zcash used ZcashPoW as the string.

Names

Standard Name:
An attempt to identify a common name for the given Params.

Algo Name Used:
The name used by the coin team.


History

There’s some confusion and naming concerns due to the growth in adoption of the Equihash algorithm for PoW (Proof of Work) mining with various implementation parameters. These parameters make an enormous difference in the code for the mining software as well as the validation code for pools and wallets.

Many coins adopted the Equihash algorithm after Zcash, and to maintain easy compatibility in the software, many adopted the same Parameters and Pers as Zcash. In the chart above, we refer to this combination of Params and Pers as “Classic.”

Because of concerns over safety and the intrusion of ASICs in the space, many coins have switched to different parameters, and have made unique Personalization Strings.

This page has been created to help track and differentiate among them and to help the community reach some sort of agreement on what “common names” to use for these variants.


#2

IMHO: we should have a single naming standard for things like Equihash (144,5) across coins, and we should reserve coin-specific names for the combinations of algo with Personalization string.

For example, if we all decided to call Equihash (144,5) by the name EQ1445, then Equihash-BTG could mean EQ1445 with pers BgoldPoW and Zhash could mean EQ1445 with pers BitzoinZ.


#3

Note: we welcome comments from the Community and from all coin team devs regarding coming up with a good naming convention.

Comments from other coin team devs or interested parties in the space (all made elsewhere & copied here for discussion; I’ll leave out attribution unless they tell me they want to be identified):

This guy is nuts if he thinks that would be less confusing. :wink:

But he has a solid point in that Equihash is not a hash function, strictly speaking. It spreads a lot of hashes (Blake2b hashes) across memory, and then requires work be done across that memory to find solutions. I don’t know the thinking behind the original name, but this is why Equihash rates are referred to in many places as Sols (Solutions) per second, not Hashes per second.

If we’re going to make a big change in the naming, now might be the right time, since many are currently changing their algorithms.

Got me there; I edited the OP to fix it.

Also a valid point.


#4

More updates from discussions:

Some of us like the idea of using “Blake” or “Blake2b” or “Wagner” in the name - EquiHash a two-part algorithm which starts with using the hash function Blake2b to fill a big memory space, and then using Wagner’s algorithm to find a matching solution within that memory space. However, we recognize that a radical change in name is difficult and confusing.

Also, while we see that involving numbers in names is less memorable to many people in the community than a name, the EquiHash space is really differentiated by the implementation - the numbers in the parameters and the resulting algorithm/memory demands. Also there can (and almost certainly will) be future EquiHash parameter sets.

This proposed naming convention is gaining some traction:

Name Min VRAM (n, k) Params Traditional Name
EQ-16x5 2.5 MB (96, 5)
EQ-20x9 144 MB (200, 9) Equihash
EQ-21x9 288 MB (210, 9)
EQ-24x5 2.0 GB (144,5)
EQ-24x7 2.5 GB (192,7)

(Note: I’m using “EQ” as a filler, here. It’s the number approach that is gaining traction.)

The new numbers describe the number of bits matched in each round for the algorithm, and provide a relative measure of the “hardness” of the algorithm. (You can calculate the number from the n and k as so: n/(k+1) )

Because these numbers lend themselves to sorting in the order of memory “hardness,” it’s a natural way to show the progression - the progression is not readily apparent in the (n, k) parameters.

Alternate version:

Name Min VRAM (n, k) Params Traditional Name
EQ-16x6 2.5 MB (96, 5)
EQ-20x10 144 MB (200, 9) Equihash
EQ-21x10 288 MB (210, 9)
EQ-24x6 2.0 GB (144,5)
EQ-24x8 2.5 GB (192,7)

Here, the first number is n/(k+1) and the second is k+1 - this may be a better reflection of the overall “hardness” impact, where the second number reflects something akin to the number of “rounds” in the work. It also may make clear that the numbers are not the same as the (n, k) parameters.