# Mining & Common Mining Hashing Algorithms Explained

Cryptographic hash functions enable encryption and this happens on everything, from HTTPS protocols to payments made on e-commerce websites to emails to transactions on the blockchain to web secure certificates or signatures. The hash function, which is more like they=mX+b or quadratic equations of the form y=aX2+bX+c, will basically take in some inputs and converts them into a hash output mostly by combining them with other inputs and defined values. The input can be a message, blockchain transactions, emails, texts, or numbers, which can then be secured transmitted and stored in the encrypted form for verification and decryption after sending, etc.

### Hashing and hashing functions

Since cryptographic hash functions are deterministic in that a hash of a given input will always be the same on a given algorithm, it is possible to compare hashes of inputs to find original inputs but that will work if data is very less in quantity. When working with a large input like a 128-bit hash in a blockchain transaction, the only way to find out the original input is via brute-force method which picks up random inputs, hashes it, and then compares the output with the target hash and repeats until a match is found. That can take a long time because the method has to try r 2^128 times for all combinations.

That said, a cryptographic hash function must deliver deterministic hash outputs, be collision resistant in that two different inputs cannot have two similar hashes, and reflect huge changes in the hash output even for small changes on the input (avalanche effect). In addition to this, it needs to be infeasible to know the input by way of its hash (pre-image resistance), and the function should also return hash of an input quickly (quick computation).

Those are the properties a hash function must have to be useful for cryptography or encryption. The hashes must not be reversible back to their inputs, which means these functions are one-way hash functions. For these kind of functions, even if the function is known and the output is known, it is hard to know the input or to reverse to it because 1) there could be several inputs to the function towards the same output and 2) the numbers and lengths of possible input strings that one should try in order to find which one renders the given output hash is very large making it harder to work back to inputs because of the large number of combinations and trials one may need to perform in order to work backwards to get input.

No doubt brute-force attacks these days are machine-oriented and any machine involved would perform millions of calculations and trials per minute so of course, it is clear where the argument for a quantum-resistant algorithm comes from.

### What does mining exactly involve?

A blockchain network will have many transactions broadcast to it but they all need to be confirmed. In such a network, transactions are confirmed by miners by adding them to a block that is then added to the blockchain. Each block is therefore a set of pre-defined number (block size) of confirmed transactions plus other information. In mining, mining nodes compete to create a block that is to be added to the blockchain every pre-set amount of time. Adding a transaction to a block requires that the miner first verifies that a pending or unconfirmed transaction is valid for addition into a block, for instance has enough funds or more according to the existing blockchain history (a transaction might be prioritized if it has a higher transaction fee set since that renders higher reward). To be added to the blockchain, the block has to have a signature or "proof of work" and for all other nodes and miners to verify that it is valid for addition to the blockchain and to register the transaction.

During mining, each miner will try to work on its blocks trying to find the one that can successfully be added to the blockchain, and success happens if there is an match/agreement between a certain block's output and the pre-defined or desired output value for the blockchain. So a miner keeps trying several times until the block with those characteristics is found and every block trialed will have a different mathematical problem that needs to be solved to define its hash.

Therefore, in mining, what miners are doing is trying to find a hash output (or signature) for the data inputted in a block such that the output meets the pre-defined condition required for a block to be added to the blockchain and hence mined. The output is compared with the pre-defined condition/string. A block is confirmed or mined when its output corresponds to the required output which starts with a certain amount of zero's pre-set and desired/required for the output. This is known as the signature requirements.

For that matching to happen, it will happen only for a specific input string in the block data and effectively, what miners are doing is finding an input string (called a nounce), which when combined with the data in that block and passed through a hash function, produces a result (hash output) that is within a certain pre-defined range (signature requirement). The "nonce" is a concatenation of “number used once.” In the case of Bitcoin, that number is an integer between 0 and 4,294,967,296.

Miners find this number through random guessing, together with applying the hash function to the combination of the guessed number and the data in the block. As said previously, the miner has no way of knowing the nonce and uses guess work until the input whose desired output is known, is found. Two integers will give widely varying results when inputted into the hash function and there may be several possible nonces that produce the desired result or just none.

For blockchains such as Bitcoin, the desired result string has to start with a pre-established number of zeros. For a miner, if none does match the desired result string, the miners will keep trying with a different block configuration. It may stop when another miner broadcasts that it has successfully mined the block. Once the first miner gets a resulting hash that falls within the desired range, it will announce results to rest of others and the rest stop working on that block and moves to the next.

The miner finding the mysterious number gets rewarded with Bitcoins. The difficulty of calculation or the number of zeroes required at the beginning of the output hash string, is adjusted frequently such that it will take on average pre-set amount of time to create a new block. For Bitcoin, the difficulty calibrates every 2016 blocks (which is the number of blocks expected in 2 weeks), and the pre-set amount of time is 10 minutes, the amount of time that is necessary for a diminishing flow of new coins until the maximum of 21 million is reached. The difficulty relates to block generation and so it will calibrate depending on how fast block generation is so if each block wasn't generated in 10 minutes, it will drop if more was generated then it would increase.

In other words, the hash output can be taken to be a signature for a computed block in a given miner, and when the block's signature matches the required signature, the block is then added to the chain. For the nonce, it is adjusted with the blockchain difficulty. Guessing many nonces is a must in finding a match and that takes a lot of time and computational power and since a block must be mined within a pre-set amount of time, the difficulty will have to change and it will increase as more hashing power is introduced in the network as more people join the network.

Once a network mining node finds the proof of work or signature whose output matches the desired format, the nonce is stored in the block so it is easy for other nodes to verify it is correct. The block contains some other additional information, for instance, that would help verify that the block is valid, timestamp verification to verify that it should not be later than the previous block’s timestamp and should not be 2 hours ahead in time. This data is used by miners and nodes to verify validity of blocks and other things. In Proof of Work, miners are competing to form a block based on the computational power, as compared to Proof of Stake where they compete to form a block based on currency holdings -- a form of centralization as compared to proof of work.

### Securing the network and decentralization

As more people join the network, the total hash power increases meaning there is possibility for blocks to be added to the chain faster, and adjustments to the difficulty will therefore be needed in order to keep creation of new coins on track with pre-defined time. The entire process of mining and verifying has the advantage of securing transactions and decentralizing a network. How? Once a miner finds the desired output signature, it is also verifiable: other nodes and miners will take the signature as broadcast by the miner that mined the block and hash it to see if the output will match the included signature, and therefore effectively validating, legitimizing it and reaching consensus thus the term consensus algorithm. Plus the whole process is ensuring that transactions meet required criteria.

It is clear to see how the entire process enables participation of everyone in the network to find and verify a pre-defined mathematical solution to constituting a block and that process of participation and verification is all predefined and CODED such that every willing participant will know what is happening, when, why and how. That would assure getting rid of some manipulation from some source!! But it is also secure because of the nature in the manner in which it makes it difficult for an attacker to break the system: it is harder to gain higher computational power (because very high amount of resources and time are needed) than everyone in the network and compute to create new valid blocks that would be subsequently added to the blockchain and verified by all others in the network and added within a pre-defined set amount of time.

A 51% attack would happen if the attacker outruns the algorithm that keeps getting harder and if he is able to generate blocks faster than the network was able to generate (possible by controlling the hash power by over 50%) meaning his fork is used to create the ledger instead of the original one since the network looks for the longest valid blockchain but the network will still drop the block since the pre-set time for creating the block has passed and the blockchain is ahead. A fork is created from an original blockchain when miner(s) is able to generate a valid block to be added to the chain, and that's done using powerful machines. Even a fork that would require changes to software and rules for instance the block size, mining algo, consensus protocol, those updates will still need to be agreed upon by network participants by having them update their existing nodes to the change. Those are some of the strength basics of blockchain-based transactions.

### Different mining algorithms

How do different mining algorithms create and add blocks to the blockchain, verify them, and hence confirm transactions? Which mining algorithms are better? Which coins use what algorithms and which coins are more suitable to mine on a given algorithm you have on your machine?

These are some of important questions when trying to understand the ins of mining coins since different coins have different algorithms, and that's crucial when selecting a coin to mine.

Different coins support mining with different algorithms. Some algorithms allow mining with CPUs and GPUs while others are specifically for CPU mining. Some algorithms developed to try and address the centralization issue in cryptocurrencies, which can come in many ways, among them requiring the use of ASICs (devices specifically developed to solve mining tasks) given that they are very expensive, if a cryptocurrency project allows the use of only ASICS, they are basically providing advantage to miners who can afford such equipment.

Some cryptocurrencies support different algorithms to allow GPU, CPU and ASIC mining. For instance, ASIC and GPU miners. For example: Verge (XVG) uses Scrypt, X17, Lyra2rev2, Myr-Groestl and Blake2s. Shield (XSH) coin also uses several algos including X17, Scrypt, myr-gr, lyra2v2, blake2s, x16s.

Below are the main/common algorithms you might come across in the world of cryptocurrencies, but there are tens of others as can be seen in this guide.

In addition to SHA-256, Scrypt, X11, X13, X15, X16r, X16s, X17, Ethash, CryptoNight, NeoScrypt, and Equihash, we have others algorithms including Blake256, Lyra2REv2, Chacha, Qubit, Quark, ECDSA, Smart contract, Dagger-Hashimoto, LBRY, BOINC, Stanford Folding, and Groestl, RACE Integrity Primitives Evaluation Message Digest (RIPEMD), Message Digest Algorithm 5 (MD5).

Each may have several sub-classes and different algorithms in them: for instance SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, and SHA-512/256. These algorithms may differ slightly in the way they create digest, or output, from a given input and in the fixed length of the digest they produce.

### SHA-256

SHA stands for Secure Hash Algorithm and 256 denotes that the algo belongs to the SHA-2 family. It will generate 256 bit (32 byte) signature for a text string. The block processing time is around 7 minutes and its hash rates are in the rates of gigahashes per second. The computed hash output is compared to a known expected hash value in order to determine the data's integrity and to award the right to generate a block to be added to the blockchain. Also, called SHA-2 and is a successor of SHA-1.

The certificates, which are files, used to secure websites and web services such as emails by authenticating a user, contain cryptographic elements generated using SHA-256 and other algorithms. These certificates secure connections by having the service identify a message that was hashed by the function to produce small, fixed-length bit strings called message digests acting as fingerprints. Messages of up to up to 2^64\ bit (2.3 exabytes, or 2.3 billion gigabytes) is hashed into a digests of 256 bits or 32 bytes.

In 2016, the SSL industry transitioned to the new standard SHA-2 which was done by re-issuing thousands of certificates and major software updates, which employs centralized trusted certification authorities. The SHA-3 (also called also called Keccak) is expected to be implemented as the next secure algorithm for online communications. The unidirectional function for generating digital prints of the selected length accepts 224, 256, 384 or 512 bits.

The original Bitcoin protocol by Satoshi, as well as many other coins, utilize the SHA 256. This is a SHA-2 function which uses 32-bit words as opposed to SHA-512 which uses 64-bit words. Bitcoin uses SHA-256 in mining and creation of addresses. In creating the address, the public key is hashed to add an extra layer of protection to the person's identity in addition to the fact that the address is shorter than the public key which helps with better storage. In mining, miners are solving complex computational puzzles in order to find a block which then gets appended to the Bitcoin blockchain.

Coins that use SHA-256: Bitcoin, Bitcoin Cash, 21Coin, Unobtanium, Mastercoin, MazaCoin, Namecoin, NuBits, Peercoin, BitcoinDark, Scotcoin, Nubits, CarpeDiem, Paccoin, Tigercoin, Mazacoin, eMark, Titcoin, Neoscoin, Saffroncoin, Curecoin, Zetacoin, Acoin, TEKcoin, Unobtanium, Blakecoin, Reikicoin, Ixcoin, Bytecoin

### Scrypt

The Scrypt algorithm uses passwords to secure data based on the amount of memory and time required to complete operations (called the time-memory trade-off). For instance, an attacker would need hundreds of times more high speed RAM memory to complete valid and verifiable operations on the network in order to break thIS algorithm using brute-force method.

Invented by Colin Percival as a cryptoprotection online service to keep backup copies of scrypt algorithm, Scrypt complicates the solving of cryptographic tasks by filling the process with noise -- which are randomly generated numbers to which the scrypt algorithm refers. This increases computational time and resources, making it difficult to break the algorithm.

The algorithm works by creating a lot of pseudorandom numbers that require to be stored in the RAM. It will then access these numbers a few times before returning a result. Speed is optimized using a time and memory trade-off where the RAM is used in conjunction with hashing power instead of generating the numbers on the fly since generating them is computationally intensive. What it means is that the algorithm stores large amount of data on blocks so it will be convenient to access it than computing it every time when forming subsequent blocks but it leaves possibility of building powerful and relatively inexpensive computing devices for calculating this algorithm.

Scrypt was first introduced in the cryptocurrency space by a project called Tenebrix in 2011. In cryptocurrencies, Scrypt was introduced as an answer to use of ASIC computers in the mining of Bitcoins and popularity of GPUs in 2011. As a result, its was becoming expensive for new miners to enter the market and Bitcoin mining was becoming centralized. However, majority of miners still use GPU on script algorithm and ASICs for the algorithm also exist. In this case, ASIC scrypt miners look for ways to open the algorithm's mining scrypt and implement the scrypt function but a blockchain network using this algorithm will still want to implement a way for allowing CPUs/GPUs to mine in that case without favoring ASICs.

When selecting a mining equipment that uses the scrypt function, the main issue is the scrypt hash rate or performance required from the equipment. A GPU, ASIC or CPU can be used to find the scrypt hash required to create a new block for the blockchain. Scrypt miner AMD are considered of better performance than Nvidia and it can be cheaper to assemble them to boost power. Scrypt pools are also considered a better alternative because one would require large amount of resources to start mining solo on scrypt: some are optimized for one coin others for multicurrency ones etc.

Regarding its advantages, Scrypt uses lesser energy than the SHA-256 algorithm and is easier to implement on already existing CPU. Compared to SHA-256, Scrypt requires hash rates in the kilohashes per second (KH/s) or megahashes per second (MH/s) range which can be achieved with regular computers without needing ASICs although that might also bring some security issues. Other advantages include the algorithm supporting fast transaction & fast transaction confirmation compared to the SHA-256. That means a blockchain can manage lesser confirmation times or instant confirmation.

Coins using Scrypt include Fairbrix, MinCoin, ProsperCoin, CashCoin, MonaCoin, Mooncoin, Litecoin, Dogecoin. It is possible to mine some coins with Scrypt using GPUs but, for instance, Litecoin gives lower potential rewards for doing so. Auroracoin, Coinye, Synereo, Syscoin,GameCredits, Dogecoin, Litecoin, Potcoin, Starcoin, Teslacoin, Nucoin,Topcoin, Pesetacoin, Smartcoin, Xivra, Zedcoin, Stockcoin, Foxcoin, Worldcoin, Reddcoin

Other variants of Scrypt algorithm include Scrypt-N which changes memory requirement every set amount of time where the change in N requires different circuits to mine hashes.Scrypt Adaptive N coins include Vertcoin, Execoin, Parallaxcoin, SiliconValleycoin, and GPUcoin.

Scrypt-Jane is another variant. Scrypt-Jane (Scrypt-Chacha): Yacoin, Ultracoin, Velocitycoin. Scrypt-Jane uses a modular (compile, not runtime) layout to allow addition of new mixing and hash functions. The basic components (HMAC, PBKDF2, and scrypt) are static and will immediately work with any conforming mix or hash function.

Scrypt-OG algorithm is OG (optimized for GPU) and is 8 times less memory intensive than original Scrypt.

### X11, x13, x16R, and X17

X11 uses a chained hashing algorithm constituted from eleven combined scientific hashing algorithms for the proof of work in order to make the coin distribution fair and so that the coins can be distributed in much the same way Bitcoins were originally distributed. The algorithm was first used in Dash coin as Xcoin introduced in 2014.

One of its biggest benefits is its energy efficiency even compared to Scrypt because GPUs require approximately 30% less wattage and run 30-50% cooler than they do with Scrypt.

It is also ASIC-resistant to favor CPU mining rather than ASICs in order to avoid the centralization problem given that ASICs are costly. Today, however, there are ASICs for X11 algorithms and they comprise of a significant portion of the network hash rate.

Coins using X11: Dash, Crevacoin, Cryptcoin, Fuelcoin, Startcoin, Crevacoin, Adzcoin, Influxcoin, Cannabiscoin, Darkcoin, Hirocoin, X11coin, Smartcoin, Goldblocks and Hatch.

X13 is an advanced version based on the X11 and instead of 11 it uses 13 different hashing functions to increase resistance to ASIC coin mining. In other words, the algorith performs 13 hashing rounds with 13 different cryptographic functions. These functions are BLAKE, BMW, Groestl, JH, Keccak, Skein, Luffa, Cubehash, Shavite, Simd, Echo, Hamsi and Fugue.

Apart from X13, there are other improved versions of X11 including X14, X15, X16R, x16s, and X17. X13 and later versions were developed after cracking of X13 by ASIC and FPGA miner manufacturers, while X16s was inspired by the X16R, but all of these versions have ASIC available for mining the algorithm.

In these algorithms, a subfunction, which is an output coming out of one hash function is inputted to the next hash function until the 11th, 12th, 13th or whichever last hashing operation is done to output the final hash. That requires logical gates for each algorithm, which increases complexity of production and the cost of computing equipment. However, it makes things harder to crack for a hacker than the original X11 or the SHA-256 because a hacker will need to find vulnerability in all vulnerability in all 13 hashes. Compromising one function also provides a timely signal for developers to analyze the problem and make necessary changes before others are compromised. Most miners use a hybrid protocol to prove reliability of a PoW/PoS node such that a user can mine coins and earn for staking.

Some of the coins usinG X13 algorithm include Cloakcoin, Sherlockcoin, Boostcoin, Ambercoin, Navcoin, QiBuck, Networkcoin,Marucoin, and X13coin.

X15 coins include: X15Coin, BitBlock.
X16R coins: Stone Coin, Ravencoin, Proton Coin, Motion, Gravium, HTHCoin.
Pigeon coin – PGN, Crypto Rescue – CPR, MYNT – MYNT, Qbase coin – QBS, QUAR Network – QUAR, RabbitCoin – RABBIT, Reden – REDN, REEFcoin – REEF, RESQ coin – RESQ, Shield – XSH, SUDO - SUDO CryptoSudo (SUDO), Trust Plus -XTP, Whiff Network – WFFAceD (ACED), Creative Innovations coin (CIC), Hydra (HYDR), BitNexus (BTNX), Node Lab Coin (NLAB), Arena Coin (ARENA), RedLotus Network (RLN), Renix (RNX).

X17 Coins include: MKTCoin (MLM), Tcoin (TCN), VOLVOX-x17 (VVX-X17), Shield-X17 (XSH-X17), AND Verge-x17 (XVG-x17).

### CryptoNight

CryptoNight is also an algorithm that favors and prioritizes the use of CPUs instead of ASICs in mining of cryptocurrencies. Use of CryptoNight provides for less heating of the graphics card and processor than when mining on other algorithms. However, as of end of 2017, it became possible to use GPUs for CryptoNight algorithm. It is also possible to bundle CPU and GPUs for greater performance. There are also ASICs for this algorithm.

The algorithm works by allocating a large block of data (Notepad) to RAM with an unpredictable sequence in it. The block should be large enough to make data storage more convenient than computing the data every time it is accessed. More memory is also needed in order to prevent internal parallelism. N simultaneous threads will require N times more memory at once to prevent parallelism.

It means creation of all subsequent blocks relies on all the previous ones. The algorithm requires about 2 MB of RAM, which is the minimum size of the L3 cache of modern processors. This amount of RAM also excludes use of ASIC. It also emphasizes latency dependence.

CryptoNight is an implementation of CryptoNote Protocol, which provides the highest level of anonymity in cryptocurrencies. The protocol uses a ring signature system that allows a user to sign private messages with the group name. The signature implies that a transaction was made, in block creation, by one of the group members but they are all indistinguishable from each other. It is not available to anyone conducting the same transaction twice. A cryptographic Protocol of exchange between the parties via an open communication channel is used.

CryptoNote utilizes built-in CPU instructions, which are very hard and too expensive to implement in special purpose devices or fast memory-on-chip devices with low latency.

Mining software: some of the mining software for use with CryptoNight include CN GUI Miner, WinXMR, WinXMR, Monero CPU Miner, Teamredminer, Teamredminer, CryptoGoblin, XMRig CPU, XMRig Nvidia, Simple Miner, Nanominer, XMR Stak, XMRigCC CPU, SRBMiner and XMR Stak, but pool mining is also preferred for profitability.
The main cards to use include AMD Vega 56/64: 1900-2100H/s@150-250w, AMD RX 470/570/480/580: 750-1050H/s@70-100w, Nvidia GTX 1060:400-500H/s@50-70w, Nvidia GTX 1070:600-700H/s@80-90w, Nvidia GTX 1080:500-600H/s@60-80w and Nvidia GTX 1080Ti:800-900H/s@100-120w.

Some coins using CryptoNight include CryptoNote and Bytecoin (BCN).

### Ethash

Ethash is Proof-of-Work hashing algorithm designed to be ASIC resistant and easily verifiable. Ethash was developed from Dagger (an algorithm developed as an alternative to existing memory-hard algorithms like Scrypt because they were very hard to verify when their memroy-hardness increased to genuinely secure levels) and Hashimoto (developed to achieve ASIC resistance by being IO-bound, ie. making memory reads the limiting factor in the mining process).

The upgrade of Dagger-Hashimoto, uses "Keccak-256" and "Keccak-512" algorithms. A further extension of Keccak, SHA-3, is also referred to as SHA-3 although the Keccak version used at Ethereum is not a standard SHA-3 hash algorithm. Ethash's hash functions are sometimes referred to as "sha3_256" and "sha3_512."

Although the algorith is also an ASIC-resistant, ASIC miners for Ethash started appearing in April 2018 as announced by Bitmain.

Currently, with CPU no longer profitable to mine the algorithm because of efficiency issues, GPUs are the best possible option and needs at least 1-2 GB of RAM on each GPU used. To mine with GPU, one will need to download Ethminer, which can also work with any other Ethhash-based cryptocurrency. It is available in forms of Eth (its CLI), AlethZero (its GUI) and EthMiner (the standalone miner ASICs and FPGAs (Field-Programmable Gate Arrays) ASICs and FPGAs (Field-Programmable Gate Arrays) that can be used for Ethash are currently inefficient in comparison with the GPUs.

Ethash is based on a randomly generated dataset known a DAG (Directed Acyclic Graph) and which is updated after every 30,000 blocks and hence size of the DAG grows every 30,000 blocks (currently at 3.01 GB).

For Ethhash mining, it is required that hashing output value is below a certain threshold. This is known as difficulty and the threshold is adjusted to vary with the difficulty depending on the rate at which blocks are mined on the network. The number of valid hashes capable of being found decreases with the increase in network threshold when the difficulty also decreases and vice versa. The network threshhold is adjusted to vary the difficulty and number of valid hashes mineable. The adjustment must produce a block in every specified number of seconds (around 15s in Ethereum).

For Ethash, mining involves pulling some random data from the DAG and computing some randomly selected transactions from any block and returning the hash output value. The miner stores the entire DAG in order to be able to fetch random data from it and compute random transactions. That means it is memory-hard in that completing computational problem is decided by the amount of memory required to hold data. Since a good amount of time will be expended on reading the DAG instead of computing data fetched from it, Ethash is therefore memory-hard and ASIC-resistant.

The miner will try to solve a particular constraint on the Dagger-part or the provided large, transient, randomly generated dataset which forms a DAG and this is partly determined through a block's header-hash. The algorithm is designed to hash a fast verifiability time within a slow CPU-only environment and yet manage vast speed-ups for mining when provided with a large amount of memory with high-bandwidth.

Since miners with CPUs and GPUs can still achieve mining by simply purchasing a large amount of memory holding devices, it doesn't favor those miners packing terabyes of memory into their devices. This is also ensured by a high bandwidth requirement which means that speed-up from piling on many super-fast processing units sharing the same memory gives little benefit over a single unit.

Main miners and coins: In addition to Ethminer, there is also the option of Claymore's.

Some of the coins using Ethhash apart form Ethereum include Metaverse (ETP), Expanse (EXP), Musicoin (MUSIC), Ellaism (ELLA), Elementrem (ELE), and DaxxCoin (DAXX).

Main GPU cards: Nvidia GTX 1080Ti:51-55MH/s@120-180w, Nvidia GTX 1080:38-42MH/s@80-120w, Nvidia GTX 1070Ti:31-34MH/s@80-120w, Nvidia GTX 1070:29-33MH/s@80-120w, Nvidia GTX 1060:18-25.5H/s@50-90w, Nvidia GTX 1050Ti:13-15.5H/s@40-90w, AMD Vega 56/64: 38-47MH/s@150-250w, AMD R9 290(x)/390(x):30-33MH/s@200-250w, and AMD RX 470/570/480/580: 28-32.5MH/s@70-120w.

### Equihash

Equihash is another memory-hard or memory oriented algorithm, meaning the proof of work is determined by how much memory a miner has or RAM and not the amount of computing power. In other words, the time taken to complete a given computational problem is primarily determined by the amount of memory required to hold data, just like is the case with Ethash. This contrasts with Bitcoin where speed of creating blocks primarily depends on computer processing power.

It means Equihash is also ASIC-resistant to prevent the temptation of centralizing mining operations, but like in any other cases mentioned, ASICs are also being utilized in mining this algorithm today.

To overview the centralization problem, if hash rate of a given miner in a crypto network exceeds 51%, it increases the risk for a 51% attack. Being memory-intensive ensures that ASIC-resistant mining is not favored since memory is an expensive resource in computing meaning it would become resource-intensive to optimize memory on an ASIC chip.

However, unlike other memory-hard algorithms used in crypto mining, Equihash is asymmetry which means the prover who proves that a computational problem is solved to create a block, will not need to necessarily have the same memory amount as the verify who confirms transactions.

Other properties include being progress-free in that the probability of generating a proof is at any time independent of previous events; large at cost where optimizing ASIC chips for memory would come at a large cost; have small proof size and instant verification of the proof such that minimal memory is used on part of the verifier; trade-offs where the memory requirements imposed by the Equihash algorithm are worthwhile as long as attempts to optimize for memory disproportionately penalizes the user; and flexibility where variables such as the memory must be tunable in order to account for future algorithmic improvements.

Equihash has been applied on Zcash, Bitcoin Gold, Bitcoin Private, Komodo, ZenCash, and ZClassic.
Main cards: Nvidia GTX 1080Ti:800-900sol/s@250-300w, Nvidia GTX 1080:500-600sol/s@200-250w, Nvidia GTX 1070Ti:450-500Sol/s@120-180w, Nvidia GTX 1070:400-470Sol/s@120-180w, Nvidia GTX 1060:260-340Sol/s@80-120w, and AMD RX 470/570/480/580:300-350Sol/s@100-150w.

Miners common in this territory include DTSM, EWBF, Optiminer, Claymore's, and nheqminer.

### NeoScrypt

NeoScrypt was developed from Scrypt algorithm and its main feature is high volume of accrual of awards with the average reward for a block being 60-90 coins. The algorithm was developed out of Scrypt algorithm as a way of developing a new coin known as Feathercoin, and the problem that was being solved is the excessive dominance of ASIC devices on Scrypt algorith at that time. NeoScript processes transactions at a higher speed even during high loads on the network. This is made possible by authentication which generates a hash not directly tied to the person proceeding it but which allows users to identify within the system.

Some of the cryptocurrencies using this algorithm apart from Feathercoin include VIVO, DESIRE, TrezarCoin, Phoenixcoin, Uniform Fiscal Object (UFO), and Innova. The basic NeoScrypt miners are Claymore's NeoScrypt AMD GPU Miner, ccMiner NeoScrypt, and NeoScrypt OpenCL GPU Miner.

The common miners for this algorithm include Claymore's, CCminer, SGminer and HSRminer. Common coins are TZC, VIVO, Orbitcoin, and ORB. You would expect power usage to be higher than Ethash miners and Equihash for this algorithm but lower than duomining.

Common GPU cards: AMD RX460/560 1024SP: 350-450KH/s@35-60w, AMD RX470/570/480/580: 900-1100KH/s@90-150w, AMD Vega 56: 1300-1500KH/s@250w, AMD Vega 64/FE: 1900-2200KH/s@250-300w, Nvidia GTX 1060:450-750KH/s@90-130w, Nvidia GTX 1070:900-1400KH/s@140-200w, Nvidia GTX 1070Ti:1000-1400KH/s@140-200w, Nvidia GTX 1080:1100-1500KH/s@140-200w, and Nvidia GTX 1080Ti:1500-1900KH/s@150-250w.

### Keccak

The Keccak algorithm is a PoW algorithm that is also known as SHA-3 (Secure Hash Algorithm 3, which is a latest generation secure hashing algorithm released by NIST (National Institutes of Standards and Technology) in 2012.). This family of cryptographic sponge functions is designed as an alternative to SHA-256 – An algorithm used by Bitcoin and various other cryptocurrencies. It is much faster and more secure than the SHA-256 and is taken as the next version to be implemented for securing web services such as emails. More information on the SHA-3 CAN BE FOUND HERE

It has been standardized in the form of SHAKE128 and SHAKE256 extendable output functions and of SHA3-224 to SHA3-512 hash functions in FIPS 202, as well as cSHAKE128, cSHAKE256 and other functions in NIST SP 800-185. The underlying function is a permutation chosen in a set of seven Keccak-f permutations, denoted Keccak-f[b], where b∈{25,50,100,200,400,800,1600} is the width of the permutation. The width of the permutation is also the width of the state in the sponge construction.

The common miners for this algorithm are: CPU Miners, NVIDIA Miners, AMD Miners, and Keccak Hashrate miners. The main supported coins are SmartCash – SMART, MaxCoin – MAX, CreativeCoin – CREA, Slothcoin (SLOTH), 365Coin (365), Galleon (GLN), Helix Coin (HXC) , CryptoMeth (METH) , and BitcointalkCoin (TALK).

#### David Kariuki

David Kariuki likes to regard himself as a freelance tech journalist who has written and writes widely about a variety of tech issues that affect our society daily, including cryptocurrencies (see cryptomorrow.com and coinpedia.org); climate change (cleanleap.com), OpenSim and virtual reality (see hypergridbusiness.com). He is currently pursuing a MSc in Environmental Management at Open University. He does write here not to offer any investment advise but with the intention of informing audience, and articles in here are of his own opinion. Anyone willing to use any opinion here as advise to invest in crypto should obviously take own responsibility and accountability of their losses (or benefits) thereof. You can reach me at eqariu@gmail.com or david@cryptomorrow.com