Search the Community
Showing results for tags 'algorithm'.
10/15/2013: This thread is intended to be an introduction for anyone looking to learn more about the scrypt algorithm, which is the current "mining algorithm" in use for MinCoin. I will be adding to/coherently organizing this when I have more time, but for now it is good to start the discussion. The Scrypt Algorithm: A Primer (http://www.tarsnap.com/scrypt/scrypt.pdf) (main site) (http://www.tarsnap.com/scrypt/scrypt.pdf) (white paper) Scrypt was created by Colin Percival in May 2009 in an attempt to make a much more secure encryption mechanism than PBKDF2 and bcrypt. "Secure" is used here in the sense of being extremely expensive in both time and hardware to decrypt without the cryptographic key used to gain access to the information that has been encrypted. Q: What does this mean? It means that compared to other encryption mechanisms (say SHA256, Bitcoin's), it is many thousands of times more expensive to "attack" a person's encrypted data by trying to guess their password by trying millions of guesses. This is called brute forcing. Q: But why? The way I've read it so far, scrypt is "sequentially memory-hard" (it stores a lot of data in RAM during hashing). Specialized RAM is super expensive because engineers want to be paid a lot of money for trying to figure out how to make it store more data quickly. In fact, Percival estimates that it would take $19 billion USD in technology and electricity and one year of time to use all possible guesses on a scrypt-encrypted, 8 character password string. That's expensive compared to a password encrypted in bcrypt or PBKDF2 (millions and thousands respectively). Q: Why is scrypt so hard to attack? This question is above my head currently. You should read the white paper published freely by Percival, and you should also read D.J. Bernstein's work on salsa20, the scrambling function in scrypt. (http://cr.yp.to/salsa20.html) Q: What does this have to do with MinCoin? Roughly every minute, a block is successfully mined and reported to the MinCoin network. Transactions reported to the network are stored in blocks. To prevent people from spamming fake transactions to the network, transactions are verified with cryptographic keys, which are hard to fraudulently make unless you are the true owner. This is the cryptography part of cryptocurrencies that makes them so useful and valuable- encrypted bits of data are valuable because they are so secure and unreproducible that they simulate owning a physical object of value (USD, gold, cake, whatever). I will eventually make both a simpler and more technical discussion of the algorithm here. Please reply/pm/email me with any questions you have about this material!