Хеш в крпіптовалюте — що це, властивості, функції, застосування

Хеш в криптовалюта є використання детермінованої схеми в процесі перетворення вхідної інформації вільної довжини в вихідну бітову рядок з конкретним розміром. Іншими словами, хеш — перетворення вхідної інформації за певним алгоритмом для отримання на виході шифрованого інформації (набору символів). Наприклад, хеш алгоритму біткоіни (SHA-256) може мати такий вигляд — e58f1e8c55fa105bdd3f40e5038eb0b039b5998d52c05e6cd99878dd2da5cab2.

Отримані хеші можна порівнювати, адже вони можуть відрізнятися за складом і розміром. Така необхідність виникає в процесі видобутку віртуальних монет. Суміжне поняття (хешрейт) являє собою швидкість розрахунку хеш в процесі отримання нового блоку в ланцюзі блокчейн. Чим більше цей параметр, тим швидше обладнання знаходить необхідне число, тим вищий заробіток Майнера. Найбільш продуктивним обладнанням вважаються Асіка. Наприклад, якщо ASIC-майнер має потужність в 10 ТХ / с, це говорить про його можливості обробляти 10 000 000 000 000 хеш за одну секунду.

Що таке хеш в криптовалюта — коротка історія

Зображення комп'ютерного коду під збільшувальним склом

У математичному сенсі хеш-функція являє собою перетворення даних в коротку позицію, що має певну довжину. З її допомогою можна контролювати стан файлів ОС, важливих програм і основної інформації. Робота здійснюється за бажанням або з певною періодичністю (в автоматичному режимі).

Термін «хеш» походить від слова hash англійською мовою. Прямий переклад визначення означає «плутанина». Таке формулювання описує принцип роботи функції, завдання якої полягає в зміні вхідного параметра для отримання іншого значення на виході. Аналогічний підхід характерний і для терміна «хешування». Джерелом цього слова є англійське визначення «hashing», що перекладається як «подрібнення».

Визначення з’явилося в 50-х роках XX століття в середовищі фахівців, що займаються обробкою великих обсягів інформації. За допомогою хеш-функції фахівці приводили будь-який масив до рядку з певним числом символів. Так, якщо конкретну цифру (незалежно від числа знаків) безліч разів ділити на ідентичний числовий параметр, отриманий набір символів буде називатися хеш. Підсумковий результат різниться в залежності від застосовуваного подільника.

Хеш в криптовалюта — сутність

Монета біткоіни між контактами плати

Простими словами, хеш в криптовалюта — це процес перетворення одного набору символів (на вході) в інший. Різниця в тому, що в першому випадку параметр носить вільний характер, а в другому — фіксовану довжину. Це пояснення характерно для різних сфер, в тому числі криптовалюта. Перетворення відбувається на підставі певного алгоритму. Наприклад, в біткоіни це SHA-256, в Лайткоіне — Scrypt і так далі.

Для розгляду принципу роботи використовуємо протокол Bitcoin з серії SHA-2 (його розмір — 256 біт). Незалежно від обсягу даних, що вводяться підсумковий параметр на виході завжди має певну величину. Це важливо, адже у випадку з криптовалюта мова йде про передачу величезного потоку інформації і здійсненні безлічі транзакцій в секунду.

Наявність хеша — можливість спростити запам’ятовування великих масивів інформації. Досить мати хеш-функцію для отримання необхідних відомостей про операції в мережі.

Властивості хеша в криптовалюта

Бінарний код крупним планом

Щоб розібратися, що таке хеш в криптовалюта, важливо розуміти його властивості. Виділимо основні:

  1. Стабільність параметра на виході. При аналізі однієї і тієї ж інформації на вході на виході виходить незмінний результат. Це важливо, адже при отриманні різних хеш при кожній дії прив’язати результат до інформації, що цікавить про транзакції не вийде.
  2. Швидкість розрахунків. Перетворення надходять на вхід масивів має здійснюватися з максимальною швидкістю. В іншому випадку застосування системи неефективно.
  3. Труднощі зворотних розрахунків. Процес перетворення вихідних даних в хеш на виході відбувається в односторонньому порядку. Процедура зворотного перекладу можлива, але вона максимально ускладнена (це необхідно для захисту мережі).
  4. Вплив невеликих змін. Досить незначною правки в вихідні параметри, щоб на виході з’явився новий хеш, з іншим набором символів. Можна змінити одну букву або навіть регістр в рядку на вході, щоб підсумковий результат зазнав значних змін. Це важлива якість в криптовалюта, що забезпечує безпеку і незмінність blockchain.
  5. Складність алгоритму. У процесі створення хеша застосовується складна формула, а саме Y = H (кIх), де Y — вихідний параметр, k — число з розподілу з великою ентропією, а кIх — конкатенація (об’єднанні двох рядків). Суть в тому, що при наявності значення Y важко підібрати такий параметр Х, щоб в результаті конкатенації кIх вийшов підсумковий хеш.
  6. Коллизионная стійкість. Для кожного джерела на вході характерний індивідуальний хеш. Імовірність отримання двох однакових чисел на виході при введенні різної інформації на вході можлива. Наприклад, для SHA-256 має місце наступна ймовірність — 2 ^ 256.

Функції хеша в криптовалюта

Хеш-функція має наступні функції:

  1. Перетворення інформації з вільної в строго певну довжину.
  2. Відкритість алгоритму для можливості вивчення криптографічного стійкості.
  3. Однобічність, тобто неможливість за кінцевим результатом визначити первинну інформацію.
  4. Мінімальні вимоги до обчислювальних потужностей (важливо для Майнінг).
  5. Здатність перетворювати будь-який обсяг відомостей (наприклад, двійкових даних) до певного числа із заданою довжиною. Іншими словами, відбувається стиснення інформації при використанні певного алгоритму.
  6. Мінімальна навантаження обладнання в провисання виконання операції. Від цієї функції залежить швидкість виконання. Тут важливо знайти компроміс між якістю результату і швидкістю вирішення поставленого завдання.

Алгоритм, який застосовується в процесі перетворення функції хеш, повинен бути відкритим. Це дозволяє визначити стійкість до зворотного перетворення, тобто отримання первинних даних по наявному хешу.

Внутрішня будова хеша в криптовалюта

Дерево з блоків хеша

Щоб зрозуміти сутність хеша в криптовалюта, що це, і як працює, важливо уявляти структуру процесу перетворення. Блокчейн є безліч осередків, в яких зберігаються певні дані. Для розуміння структури blockchain і роботи хеша необхідно знати такі терміни:

  1. Покажчики. У питанні програмування покажчики є змінними, які використовуються для зберігання адреси змінної (незалежно від програми). Наприклад, int b = 20 свідчить про наявність зміною b, яке береже значення, рівне двадцяти. В покажчиках містяться не самі дані, а адреси змінних. Іншими словами, вони показують на місцезнаходження останніх.
  2. Пов’язані елементи. При розгляді структури важливо врахувати пов’язані списки — набір елементів ланцюжка блокчейн, скріплені між собою за допомогою покажчиків. Змінний параметр останнього зберігає адресу чергового блоку, що дозволяє двом елементам ланцюжка з’єднатися. Покажчик, розташований в кожному елементі blockchain, зберігає адресу минулого вузла, що забезпечує створення ланцюга. Перший вузол блокчейн є блок генезису. Його покажчик розташований в криптосистеме.

Ланцюг blockchain є пов’язаний список з інформацією, а також хеш-покажчики. Завдяки їх наявності, відбувається закріплення елементів ланцюга і контроль валідності операцій. Покажчик містить хеш даних, розташованих усередині минулого блоку. Така особливість забезпечує максимальну надійність ланцюжка блокчейн. Наприклад, зловмисник намагається атакувати п’ятий блок і внести зміни до відомостей. Через особливості хеш-функції навіть невеликі правки здатні змінити підсумковий хеш. В результаті змінюється хеш-функція в попередніх чотирьох елементах ланцюга. Блокчейн коригується в повному обсязі, що неможливо реалізувати.

Не менше значення має заголовок блоку, що складається з таких елементів:

  • Номер версії елемента ланцюга.
  • Час.
  • Складність.
  • Хеш минулого вузла blockchain.
  • Nonce.
  • Хеш кореня Меркле.

Необхідність наявності хеша кореня Меркле пояснюється наступним чином. У кожному елементі блокчейн знаходиться велика кількість транзакцій. Якщо інформація зберігається в формі серії, це займе багато місця, а сама ланцюжок втрачає ефективність. Застосування дерева Меркле оптимізує блокчейн і дозволяє швидше отримати інформацію про транзакції (при наявності такої необхідності).

Застосування хеша криптовалюта в Майнінг

Шахтар з киркою і значки криптовалюта

Суть Майнінг має на увазі пошук параметра Nonce для отримання нового елемента ланцюга. Після успішного знаходження він додається в загальну ланцюжок. При зародженні криптовалюта біткоіни для розрахунків застосовувалися звичайні ноутбуки або ПК, але з ростом складності такої спосіб втратив актуальність. Люди стали застосовувати більш потужне обладнання і об’єднуватися в пули для отримання нових блоків.

У випадку з біткоіни число монет обмежена 21 мільйоном одиниць. На створення блоку в blockchain йде певний проміжок часу. Середній час на отримання нового елемента ланцюга становить 10 хвилин. При прискоренні цього процесу підвищується складність, яка підтримує швидкість пошуку хеш і отримання блоків на певному рівні.

Зниження часу видобутку блоку може призвести до наступних проблем:

  1. Створення великої кількості однакових хеш і ще більшу кількість повторень.
  2. Збільшення числа залишених елементів ланцюга. Якщо Майнер почнуть поспішати, вони будуть формувати нові блоки без забезпечення цілісності ланцюга. В результаті будуть залишатися кинуті вузли.

Щоб уникнути розглянутих проблем передбачена система складності, яка підвищує вимогу до обчислювальної потужності для пошуку необхідного хеша і створення нового блоку. Суть проста. При появі чергового вузла ланцюга його вміст хешіруется. Якщо обраний хеш перевищує або дорівнює рівню складності, він включається в блокчейн, а Майнер отримують оплату за блок.

У процесі видобутку учасники мережі шукають символ Nonce, що представляє собою число, поєднане з хешем. Отримана рядок змінюється і порівнюється з поточною складністю. При невідповідності параметрів код змінюється.

В цілому алгоритм такий:

  1. Виконання хеша нового елемента ланцюга.
  2. Додавання до хешу елемента Nonce.
  3. Хешування отриманого рядка.
  4. Порівнювання хеша з поточної складністю (система переконується — менше він заданого параметра). Якщо немає, відбувається зміна nonce і запуск процесу. У зворотній ситуації блок включається в ланцюг, а blockchain оновлюється і інформує Ноди про отримання нового елемента ланцюга.
  5. Майнер, які віддали свої потужності, отримують премію.

На жовтень 2018 року рішення хеша в Bitcoin вимагає великих обчислювальних потужностей.

Де застосовується хеш (в тому числі для криптовалюта)?

Решітка на тлі двійкового коду

Функції хеш мають широкий спектр застосування:

  1. При контролі цілісності пакетів TCP / IP і інших протоколів. Якщо розрахунковий параметр функції збігається з переданим пакетом, це свідчить про відсутність втрат і необхідності перейти до наступного пакету.
  2. В мережі Інтернет. Зазначений вище протокол застосовується в глобальній мережі.
  3. Технологія блокчейн. Тут функція хеша забезпечує цілісність ланцюга операцій і захищає систему від злому. Завдяки такій особливості, blockchain відрізняється надійністю і лежить в основі багатьох криптовалюта.
  4. Криптографія. При використанні в цій сфері використовується функція, виключаючи обчислення вихідного масиву даних за кінцевим хешу. Додаткова умова — стійкість до повторенням. Розрахунки займають більше часу, адже головний упор робиться на надійність.
  5. Електронний цифровий підпис. Хеш-функція застосовується для перевірки підпису переданого документа.
  6. Отримання доступу до сайтів в Мережі і серверів по персональних даних (логін, пароль). Особиста інформація, як правило, зберігається в зашифрованому вигляді (хеш-сума). Після введення пароля отриманий параметр перетвориться в хеш, звіряється з тим, що знаходиться в системі, після чого користувач потрапляє в особистий кабінет.

Значення хеш в криптовалюта та інших сферах складно переоцінити. Це важливий параметр, що забезпечує швидке перетворення і шифрування даних з можливістю отримати інформацію про проведену операцію.

Відео про криптографічних хеш-функціях:


Ссылка на основную публикацию