Пояснюємо крипто-алгоритми майнінгу
Класика: SHA-256
Так що ж це таке цей самий SHA-256? Це криптографічна хеш-функція, розроблена нашими «друзями» – Агентством національної безпеки США. Зачекайте, не поспішайте впадати в прострацію, тут нема про що хвилюватися. Потерпіть трохи, обіцяю, що нудьгувати ви точно не будете.
Основна робота будь-якої хеш-функції полягає в перетворенні (або хешуванні) довільного набору елементів даних на значення фіксованої довжини (відбитка або дайджеста). Це значення однозначно характеризуватиме набір вихідних даних (служити його підписом), без можливості вилучення цих вихідних даних. Це офіційне пояснення з Вікіпедії, чудове та науково-обґрунтоване, але ось тільки я, наприклад, не говорю такою мовою. І впевнений, що більшість із вас теж. Тому дозвольте мені пояснити значення цього «феномена», по-нашому, по-простому.
Тепер повернемося до алгоритму SHA-256. Криптовалюта – це не одиничний приклад, де використовується SHA-256. Є кілька протоколів, про які ви, швидше за все, чули та які використовують даний алгоритм. Це протоколи SSL, SSH, PGP та багато інших. Щоразу, коли ви заходите на захищений веб-сайт за допомогою сертифіката SSL, використовується SHA-256. Б'юся об заклад, ви не замислювалися про це, чи не так? Всі ми дізнаємося про щось нове з часом!
Завдання складніше: Scrypt
Так як алгоритм генерації вектора відомий, в принципі можлива реалізація scrypt, яка не вимагає особливо багато пам'яті, а що вираховує кожен елемент на момент звернення. Однак обчислення елемента відносно складно, і в процесі роботи функції scrypt кожен елемент зчитується багато разів. У Scrypt закладено такий баланс між пам'яттю та часом, що реалізації, які не використовують пам'ять,виходять надто повільними.
Крипто-танці: Scrypt-Jane

Scypt-Jane підтримує щонайменше трьох різних систем потокового шифрування. Насамперед, у нас є Salsa20/8. Ні, це не латиноамериканський танець — насправді це досить проста функція. Основна її робота полягає у прийомі 192-байтного рядка (з букв або цифр) та подальшому її перетворенні на 64-байтний рядок Salsa20 (х).
Незрозуміло, чи не так? Добре, постараюся використати менше теорії. Salsa20 складається з двох частин: потокового шифру для шифрування даних (це, мабуть, звучить більш знайомо) та функції стиснення (так званий алгоритм Rumba20), призначеної для стискання рядка в 192 байта до 64-байтного значення. Використовуючи лексикон «чайника», можна сказати так: ваш рядок може бути довшим 64 байт, поки не зрівняється зі значенням 192 байта, при цьому рядок буде стиснутий (читай: конвертований) до 64-байтного рядка.
Але повернемось до реальності! Scrypt-Jane також підтримує кілька хеш-функцій. Одна з них дуже добре відома всім нам – це SHA-256. Вона також підтримує більш сучасний варіант SHA-512. Інші підтримувані хеш-функції включають BLAKE256/512, Skein512 та Keccak256/512 (або просто SHA-3).
Так, танцювально-криптографічна термінологія тут просто зубодробна. Але вистачить теорії, погляньмо на те, що Scrypt-Jane може зробити для нас. Scrypt-Jane має свій власний варіантмасштабування складності проблем. Scrypt-Jane використовує N-фактор (який є числом), і це число визначає кількість пам'яті, яка потрібна для вирішення завдань. Значення числа N фактора зростає через певні проміжки часу. Зазвичай це відбувається тоді, коли у блокчейні знайдено певну кількість блоків. Щоразу, коли це число N-фактора збільшується, знижується ефективність видобутку криптовалют, оскільки потрібно все більший обсяг пам'яті виконання тих самих завдань. Говорячи простою мовою, кількість виконаних завдань знизиться, тобто впаде і можливість знаходження рішення.