</ Span>Пузировані транзакції ” /></ P>
Колись я задумався, якЧи працює видобуток у блокчейні, чи як транзакції підтверджуються та додаються до блокчейна? І я теж. Але через те, що я ніколи не стикався з чітким і доступним покроковим поясненням цього процесу, я вирішив написати його сам. Отже, ми представляємо вам результат дослідження на тему того, як обробляються операції в блокчейні.
Всього сім кроків:
- Крок 1: Користувач, який має намір надіслати комусь іншому певну суму в криптовалюті чи жетоні, підтверджує транзакцію у своєму галаті додатків.
- крок 2: Транзакція потім транслюється додаткомгаманця в мережу відповідного блокчейна. Там вона потрапляє в «пул непідтверджених транзакцій», де і буде знаходиться до тих пір, поки її НЕ підбере який-небудь майнер. Такий пул являє собою скупчення непідтверджених транзакцій, які очікують обробки. Найчастіше непідтверджені транзакції збираються не в одному гігантському пулі, а в невеликих розділених локальних пулах.
- крок 3: Шахтарі в мережі (інодіНазиваються вузлами або вузлами, але це не зовсім так само, як шахтарі!), Виберіть транзакції з гірничих пулів і збирайте з них новий "блок". Фактично, блок - це набір транзакцій (на даний момент часу ще не підтверджені транзакції), плюс додаткові метадані. Кожен шахтар збирає власний транзакційний блок. Ці ж транзакції можуть бути додані різними шахтарями до своїх блоків.
- приклад: Розглянемо двох Майнер, Майнера А і Майнер Б. Обидва цих Майнера можуть вирішити включити якусь транзакцію Х в свої блоки. У кожному блокчейне встановлені свої обмеження максимального розміру блоку. У біткойнов-блокчейне максимальний розмір блоку становить 1 мегабайт (Мб) даних. Перш ніж додати транзакцію в блок, Майнер необхідно перевірити чи відповідає транзакція вимогам до виконання, відповідно до історією транзакцій в блокчейне. Якщо на балансі гаманця відправника знаходиться достатньо коштів згідно з існуючою історії транзакцій блокчейна, транзакція вважається дійсною і може бути додана в блок. Якщо власник біткойнов захоче прискорити процес обробки своєї транзакції, він може запропонувати більш високу нагороду за Майнінг. У цьому випадку, як правило, Майнер присвоять більш високий пріоритет цієї транзакції в порівнянні з іншими, у зв'язку з можливістю отримати більшу винагороду за процес Майнінг.
- крок 4: Вибір транзакцій та додавання їх до свого блоку,Шахтарі, тим самим створюють транзакційний блок. Для того, щоб блок згодом був доданий до блокчейна (це означає, що всі вузли в блокчейні будуть зареєструвати транзакції, розташовані в цьому блоці), перш за все, блок вимагає підпис, який також називається "доказом роботи" (англійська, залежна від захисту або війська). Цей підпис створюється шляхом вирішення дуже складної математичної задачі, яка є унікальною для кожної одиниці транзакцій. Різні математичні завдання відповідають різним блокам, так що кожен шахтар буде працювати над вирішенням своєї проблеми, унікальною для блоку, утвореним ним. Усі завдання однаково складно вирішити. Під час вирішення такої математичної проблеми витрачається велика обчислювальна потужність (і, відповідно, велика кількість електроенергії). Ви можете порівняти це з продуктивністю розрахунків на калькуляторі, лише в цьому випадку все набагато складніше і робиться на персональному комп’ютері. Цей процес називається видобутком. Якщо ви хочете дізнатися більше про те, які математичні завдання ви повинні вирішити в процесі (насправді це не так складно), тоді, будь ласка, продовжуйте читати далі. В іншому випадку, якщо вам потрібен матеріал "простіше", негайно перейдіть до "Крок 5".
Майнінг, також відомий як хешування (алгоритм консенсусу «доказ виконання роботи» / Proof of Work).
Математичне завдання, яке потрібно вирішитиКожен шахтар, намагаючись додати блок до блокчейна, складається з пошуку хеш-смачного (також називається цифровим підписом) для даних у цьому блоці. Більше того, підпис повинен розпочатися з певної кількості нулів, що веслували підряд. Це виглядає як дуже складне завдання, правда? Насправді все не так складно. Дозвольте спробувати пояснити це у спрощеному вигляді.
Перш ніж ми продовжимо, важливо знати, що таке хеш-функції. Проста мова, хеш-функція-це математичне завдання, що дуже складно вирішитиале в той же час отримана відповідь дуже просто перевірити.
Hesh-function бере лінію вхідних даних,що складається з чисел та літер (будь-які, в буквальному розумінні слова, рядок випадкових букв, цифр та/або символів) і перетворює його в нову лінію 32-симпратури, що складається з випадкових Листи та цифри. Ця 32-симпатична лінія є хеш-сума. Якщо будь-яка цифра або буква в вхідній лінії змінюється, то хеш-шумма також зміниться випадковим чином. Однак той самий рядок вхідних даних завжди На виході буде однакова геш-кола.
Тепер візьміть до уваги, що дані всерединіблоку - це вхідні дані для хешування (та сама рядок даних). В результаті обробки цих вхідних даних хеш-функцією ми отримуємо хеш-суму (32-символьний рядок).
Правилами блокчейна біткойнов обмовляється, щотільки ті блоки можуть бути додані в блокчейн, чиї підписи (хеш-сума) починаються з певної кількості нулів. Однак, згенерувала вихідна рядок є завжди випадкової для різних рядків даних на вході. А що якщо рядок даних блоку в результаті обробки хеш-функцією не дає на виході підпис (хеш-суму), що починається з того певної кількості йдуть підряд нулів? Так це і є причиною того, що Майнер доводиться багаторазово змінювати якийсь фрагмент даних свого блоку, званий «НОНС» (англ. Nonce). Кожен раз, коли майнер змінює НОНС, це тягне за собою незначна зміна компонування даних блоку. А коли змінюється структура даних всередині блоку (тобто, його вхідні дані), також змінюється і його підпис (або його вихідні дані). Отже, кожен раз, коли змінюється НОНС блоку, цей блок отримує нову випадкову підпис.
Така процедура зміни Нонсо повторюєтьсяМайнер нескінченне число разів, поки в кінцевому підсумку вони, бува, не наткнуться на вихідний рядок, що задовольняє вимогам до підпису блоку (певна кількість нулів в самому її початку).
Нижче наведено приклад, який ілюструє цей процес. У прикладі використовується сім нулів, але кількість нулів насправді залежить від складності блоку в блокчейне. Складність блоку - це трохи більше просунута тема, тому пропоную вам ознайомитися з нею в окремому матеріалі.
Саме таким чином Майнер доводиться шукативідповідну підпис для свого блоку, і це також є причиною, по якій потрібні так багато обчислювальних потужностей для вирішення цієї математичної проблеми. Перебір настільки величезної кількості Нонсо в спробі вгадати правильну займає багато часу і великих обчислювальних потужностей.
Також слід враховувати те, що з ростом потужностіхешування (кількості Майнер) в блокчейне збільшиться і складність математичної задачі, що спричинить за собою збільшення середніх витрат на електрику, необхідного для вирішення блоку. Ви великі молодці, якщо дочитали до цього моменту! Давайте продовжимо і перейдемо до кроку 5.
Примітка: Насправді цей процес не визначається якМатематичне завдання, але, скоріше, є чимось визначеними комп'ютерами, які виконують заздалегідь визначені операції щодо числа, щоб з’ясувати, чи є результат саме те, що потрібно.
- крок 5: Майнер, перший знайшов для свого блоку задовольняє вимогам підпис, транслює цей блок і його підпис всім іншим Майнер.
- крок 6: Інші шахтарі зараз перевіряють легітимністьПідписи, взяття лінії даних з перекладеного блоку та наявність Gash, щоб перевірити, чи отримана хеш-Сума справді призводить до підписання, включеного в пристрій з правильною кількістю нулів (пам’ятайте, правда? важко вирішити, Але легко перевірити.).Якщо підпис є дійсним, то всі інші шахтарі підтвердять свою надійність і домовляються про те, що цей блок може бути доданий до блокчейна (тобто вони досягнуть консенсусу, іншими словами - всі погодиться між собою - отже, термін консенсусу). Термін "доказ роботи/залежності" випливає з того ж. Підпис - це саме необхідний "доказ" того, що робота була виконана (обчислювальна потужність була витрачена). Тепер блок може бути доданий до блокчейна і відправити до всіх інших вузлів у мережі. Вони, у свою чергу, приймуть блок і збережуть його, додаючи транзакції до своїх даних, за умови, що всі транзакції в цьому блоці можуть бути виконані відповідно до історії, записаної в блокчейні.
- крок 7: Після додавання блоку до ланцюга,Усі інші блоки, які будуть додані після того, як це буде вважатись "підтвердженням" для цього блоку. Наприклад, якщо моя транзакція включена в блок 502, а довжина блокчейна-507 блоків, це означає, що моя транзакція має 5 підтвердження (507-502). Це називається підтвердженням, оскільки кожного разу, коли новий блок додається після вашого, блокчейн досягає консенсусу протягом усієї історії транзакцій, включаючи вашу транзакцію та ваш блок. Ми також можемо сказати, що на даний момент блокчейн підтвердив вашу транзакцію 5 разів. Etherscan також покладається на це, коли показує детальні деталі вашої транзакції. Чим більше підтвердження матиме ваша транзакція (іншими словами - чим глибше ваш блок знаходиться в ланцюзі), тим складніше буде зловмисникам замінити його. Після того, як новий блок буде доданий до блокчейна, всі шахтарі повинні почати знову з "кроку 3" і сформувати новий блок транзакцій. Шахтарі не можуть продовжувати (насправді вони можуть, але це дещо виходить за рамки теми, обговореної в цій статті) до хвилини того ж блоку, іншими словами, вирішують проблему - той самий блок, над яким вони працювали раніше з двох причин:
- перша: Він може містити транзакції, які булипідтверджені останнім блоком, вже доданим в блокчейн (пам'ятаєте, що різні Майнер можуть вибирати / включати одну і ту ж транзакцію (ІІ) в блок, який вони вирішують). Будь-які з тих транзакцій в разі, якщо вони будуть запущені знову, можуть бути визнані недійсними, тому що на балансі гаманця відправника вже може бути недостатньо коштів.
- друга: Кожен блок повинен додати хеш-суму (підпис)останнього доданого в блокчейн блоку в свої метадані. Саме це і робить блокчейн блокчейном (ланцюжком блоків). Якщо майнер раптом продовжить Майні той же самий блок, над яким він вже працював, інші Майнер помітять, що його хеш-сума не відповідає тій, що була в останньому доданому в блокчейн блоці і, внаслідок цього, відкинутий цей блок.
5
/
5
(
2
голоси
)