08 / 736NODE

Full Node

вузол повної перевірки

Самостійна перевірка платежів і блоків Bitcoin: що перевіряє вузол, як ним користується гаманець і чому не потрібно майнити чи назавжди зберігати всі блоки.

Full Node — програма, яка самостійно перевіряє правила Bitcoin. Вона працює на комп’ютері, отримує блоки й транзакції та перевіряє, які можна прийняти до дійсної історії. Із власним вузлом ця перевірка не залежить від заяв майнера чи чужого сервера. Але щоб і гаманець отримав користь, він має справді використовувати цей вузол як джерело даних.

Уявіть, що гаманець показує отриманий платіж. Звідки він знає, що транзакція справді належить до історії Bitcoin і відповідає правилам? Він може запитати чужий сервер або скористатися вашим вузлом. Full Node робить другий варіант реальним: сам перевіряє дійсність отриманих даних. Він не питає більшість підключених комп’ютерів, як йому вирішити. Якщо хтось надішле блок, що порушує правила, вузол його відхилить. Тому більша кількість з’єднань не замінює перевірку. Власний вузол дає змогу контролювати дані, на які ви спираєтеся у своїх платежах. [1] [3]

Вузол перевіряє зв’язки блоків, їхні заголовки та Proof of Work — обчислювальний доказ, потрібний для блока. У транзакціях він, зокрема, перевіряє посилання на наявні кошти, відсутність подвійного витрачання та виконання умов використання. Ці умови записані у скриптах, невеликих наборах програмних правил. Також перевіряється кількість новостворених біткоїнів. Поточний результат — UTXO set, набір невитрачених виходів транзакцій: облік конкретних коштів, які ще можна використати. Більша накопичена робота може визначити вибір між двома дійсними гілками, але не зробить недійсний блок дійсним. [1]

Ні. Full Node перевіряє блоки й транзакції; саме звичайне перевіряння не приносить винагороди за блок. Майнер натомість складає пропозицію блока й повторює обчислення, доки не знайде прийнятний результат. Для цього використовується хеш — цифровий відбиток заголовка блока. Ці ролі можуть працювати разом: майнеру треба знати, яку історію він продовжує та які транзакції може включити. Але це не означає, що кожен вузол має майнити. Перевірка й змагання за наступний блок — різні заняття. [5] [1]

Новий вузол спочатку має наздогнати історію мережі. Він завантажує блоки й обробляє їхні дані — це початкова синхронізація. Важливо розрізняти два способи її прискорення в розширених налаштуваннях. За визначених умов assumevalid дозволяє Bitcoin Core пропускати старі перевірки скриптів; assumevalid=0 вимикає цю оптимізацію. AssumeUTXO натомість дає змогу завантажити знімок стану (snapshot) — збережений набір невитрачених коштів для певного блока, відбиток якого програма порівнює зі значенням у вихідному коді. Попередню історію вона потім перевіряє у фоновому режимі. Отже, можливість працювати з поточним станом сама по собі не означає завершення історичної перевірки. [1] [2]

Full Node не обов’язково назавжди зберігає всі старі файли блоків. Pruning видаляє частину після обробки, але залишає поточний UTXO set і потрібні новіші дані. Вузол далі перевіряє нові блоки. Архівний вузол зберігає старі, щоб надавати їх іншим або повторно переглядати. Економія диска тому не тотожна клієнту SPV, тобто клієнту зі спрощеною перевіркою платежів. Він не перевіряє всі транзакції та їхній стан так само, як Full Node. Різниця в тому, що ви перевіряєте, а не лише в кількості збережених файлів. [3]

За звичайної синхронізації вузол з обрізанням завантажує й обробляє історичні блоки, перш ніж поступово їх видаляти. Тож Pruning — не перемикач для пропускання їх перевірки. Він заощаджує місце. Згадані оптимізації — окреме питання: assumevalid за певних умов пропускає старі перевірки скриптів, а AssumeUTXO дозволяє користуватися знімком стану, поки перевірка історії ще триває. Оцінюючи готовність вузла, дивіться на спосіб синхронізації та фактичний поступ, а не лише на розмір даних на диску. [3] [2]

Гаманцю потрібні дані про транзакції й підтвердження. Якщо він отримує їх із чужого сервера, то надсилає запити, з яких сервер може дізнатися щось про його платежі. Підключення до власного Full Node дозволяє брати перевірені вашим вузлом дані без цих запитів до стороннього сервера. Проте встановлення й запуск вузла не перепідключають гаманець автоматично. Важливе джерело даних, яке він насправді підтримує й використовує. Власний вузол також не гарантує анонімності: приватність залежить від інших мережевих даних і того, як ви користуєтеся гаманцем. [3] [4]

Вузол може працювати без ваших приватних ключів. Ключі дозволяють підписувати платежі, а вузол перевіряє відповідність транзакцій і блоків правилам. Ці завдання не обов’язково виконує один пристрій. Тому перевірте не лише те, що ваш вузол десь працює, а й звідки гаманець читає дані та як поширює транзакції. Самостійна перевірка не замінить безпечної резервної копії ключів і не прибере всіх відомостей, які може розкрити мережеве спілкування. Вона допомагає в конкретній частині процесу — незалежно перевіряти дані Bitcoin. [3] [4]

Вузол має два різні інтерфейси. Через P2P-з’єднання він обмінюється блоками й транзакціями з іншими вузлами. RPC — інтерфейс, яким програми дають йому команди та можуть за певних умов керувати й гаманцем. Тому відкрити вхідний P2P-порт для обміну даними — не те саме, що надати RPC стороннім. Bitcoin Core рекомендує не відкривати RPC безпосередньо для публічного інтернету. Для місцевого доступу зазвичай використовуються облікові дані у файлі .cookie, що підтверджують повноваження програми. Це не відстежувальний cookie браузера. [4]

Команди вузла дають перевірити більше, ніж зелену іконку. У getblockchaininfo дивіться на правильну мережу, blocks як кількість оброблених блоків, headers як кількість відомих заголовків і initialblockdownload щодо початкової синхронізації. Якщо використовується знімок стану, команда getchainstates допоможе відрізнити поточний стан від перевірки історії у фоні. Сама кількість з’єднань не доводить повної перевірки. Насамкінець переконайтеся, що вузол не залишився на застарілій вершині ланцюга і гаманець справді бере дані саме з нього. Лише тоді його незалежна перевірка допомагає вашому користуванню гаманцем. [2] [1]

Для повної картини прочитайте також Bitcoin, Timechain / Blockchain, Транзакція, UTXO, Proof of Work. На цю статтю також посилаються Bitcoin, Satoshi Nakamoto, Timechain / Blockchain, Proof of Work.

DOC · 001Bitcoin Core v29.0: validationПервинне джерело DOC · 002Bitcoin Core v29.0: AssumeUTXOПервинне джерело DOC · 003Bitcoin.org: running a full nodeПервинне джерело DOC · 004Bitcoin Core v29.0: RPC securityПервинне джерело DOC · 005Bitcoin whitepaperПервинне джерело
Переглянуто: Спочатку джерела · Не інвестиційна порада