<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://en.zaoniao.it/index.php?action=history&amp;feed=atom&amp;title=Scrypt</id>
	<title>Scrypt - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://en.zaoniao.it/index.php?action=history&amp;feed=atom&amp;title=Scrypt"/>
	<link rel="alternate" type="text/html" href="http://en.zaoniao.it/index.php?title=Scrypt&amp;action=history"/>
	<updated>2026-05-15T09:08:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>http://en.zaoniao.it/index.php?title=Scrypt&amp;diff=2164&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;{{#seo: |title=Scrypt Algorighm – zaoniao Wiki |keywords= coins,scrypt mining pool,scrypt algorithm,scrypt miner software,scrypt cloud mining,scrypt algorithm coins,hashflar...&quot;</title>
		<link rel="alternate" type="text/html" href="http://en.zaoniao.it/index.php?title=Scrypt&amp;diff=2164&amp;oldid=prev"/>
		<updated>2019-03-16T09:36:26Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{#seo: |title=Scrypt Algorighm – zaoniao Wiki |keywords= coins,scrypt mining pool,scrypt algorithm,scrypt miner software,scrypt cloud mining,scrypt algorithm coins,hashflar...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{#seo:&lt;br /&gt;
|title=Scrypt Algorighm – zaoniao Wiki&lt;br /&gt;
|keywords= coins,scrypt mining pool,scrypt algorithm,scrypt miner software,scrypt cloud mining,scrypt algorithm coins,hashflare scrypt&lt;br /&gt;
|description=Scrypt is the encryption method that is using a big memory volume and requires a lot of time for selection. The Scrypt algorithm is implemented for the cryptocurrency mining, which allows making it more complicated for the specialized ASIC miners.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;amp/&amp;gt;&lt;br /&gt;
[[File:Scrypt.png|400px|right|Scrypt Algorighm logo]]&lt;br /&gt;
'''Scrypt''' is the encryption method that is using a big memory volume and requires a lot of time for selection. The Scrypt algorithm is implemented for the [[cryptocurrency]] mining, which allows making it more complicated for the specialized [[ASIC]] miners.&lt;br /&gt;
&lt;br /&gt;
The Scrypt coins differ from Bitcoin as the latter uses the [[SHA-256]] algorithm. Unlike the scrypt cryptocurrency, Bitcoin and other currencies on this algorithm are easily mined on ASIC (the devices that are specifically developed only for solving the mining tasks). It often causes a negative feedback by the creators of the scrypt cryptocurrencies, since it gives an advantage to the miners with large resources and violates the decentralization.&lt;br /&gt;
&lt;br /&gt;
Bitcoin that isn’t using the Scrypt is just one example. Which is why the scrypt coins enjoy popularity among miners that are using processors (CPU) or video cards (GPU) for mining. Let’s review the scrypt algorithm, its peculiarities and advantages.&lt;br /&gt;
&lt;br /&gt;
==How Scrypt works?==&lt;br /&gt;
{{#ev:youtube|uXs3eQR2Pc4|500|right|Scrypt algorithm}}&lt;br /&gt;
Before we review the scrypt algorithm coins in relation of mining, let’s have a look at the system itself.&lt;br /&gt;
&lt;br /&gt;
The '''scrypt algorithm''' was invented by '''Colin Percival''' as the cryptoprotection of the online service to keep the backup copies of UNIX-like OS. The working principle of the scrypt algorithm lies in the fact that it artificially complicates the selection of options to solve a cryptographic task by filling it with “noise”. This noise are randomly generated numbers to which the scrypt algorithm refers, increasing the work time.&lt;br /&gt;
&lt;br /&gt;
If the scrypt checks the user’s key, this delay will be almost invisible. However, if a fraudster tries to break down the core using the exhaustive search method, the Scrypt complicates it: together, all operations take a lot of time.&lt;br /&gt;
&lt;br /&gt;
For any scrypt coin it means that its mining will require a big number of participants in the [[network]], and each of them will do a part of work.&lt;br /&gt;
&lt;br /&gt;
==Scrypt mining==&lt;br /&gt;
When choosing a cryptocurrency using the scrypt algorithm, it is also very important to know where to mine it. &lt;br /&gt;
&lt;br /&gt;
Unlike SHA-256, the scrypt mining needs fewer resources, thanks to which the currencies using the scrypt algorithm can be successfully mined with various tools. These are the scrypt pool, and the scrypt miner CPU and GPU, and even scrypt asic miner: the manufacturers of '''ASIC equipment''' also look for the ways to “open” the algorithm’s mining scrypt and implement the '''scrypt function'''.&lt;br /&gt;
&lt;br /&gt;
When a newcomer starts studying the scrypt algoritm, the main question appears – what to use for mining. The main parameter when choosing it becomes the scrypt [[hash]] rate, i.e. the performance required from the equipment, which will allow to mine the cryptocurrency.&lt;br /&gt;
&lt;br /&gt;
To calculate the '''scrypt hash''', i.e. find that very solution that will allow to create a new block in the blockchain, the experienced miners recommend to use [[GPU]]. Video cards have more performance than processors, moreover, they are also better at the performing of one operation. Scrypt miner AMD will suit best: these video cards possess a bigger performance than [[Nvidia]], and assembling a farm of them is cheaper. '''Scrypt mining''' also requires bigger memory volumes.  &lt;br /&gt;
&lt;br /&gt;
By the way, the manufacturers of ASIC miners also don’t stand still. Today, [[ASIC]] can cope with the '''Scrypt algorithm''', but the developers continue this technolofical war to let the miner that selected the scrypt algorithm with the less productive equipment also have the possibility to mine.&lt;br /&gt;
&lt;br /&gt;
However, quite large resources are required to start the scrypt solo mining. An alternative way are the scrypt pools. These are the communities, where you provide the power of your equipment to join the forces. Such an approach gives a better result than the solo mining, but the reward becomes lower.&lt;br /&gt;
&lt;br /&gt;
To find the best pools for the scrypt mining of the [[cryptocurrency|cryptocurrencies]], you have to pay attention to their orientation. There are pools customized to only one coin, and there are the multicurrency ones, where one can switch from one cryptocurrency to another. In relation to the stability of the income, the best scrypt pools belong to the first category.&lt;br /&gt;
&lt;br /&gt;
==Cryptocurrency on Scrypt==&lt;br /&gt;
The main question after you’ve understood what the scrypt algorithm is, is what to mine on it. The first cryptocurrency using the scrypt algorithm is Litecoin. All forks of Litecoin also work on it. For example, the less popularity is on the algorithm of the scrypt coin [[Dogecoin]].&lt;br /&gt;
&lt;br /&gt;
Among other cryptocurrencies using the '''scrypt algorithm''' there are the coins [[ProsperCoin]], [[CashCoin]], [[MonaCoin]], [[Mooncoin]] and many others.&lt;br /&gt;
&lt;br /&gt;
==Algorighm==&lt;br /&gt;
The algorithm includes the following parameters:&lt;br /&gt;
&lt;br /&gt;
* '''Passphrase''' - The string of characters to be hashed.&lt;br /&gt;
* '''Salt''' - A string of characters that modifies the hash to protect against Rainbow table attacks&lt;br /&gt;
* '''N''' - CPU/memory cost parameter.&lt;br /&gt;
* '''p''' - Parallelization parameter; a positive integer satisfying p ≤ (2&amp;lt;sup&amp;gt;32&amp;lt;/sup&amp;gt;− 1) * hLen / MFLen.&lt;br /&gt;
* '''dkLen''' - Intended output length in octets of the derived key; a positive integer satisfying dkLen ≤ (2&amp;lt;sup&amp;gt;32&amp;lt;/sup&amp;gt;− 1) * hLen.&lt;br /&gt;
* '''r''' - The blocksize parameter, which fine-tunes sequential memory read size and performance. 8 is commonly used.&lt;br /&gt;
* '''hLen''' - The length in octets of the hash function (32 for SHA256).&lt;br /&gt;
* '''MFlen''' - The length in octets of the output of the mixing function (''SMix'' below). Defined as r * 128 in RFC7914.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;'''Function'''&amp;lt;/span&amp;gt; scrypt&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;'''Inputs:'''&amp;lt;/span&amp;gt;&lt;br /&gt;
 Passphrase: Bytes &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;string of characters to be hashed&amp;lt;/span&amp;gt;&lt;br /&gt;
 Salt: Bytes &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;random salt&amp;lt;/span&amp;gt;&lt;br /&gt;
 CostFactor (N): Integer &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;CPU/memory cost parameter&amp;lt;/span&amp;gt;&lt;br /&gt;
 BlockSizeFactor (r): Integer &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;blocksize parameter (8 is commonly used)&amp;lt;/span&amp;gt;&lt;br /&gt;
 ParallelizationFactor (p): Integer &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;''Parallelization parameter. (1..2&amp;lt;sup&amp;gt;32&amp;lt;/sup&amp;gt;-1 * hLen/MFlen)''&amp;lt;/span&amp;gt;&lt;br /&gt;
 DesiredKeyLen: Integer &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Desired key length in bytes&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;'''Output:'''&amp;lt;/span&amp;gt;&lt;br /&gt;
 DerivedKey: Bytes &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;array of bytes, DesiredKeyLen long&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;''Step 1. Generate expensive salt''&amp;lt;/span&amp;gt;&lt;br /&gt;
 blockSize ← 128*BlockSizeFactor &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;//Length (in bytes) of the SMix mixing function output (e.g. 128*8 = 1024 bytes)''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Use PBKDF2 to generate initial 128*BlockSizeFactor*p bytes of data (e.g. 128*8*3 = 3072 bytes)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Treat the result as an array of ''p'' elements, each entry being ''blocksize'' bytes (e.g. 3 elements, each 1024 bytes)&amp;lt;/span&amp;gt;&lt;br /&gt;
 [B&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;...B&amp;lt;sub&amp;gt;p−1&amp;lt;/sub&amp;gt;] ← [[PBKDF2]]&amp;lt;sub&amp;gt;HMAC-SHA256&amp;lt;/sub&amp;gt;(''Passphrase'', ''Salt'', 1, blockSize*ParallelizationFactor)&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Mix each block in '''B''' 2&amp;lt;sup&amp;gt;CostFactor&amp;lt;/sup&amp;gt; times using '''ROMix''' function (each block can be mixed in parallel)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;'''for'''&amp;lt;/span&amp;gt; i &amp;amp;larr; 0 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;'''to'''&amp;lt;/span&amp;gt; p-1 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;'''do'''&amp;lt;/span&amp;gt;&lt;br /&gt;
 B&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; ← ROMix(B&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;, 2&amp;lt;sup&amp;gt;CostFactor&amp;lt;/sup&amp;gt;)&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;All the elements of B is our new &amp;quot;expensive&amp;quot; salt&amp;lt;/span&amp;gt;&lt;br /&gt;
 expensiveSalt ← B&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;∥B&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;∥B&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;∥ ... ∥B&amp;lt;sub&amp;gt;p-1&amp;lt;/sub&amp;gt; &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;''//where ∥ is concatenation&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;''Step 2. Use PBKDF2 to generate the desired number of bytes, but using the expensive salt we just generated''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;'''return'''&amp;lt;/span&amp;gt; PBKDF2&amp;lt;sub&amp;gt;HMAC-SHA256&amp;lt;/sub&amp;gt;(Passphrase, expensiveSalt, 1, DesiredKeyLen);&lt;br /&gt;
&lt;br /&gt;
 '''Function''' ROMix(Block, Iterations)&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Create ''Iterations'' copies of ''X''&amp;lt;/span&amp;gt;&lt;br /&gt;
 X ← Block&lt;br /&gt;
 '''for''' i ← 0 '''to''' Iterations−1 '''do'''&lt;br /&gt;
 V&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; ← X&lt;br /&gt;
 X ← BlockMix(X)&lt;br /&gt;
 &lt;br /&gt;
 '''for''' i ← 0 '''to''' Iterations−1 '''do'''&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;//Convert first 8-bytes of the ''last'' 64-byte block of X to a UInt64, assuming little endian (Intel) format&amp;lt;/span&amp;gt;&lt;br /&gt;
 j ← Integerify(X) mod N &lt;br /&gt;
 X ← BlockMix(X '''xor''' V&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;)&lt;br /&gt;
 &lt;br /&gt;
 '''return''' X&lt;br /&gt;
&lt;br /&gt;
Where ''Integerify'' is a bijective function from {0, 1}&amp;lt;sup&amp;gt;k&amp;lt;/sup&amp;gt; to {0,...,2&amp;lt;sup&amp;gt;k&amp;lt;/sup&amp;gt;− 1}.&lt;br /&gt;
&lt;br /&gt;
 '''Function''' BlockMix(B):&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;''The block B is r 128-byte chunks (which is equivalent of 2r 64-byte chunks)''&amp;lt;/span&amp;gt;&lt;br /&gt;
 r ← Length(B) / 128;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;''Treat B as an array of 2r 64-byte chucks''&amp;lt;/span&amp;gt;&lt;br /&gt;
 [B&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;...B&amp;lt;sub&amp;gt;2r-1&amp;lt;/sub&amp;gt;] ← B&lt;br /&gt;
 &lt;br /&gt;
 X ← B&amp;lt;sub&amp;gt;2r−1&amp;lt;/sub&amp;gt;&lt;br /&gt;
 '''for''' i ← 0 '''to''' 2r−1 '''do'''&lt;br /&gt;
 X ← Salsa20/8(X xor B&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;) &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;'''//Salsa20/8 hashes from 64-bytes to 64-bytes'''&amp;lt;/span&amp;gt;&lt;br /&gt;
 Y&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; ← X&lt;br /&gt;
 &lt;br /&gt;
 '''return''' ← Y&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;∥Y&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;∥...∥Y&amp;lt;sub&amp;gt;2r−2&amp;lt;/sub&amp;gt; ∥ Y&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;∥Y&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;∥...∥Y&amp;lt;sub&amp;gt;2r−1&amp;lt;/sub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where ''Salsa20/8'' is the 8-round version of Salsa20.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://www.reddit.com/r/scryptmining/ Reddit]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Key derivation function]]&lt;br /&gt;
* [[Argon2]], winner of the Password Hashing Competition&lt;br /&gt;
* [[Crypt (C)|crypt]], password storage and verification scheme&lt;br /&gt;
* [[PBKDF2]], a widely used standard password-based key derivation function&lt;br /&gt;
* [[bcrypt]], password hashing function using Blowfish&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
[https://en.wikipedia.org/wiki/Scrypt  Scrypt algorithm coins – wikipedia]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.coinchoose.com/mining/scrypt-miner/ Scrypt asic miner – Coinchoose]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://prostocoin.com/blog/algorithm Scrypt algorithm – Prostocoin]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.cryptocompare.com/coins/guides/what-is-scrypt/ Scrypt asic miner – Cryptocompare]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[ru:Scrypt]]&lt;br /&gt;
[[de:Scrypt]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cryptography]]&lt;br /&gt;
[[Category:Cryptographic algorithms]]&lt;br /&gt;
[[Category:Mining]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>